程客有话说05 | 吕时有:在GIS行业深耕13年,做梦做出来了数学竞赛题,这是让我最开心的事

news2024/12/29 9:11:36

《程客有话说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台,也欢迎大家推荐朋友或自己来参加我们的节目,一起加油。

本期我们邀请的程序员是吕时有,多年深耕测绘与GIS行业,从事相关研发13年,对GIS各项业务有深刻的理解。

1、请自我介绍一下。

我叫吕时有,老家是江西赣州,目前定居在广州,大学读的是GIS专业,2011年7月毕业,当时就直接进入GIS这个行业里面算是还不错的一家公司。在那边一做就是六年,我从一个小菜鸟,到后面做到整个平台的底层研发负责人。

2016年,跳槽到了GIS行业的上市公司工作,从零开始搭建一个测绘软件平台,负责技术公关、团队管理等相关工作。
目前在一家私企担任研发总监,主要还是做两个方面的工作,自主GIS平台,现在我们国内对很多行业有一些国产化的要求。另外一方面就是比较火的数字孪生。
技术上涉猎会比较广一点,什么都会有一些接触,GIS的相关业务也做的比较多,在这一块做了已经有13年,我认为理解还是可以的。
C++是我的主要技术栈,java、算法,服务端、前端都有所涉猎,属于万金油,这两年也做一些个人项目。


2、第一次接触计算机是什么时候?什么时候开始对软件开发产生兴趣的?

开始接触计算机在初二,那个时候我们一周只有一节计算机课,我们大概是8、9个人就围着一台电脑,一节课,一台电脑其实也学不了太多东西。在那个时候就是相当于打开了一扇门,当时在那种小县城里面根本就没有这种接触计算机的机会。当时还用的是windows2000,用五笔打字,后面高中生涯基本上没接触,主要是学习、高考,知道有个百度可以帮我们查资料,其他的都接触比较少。

到大学才真正的开始接触软件开发这一块,我一开始不是特别感兴趣,因为老师给我们讲的那个东西都是类似于写一个hello world,都是纯命令行的,就是一行一行敲出来的东西,我感觉没有一个界面,看起来就感觉挺奇怪的,就是一个黑屏的东西,然后你在上面输出一些命令,得出结果,感觉很枯燥,没啥兴趣。

我很难理解这个算法对我的现实生活或者对我以后的工作,有什么太大的帮助,它不成体系,没有联系在一起。后来做了一个简单的小游戏一样的东西,类似贪吃蛇这种小游戏,我们改了一些参数,让它更加有趣一点,这就还是挺有意思的。我们老师会给各种课程和课题,让我们也参加了一些计算机比赛。

我当时还买了一个视频教程,一个专门学MFC的视频教程,11节课,一节课下来就是三个小时,一边学一边实操,我把眼睛都累坏了,患上了结膜炎。后面就接触http://VB.NET、C#这样的语言了。算是彻底爱上了编程,在这方面也算是一个小名人,同学院的人和学弟学妹基本都知道有这样的一号计算机编程的牛人。

3、为什么选择了GIS专业?

我虽然是一个理科生,一开始在文理没分班的时候,我的文科成绩,特别是地理这一科的成绩还是很不错的,我自己也非常喜欢,经常想象自己有机会到各个地方看一下。选专业前,GIS具体做啥的,我确实不太清楚,我就知道跟地理有点关系,跟计算机也有点关系,理科生好像就这个专业比较适合我,所以就选了它。

后来发现GIS跟我想象的差异还是比较大的,也算是误打误撞吧,我不太擅长沟通交流,如果去做其他行业可能还不一定合适。

4、什么是GIS?GIS数据是如何收集的?常见的生活中的应用?

每个人的理解可能会有一点差异,我的理解是,将我们地球表面的空间信息能够用计算机的方式表达出来。你看到一个物体,通常就是用自然语言来表述,如何把它用计算机语言表述出来,进行存储,分析,应用,制图,这就是GIS的主要用途。

