Hello World 2018
35岁—–拥抱中年程序员的新世界!
利用年假的两天时间把这个博客搭起来,只把代码部分以前的资料搬过来不写个博客感觉对不起这两天的时间。另外在我vps上也部署了一套备份,不知道什么原因在阿里云买的域名启用解析后解析不过来,只好注册了一个免费域名先用着。
虽然我前半段的职业生涯的基本都在三维引擎打交道,但是对于渲染管线的细节像shader了解的不多这一点我心里是有愧的。由于红宝书看了很多遍,固定管线的渲染流程还是烂熟于心的。渲染底层工作做的不多,用billboard实现一个粒子系统,优化场景操控器,用解析几何和四元数解算相机位置点这些都算很底层了,上层工作是设计开发一些参数化建模工具,配合模型节点实现路径动画和简单的骨骼动画,投影变换、栅格数据切片和矢量数据处理,数据库ORM,服务接口设计和系统架构。渲染引擎起先是DX,有了osg后大家都转到opengl,后来客户追求各种特效又回到的DX,一个很大的原因可能是计算机硬件技术那几年突飞猛进,什么实时阴影、碰撞检测、布料动画这些特效都变成标配了,再加上四叉树八叉树多场景管理和动态调度GIS大场景应用也可以流畅的运行了。
上面说的写三维引擎当然不是从零开始,其实大家都差不多参考各种开源闭源的引擎然后定制自己的需求,能把轮子用好实属不易。我最大的特长是整合和迁移的能力。最成功的一次整合应用是参考qt designer的设计整合公司的三维引擎实现实体编辑器,参考qt creater架构整合脚本引擎实现场景动画编辑器的项目,接触过基于HLA的RTI仿真平台的人对这个实体应该会有更好的理解。整合现有应用最大的优势是大大缩短了开发周期,并且交付的程序也很健壮。
我毕业的时候GIS本身就是一个热炒的领域,当时3s和4d写到PPT上把客户看的云里雾里还是比较的炫酷的一件事,随着时代的发展对新潮的词汇的需求与日俱增,许多新词脱颖而出,从数字城市到智慧地球,以后再来个AI宇宙我也不奇怪。数据是所有系统的本源,所以数据领域也未能幸免,谈gis必谈大数据,当然那个时候不叫大数据叫海量数据,先是数据库然后是MapReduce分布式,Hadoop的HDFS数据块和硬盘分区表的蔟大小没啥区别就是灾备了几份。技术原理上没什么新东西,硬盘的分区表也不只一份。不就接个网线至于飘到天上去叫什么云存储么?伴随云存储又出来个云服务。
其实webGL出现前网页三维应用的需求一直存在,这里要感谢微软的COM技术和ATL库(当然还有盗版是操作系统和VisualStudio,当然我电脑是正版系统用Express版本的vs)。因为activeX控件给了许多公司赚钱的法宝,封装成activeX后osg也可以批上IE的外衣,当然如果能满足需求用Irrlicht封装的话罪恶感会少很多。javascript慢慢发展然后webGL横空出世,伴随者许多出色的引擎我们当然没有理由拒绝nodejs。于是又加入了js环境新的web技术栈,之所以说又是因为我毕业设计用的是asp,每个指导老师可以提名两个优秀毕业设计我是其中一个。又进来之后js前后端的全面的支持相对于当年四剑客网站开发时代,就是鸟枪换炮的感觉,那感觉就好像是前几天刷路由器废了捆绑的广告和劫持想干嘛就干嘛的畅快。jQuery、Angular、react和vue虚DOM和双向数据绑定感觉眼花缭乱,那句话还是很有道理的计算机领域没有什么问题不是可以通过加入一层来解决的,如果有那就再加一层。好在后端相对安分一些,老老实实用Express就能搞定大部分的需求。等等还有Native!!!这是浏览器报当年被activX入侵的血海深仇吗?语言在发展技术还是那些技术,用go把nodejs的东西重写也还是那些技术。
敏捷开发也是有热炒的成分。敏捷不是银弹,团队的敏捷程度取决于团队每个成员的敏捷程度,如果一个功能(story)两周还出不来的话,还是放慢节奏配合现阶段的团队开发水平更好,对于刚开始实践敏捷的团队先不要追求敏捷。也许有人会说你把功能拆解成小的功能不就可以快速完成了吗?问题是敏捷里的story是用户视图里的东西,你WBS分解成十个后只要有一个没有完成用户就看不到结果也就没有改进意见。提升短板才有显著效果,但是要先知道短板在哪里或者说在那个环节,虽然从开发视角能发现许多问题,当这些问题解决后改进并不明显。是因为这些问题没有很好解决还是这些问题在整个软件生命周期中并不那么急迫需要解决不得而知,于是就出现了devops。多部门协作沟通是大问题,如果不应用自动化工具,想要实时提交->编译->发布->测试->部署基本不可能。提高交付频率能减少犯错很容易理解,你开车上路如果去一个陌生地方导航没十秒提醒你一次,你错一个路口马上就能掉头回来,如果是一个小时提醒你一次如果错了一个路口可能已经往错误的方向奔了100千米了。
工作中烦心的几件事:第一个就是方法体内的代码注释,好代码是自解释的只要把该抽出的函数抽出来,起一个词能意会的名字,自然就能看明白了。代码检查最怕遇到的就是汉语简拼的数据库字段名和用翻译软件翻出的一个非常生僻的词,查完也不舒服。第二个就是给团队讲产品设计时大家都听懂了,我的经验是如果你不每一个人去跟的话基本做出的东西不可能按照设计走,反正我呆过的公司是没有时间把设计落实到伪代码这个层次的,听懂了的意思很多时候是不知道自己哪里不懂。还有一点体会就是运维热衷于稳定版系统和工具是十分明智的,只要能用就不要升级,只要够用就好,照着操作手册把端口一顿开最后怎么测都不通,一查才发现新版操作系统防火墙换新的了也挺无语的。
2018不管我愿意与否迎来了我多35岁,即使保守的说35岁算一个程序员的中年了吧。虽然当初入行是勉强进入一所211大学然后被调剂到了一个没听说的GIS专业,专业课还不错都是九十多分,这么多年过去了我在骨子里仍然对编程有着深深的热爱,当一辈子程序员退休后做点木工活捣鼓点智能家居的小玩意就很好。
Leave a Comment