这里就涉及到很多的技术,空间数据如何采集出来,如何把它再存储起来,如何在计算机里面显示,显示出来之后,拿到这个信息肯定是要有用处的,所以我们就要做各种分析,最后是如何应用,就涉及到一些图像制作,最简单的例子,我们经常看到的世界地图,就是通过GIS技术做出来的。

里面涉及到很多符号的表达,例如界线、交通、土地、河流、湖泊、房屋等等,如何让人家一眼就看出来,这表达的是一个土地,这表达的是一个房屋,就属于计算机可视化表达里面的一块。

我们做的比较多的是城市建筑的一些表达,它主要用来帮助做城市规划的决策,做这个决策的时候,他需要有一些信息,一个是要有可视化,第二个要帮他做分析。这里面应用就比较多,像一些人口普查,土地测量,城市规划,城市地下管线布局等。像燃气管道这些比较危险的油管,你要避开这些东西,开挖前就需要做一些分析,为他们做提供决策。

GIS数据采集通常有两种方式,一种是实地勘测。桥梁建筑那种工程测量,它就属于实地勘测,我们会利用一些像经纬仪,水准仪或是全站仪,这种仪器就是光学仪器,我们计算距离用的是光的传播距离,它是比较稳定的。环境对它的影响非常小,在空气中传播基本上是比较固定的一个值,通过这些光学仪器的反射原理来测量它的实际距离。你还要知道它的一个方向角度,比如高层建筑的方向与角度,也是通过那个仪器测量,一个角度和一个高度。标准差与高度差,有了这些数据,我们就可以计算出来它的方向与角度。

现在的技术跟以前已经相差很大了,现在经常会用到遥感技术。通过卫星影像,还有一些无人机扫描,再加上一个大地原点,就可以测量出来,就不用大面积的实地勘测了。

大地原点是一个定位点,也就是那个三角点,很多人可能见过,在有些地方会一个标记,那个东西很小,它是用一个铁片定住那个位置,它是固定的,通过空中的三角测量,来计算其他地方的一个相对位置。

GIS在我们日常生活里的应用主要就是地图,像旅游景点或博物馆的虚拟时空,那个也会涉及到一些GIS技术。
虚拟时空,我们叫做全息地理虚拟系统,类似于虚拟现实,就是我走到那个位置,软件上面会呈现它的相关的旅游景点的介绍,把它相关的事件实时的推送过来,加上一些VR、AR技术,将你的实景跟虚拟景色做一个融合,给你一种沉浸式的体验。

去旅游的话,你仅仅是看一个景色,其实是没有多大意义的。你需要了解它的一个历史文化背景,它的一些文化属性与历史属性,这些东西结合在一起,才能让你感觉它是有更丰富的意义。

5、中国的GIS行业发展情况如何?与国外的差异?

现在这个GIS行业发展是很快的,在以前,我一直认为它是个很小的行业。现在它更多的应用是跨行业的。交通布局、城市规划、地图导航、智能驾驶等等,智能驾驶里面你要实时得到它的空间信息,然后去排除障碍物,这里面很重要的一点就是空间信息的获取。

在2023年的时候,GIS行业大概是一万亿的市场。以前可能就只有一两千亿,在国家层面,也高度重视这一块的发展,就像我们的那个实景三维中国,现在非常火,各行各业都在介入实景三维中国这个项目,包括阿里腾讯这样的互联网巨头都在介入。

跟国外GIS行业相比,我们中国的基础发展,还是有一定差距的,主要是在我们的软件技术,成熟度是不够的,更多的还是停留在可视化,就是看为主。在分析决策方面,我们还缺少一些实时数据的快速迭代更新的,这会导致它的决策会有一点落后。

还有一些硬件制约,就是像大数据技术,把三维模型的全部数据加载到一台电脑上,加载整个中国的一些城市数据实时交通数据,这些东西要结合在一起的话,我们的硬件和网络基础设施跟不上。

6、什么是数字孪生技术?目前在生活中常见的应用场景有哪些?

数字孪生技术就是把现实的世界在计算机中还原出来,首先要采集现实空间的数据,道路、农田、房屋、建筑的数据,采集完成之后,导入到软件中,通过三维建模技术,完整的还原出来。

现在有一些AI技术,拍张照片就能把房子的立体模型给展现出来,它需要你360度无死角的拍一圈,它就能将三维模型生成出来,然后把它放到软件当中。同时,我们会用到一些物联网的技术,现在有很多摄像头,可以实时把物联网的数据接入到软件当中,这样就可以在我们的那个电脑上看到实时的跟你空间位置相关的交通情况,路上的车流情况,哪条道路是不是阻塞了,这样可以帮政府或交通部门做一个决策,它就会动态的调整红绿灯的时间。适当的解决道路的拥堵问题,运用AR、VR的一些技术,能把我们的建筑附上一些虚拟信息在上面,看到建筑的产权、入驻了哪些公司,他可以把很多衍生信息给关联在一起。

数字孪生做到极致就是你已分不清现实还是虚拟,虚实相生,融合在一起了,很多已经做到的这一步,不过它的范围还不够大。最近比较突出的应用案例是智慧城市和虚拟数字人。

7、写了近13年代码,你如何评价程序员这个职业?优点与缺点?

程序员是需要持续创造的工作,对于像我这种喜欢有挑战的人来说是比较合适的,每个人的生活方式不一样,对我来说,我就不太喜欢那种,今天可以看到明天是长什么样子的的工作。

对于程序员来说,你不知道下一个小时你做的工作是什么样子的?可能是修复bug、可能是解决方案被推翻、可能是开发新产品。它是一个持续创造的工作。这样的工作才是有意义的工作。

同时,它非常纯粹,一台电脑就能搞定所有事情,不需要跟各种人打交道。专注在自我的世界里面。还可以远程办公,当然在别人因为天气原因可以不上班的时候,你还得加班。

缺点就是工作强度高,我没有在其他行业工作过,我感觉其他行业的工作相对比较轻松。可以正常的上下班,下班之后基本上不用思考公司的事情,但是我们基本是24小时在线。

还有一个方面,我认为它不能为我的家人或亲戚提供什么太大的一个帮助,像老师、医生这样的职业,他是为全社会的人服务,相对来说,确实是有点孤独的感觉。

8、作为程序员,如何理解35岁现象、996、裁员等现象?

以前也很纠结。35岁之后我干啥去?后来我发现,好像并没有出现我纠结的现象。我认为很多人这些东西听的多了,给自己做了一个束缚。35岁现象被没有那么严重,对于IT这个行业来说,它是需要持续的学习和技术的累积。你一直做的是搬砖的一个工作,那肯定是容易被淘汰的。如果你坚持在一个行业深耕的话,还是比较吃香的,至少在我们这个行业来说是这样的。

就我的个人经验,其实我是希望大家在一个行业里面去深耕,同时去跟踪时代的发展,将一些新的技术引到我们所在的这个小领域里面,机会还是很大的。

关于996这个问题,我也经历过,曾经有一段时间,我要求我团队1356加班一年,挺恐怖的。没办法,领导对我们有要求,我又刚好去那家公司。当时公司也是刚刚起步,什么都还没有,就是你必须要有一点那个东西出来,不然的话可能就晚了。

对于996确实是挺反感的这个事情,搞IT的是个脑力活,一年250天,你一天能够码到300行,已经是顶天了,很多时候我们是在思考、在重构,在优化,这些不是能用时间堆出来的。让他在这里996,如果他心不在这里,其实他的产出是有限的。

关于裁员问题,我们公司也在裁员,我自己对这个事情倒看得挺开的。现在这个时代就是个人自媒体时代,或者个人职业时代。人人都是当老板,我认为需要这样一种状态。不要把把自己的未来都寄托在一家公司上面。多考虑考虑自己的职业方向、副业方面、创业方向才是最重要的。

在业余时间做点自媒体,不在于赚多少钱,对你的技术积累和个人品牌建设,它是有帮助的。我自己平时也会写一些博客,或者录一些视频之类的,虽然还没有彻底走起来,但是我会一直往这个方向去发展。裁员也是一把双刃剑吧,给你带来一定的打击,也逼迫你去改变成长。
 

9、会一直做程序员员吗?如果不做程序员,你会做什么职业?


这个问题我之前也一直在思考,对自己来说,能力还行,至少在这个行业里面,不缺工作。但我不会一直做程序员,年龄大了,确实有点跟不上,身体也跟不上,加班不可能熬不过别人。

第一种就是走向管理,我现在算是在做管理。当然,本质还是一个程序员的工作,还是做IT相关的事情,后面的话,我做的可能是倾向于给别人提供一个解决方案,我去做一些集成性的一些工作,现在很多人纠结于我的技术栈是什么。做C++的,鄙视做前端的,做前端的可能鄙视做Python的,它只是个工具,是解决问题的一个手段。

我们为客户提供的是一个价值问题。程序员只是解决其中的某一个问题,他不能解决整个系统性的问题。所以我更倾向于为客户提供一个完整的解决方案,或者你可以理解为我是做产品,为客户创造价值。

脱离这个行业之后,我能做啥,目前确实没想到,如果我真的哪一天脱离这个行业之后,我猜我至少来说,我的存款已经能够覆盖我的日常生活的话,我可能就不想在公司上班了,我就想在老家做点自己的喜欢的事,相当于是接一些合作。

10、作为程序员,你最开心或印象深刻的一件事是什么?

印象最深刻的是,我们公司当时要做一款软件。要求八天出来,从无到有只有八天。前面四天我一直在设计框架,发现这个框架没做好,前面四天做的框架被我推翻了。只剩下四天时间,关键我做好了之后,还得给别人,还得做功能。当时我们基本上是每天干到晚上12点钟才下班,然后前面四天,啥成果都没有,我们领导对我还是非常有信心的,因为之前所有的产品架构都是由我来设计的,也是感谢他的一个信任。后面我花了大概一天时间,把整个框架重新梳理了一下,就把它搞出来了,后面三天,大家加班加点去补功能,还要把这个软件拿去做评测,我们这个行业里面有个评测。在评测的时候,我们还在通宵加班改bug。

这件事让我感受是非常深刻的,人有的时候确实需要推一把,或者是上点压力。才能激发出自己的潜能。能力范围之内的事情,我都不认为四天时间能把软件拿出来,最后去测评还能够通过。当时真的是没想过的,说实在,是真的非常难,最终的话,也是挺幸运的,能够把这个事情解决。

我其实最开心的时候不是在我做程序员的时候,而是在小学做数学题的时候,有一道竞赛题目就是没做出来,是我做梦做出来了。真的是做梦,把它做出来了,可能大家都不太相信,上化学课的时候,老师告诉我们笨分子的结构是怎么被发现的,是化学家凯库勒做梦做出来的,我一点都不惊讶,因为我也做过同样的事情。

11、未来程序员行业如何发展,有何畅想或期待。

有一句话,说的非常好。未来要么你做AI的工作,要么AI取代你。这句话的意思就是AI非常重要,你查一个法律条文,你写一个文案,做个PPT,画张图,这些工作都将慢慢的被替代,程序员也有很多工作将被AI所替代,目前还不能完全替代。所以在未来,我们一定要学会用AI帮我们工作。

你可以去生产AI,也可以让AI帮你工作,但你一定要会用,一定要会用去用这个AI这个东西,不管是哪一个行业,一定要跟上时代发展的趋势。

我现在写代码,都不自己写,直接让AI帮我写,告诉他我的需求,你得会问,你看得懂,能够修改一下,它速度太快了,500行代码可能只要几分钟,我们自己写可能要写一天。AI这个事情绝对是值得所有人去学习的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用Docker搭建本地Nexus私有仓库

0-1开始Java语言编程之路 一、Ubuntu下Java语言环境搭建 二、Ubuntu下Docker环境安装 三、使用Docker搭建本地Nexus Maven私有仓库 四、Ubuntu下使用VisualStudioCode进行Java开发 你需要Nexus Java应用编译构建的一种主流方式就是通过Maven, Maven可以很方便的管理Java应用的…

网盘兼职真的能月入过万吗?你适合做哪种网盘分享牛?

1. 分享大容量文件: 提供常见软件安装包、系统镜像、游戏资源等常用的大容量文件,以满足用户的需求。 创建分类目录,便于用户浏览和查找所需文件。 编写详细的文件描述,包括文件版本、适用系统、安装方法等信息,帮助用…

Promise.all 的方法还没执行完就执行了.then

碰见一个问题,接盘了一个有问题的页面修改。 改变日期后 查询很多数据再去重新加载页面上的数据显示相关的组件。 问题就来了。 加载异常捏…… 最后我一通查: 重点来了 是因为这个Promise.all(数组),里边这个数组的问题。现在是在数据中…

XYCTF 部分wp及学习记录

1.ezmd5 根据题目提示 我们知道应该是要上传两张md5值相同的图片 根据原文链接:cryptanalysis - Are there two known strings which have the same MD5 hash value? - Cryptography Stack Exchange 把保存下来的图片上传一下 得到flag 2.ezhttp 根据原文链接&…

STM32H7的LCD控制学习和应用

STM32H7的LCD控制 LTDC基础硬件框图LTDC时钟源选择LTDC的时序配置LTDC背景层、图层1、图层2和Alpha混合LTDC的水平消隐和垂直消隐LCD的DE同步模式和HV同步模式的区别区分FPS帧率和刷新率避免LTDC刷新撕裂感的解决方法 驱动示例分配栈的大小MPU和Cache配置初始化SDRAM初始化LCD应…

鸿蒙 harmonyos 线程 并发 总结 async promise Taskpool woker(三)多线程并发 Worker

Worker Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程,Worker自身的线程称之为Worker线程。创建Worker传入的url文件在Worker线程中执行,可以处理耗时操作但不可以直接操作UI。 Worker主要作用是为应用程序提供一个多线程的运行环境…

办公设备租赁行业内卷瞎扯

办公设备租赁行业内卷瞎扯 最近听到很多同行抱怨,现在市场太卷了,真的有点到了卷不死就往死里卷的节奏,让大家都开始想换地方,或者转行。但是今天,我想从另外一个角度聊一下这个问题,分析一下,…

苍穹外卖day9 (1)用户端历史订单

文章目录 前言用户端历史订单1. 查询历史订单1.1 业务规则1.2 接口设计1.3 代码实现 2. 查询历史订单详情2.1 接口设计2.2 代码实现 3. 取消订单3.1 业务规则3.2 接口设计3.3 代码设计 4. 再来一单4.1 业务规则4.2 接口设计4.3 代码实现 前言 用户端对历史订单的操作&#xff…

机器人系统开发ros2-基础学习16-使用 rosdep 管理依赖关系

1. what is rosdep? rosdep是一个依赖管理实用程序,可以与包和外部库一起使用。它是一个命令行实用程序,用于识别和安装依赖项以构建或安装包。 其本身rosdep并不是一个包管理器;它是一个元包管理器,它使用自己的系统知识和依赖…

Day10案例分页查询,条件查询

对要求进行逻辑分析,传递固定参数{page,pagesize}任意参数{name,gender,begin,end},返回总记录数以及当前页码的记录 不使用pagehelper插件,首先完成SQL语句 SQL语句 //固定头 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLI…

SQL-DML数据操纵语言(Oracle)

文章目录 DML数据操纵语言常见的字段属性字符型字段属性char(n)varchar2(n)/varchar(n) 数值型字段属性number([p],[s]int 日期型字段属性DATEtimestamp 如何查看字段属性增加数据INSERT快捷插入 删除数据DELETE修改数据UPDATE DML数据操纵语言 定义 是针对数据做处理&#xf…

JavaScript中的map()方法详解

1. map() 的返回值是一个新的数组&#xff0c;新数组中的元素为 “原数组调用函数处理过后的值” 2. 简单使用&#xff1a;遍历整个数组&#xff0c;将大于4的元素乘以2 const array [2, 3, 4, 4, 5, 6]console.log("array",array) const map array.map(x > {…

【THM】Linux Privilege Escalation(权限提升)-初级渗透测试

介绍 权限升级是一个旅程。没有灵丹妙药,很大程度上取决于目标系统的具体配置。内核版本、安装的应用程序、支持的编程语言、其他用户的密码是影响您通往 root shell 之路的几个关键要素。 该房间旨在涵盖主要的权限升级向量,并让您更好地了解该过程。无论您是参加 CTF、参加…

什么?双核A7双网口核心板只要49?

“性价比之王” 触觉智能IDO-SOM2D0X系列基于SigmaStar SSD201/202 SoC的超小SOM模组&#xff0c;双核A7 1.2GHz主频&#xff0c;1080P视频解码&#xff0c;支持MIPI/RGB显示接口&#xff0c;支持双以太网&#xff0c;支持SDIO/USB/SPI/I2C/UART/DMIC/I2S&#xff0c;集成音频C…

跨平台手机号:微信手机号授权登录、微信授权登录双登录实现账户生态融合,新时代的身份密钥

小程序厂商的多样性体现在开发工具、服务领域、商业模式等多方面&#xff0c;各厂商凭借独特的技术优势、行业解决方案和市场策略&#xff0c;满足不同企业和用户需求。与此同时&#xff0c;随着移动互联网发展&#xff0c;手机号统一登录成为提升用户体验、简化登录流程的关键…

CTFshow-PWN-栈溢出(pwn36)

存在后门函数&#xff0c;如何利用&#xff1f; 好好好&#xff0c;终于到了这种有后门函数的了 checksec 检查一下&#xff1a; 32 位程序&#xff0c;RELRO 保护部分开启 RWX: Has RWX segments 存在可读可写可执行的段 使用 ida32 看 main 函数 跟进 ctfshow 函数…

T2I-Adapter:学习适配器为文本到图像扩散模型挖掘更多可控能力

文章目录 一、研究动机二、T2I-Adapter的特点三、模型方法&#xff08;一&#xff09;关于stable diffusion&#xff08;二&#xff09;适配器设计1、结构控制2、空间调色板3、多适配器控制 &#xff08;三&#xff09;模型优化训练期间的非均匀时间步采样 一、研究动机 T2I模…

安卓手机如何改ip地址?探索方法与注意事项

在数字时代&#xff0c;IP地址成为了我们在线身份的重要标识。对于安卓手机用户而言&#xff0c;了解如何修改IP地址可能涉及多种场景&#xff0c;那么&#xff0c;如何安全、有效地进行这一操作呢&#xff1f;下面将为您提供相关方法&#xff0c;并探讨修改IP地址时的注意事项…

国外问卷调查如何做?需要借助海外住宅IP吗?

在数字化时代&#xff0c;国外问卷调查不仅是了解市场需求的重要手段&#xff0c;还成为了一项能够赚取额外收入的方式。随着全球范围内消费者行为的多样化&#xff0c;各类企业和机构越来越需要了解不同地区的用户观点和偏好&#xff0c;以优化产品和服务。 一、国外问卷调查…

接口测试和Mock学习路线(中)

1.什么是 swagger Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。 通俗的来讲&#xff0c;Swagger 就是将项目中所有想要暴露的接口展现在页面上&#xff0c;并且可以进行接口调用和测试的服务。 现在大部分的项目都使用了 swagger&#xff0c;因为这样后端…