码农和工程师的区别
被问到你是做什么工作的?回答说自己是搞IT的。放几年前,紧接着就会听到一句,”哦,修电脑的啊“。放现在,可能好点儿,“哦,写代码的啊”。
几十年的发展,编程语言火了一茬又一茬,从传统软件公司到互联网企业,程序员都是的生力军:程序员群体。很多人自嘲是程序猿(code monkey),在国内更接地气的名字是码农,IT民工,的确写代码的人多。
当格子衫,秃顶,保温杯粉墨登场,成了高级码农们的标配时,似乎是时候看看Gregory Brown这本《代码之外的功夫》了。
作者 Gregory T. Brown,说实话,有没有羡慕这发型啊? 就冲这浓密的毛发,这位老哥的书就值得看两遍吧,Joking了。Gregory拿手的编程语言是Ruby,也出过相关的技术书,还是Practicing Ruby期刊的出版人,编程经验是足够了的,同时作为IT咨询顾问,帮助过各种规模的公司确定核心业务问题。
Gregory在这本《代码之外的功夫》中,把软件工程中常见的问题归纳成几个项目小故事,配合实操练习进行刨析,尤其一些程序员们最常遇到,又往往被忽视的问题。Gregory提倡用最少的代码解决最核心的问题。比起高效编程,更关注以人为本。
小鱼在开发团队也工作了几年,开发,测试,产品,项目管理都干过一圈,接触过不同级别的开发人员。初级程序员的眼高手低,高级程序员的炫技比拼也都见识了一些。对于Gregory在书中提到的一些点,简直 Can‘t agree more.
Gregory第一个项目例子里面讲与用户沟通快速构建原型的重要性。就是软件里开发里面敏捷思想的体现,快速迭代,讲用户能接受的语言,提高沟通效率,时刻牢记软件是给人用的。当下网站,app开发这种能够应对频繁更新的系统,更是不怕方案多,就怕闭门造车。
再说Gregory提到要关注依赖性,自己研发还是使用第三方系统和服务,都要时刻注意,在使用第三方时,还要考虑获取变更的途径。现在用开源软件,用云服务,第三方数据库,方便是方便很多,但翻车的例子也不要太多了。曾经我们开发使用数据库时候为了选SQLServer,MySQL和PostgreSQL就大费周章,大家都在用,应该不会太差,而恰好我们的用法比较小众,结果还是有经验主义错误,搞得优化数据库各种填坑,所以说他人之蜜糖,我之砒霜,选型的时候就得慎重,大而全不一定好过小而简的。还有用.net开发的,使用SDK的,必须限定版本,这都是不起眼的依赖关系,没遇到问题是运气,遇到了,就是个大麻烦。
当然Gregory在书中还讲了测试需要注意的点,就是测试覆盖面,尤其不能忽视现场测试,主要是现场的配置情况,刚入行的时候,曾遇到过硬代码盘符写成C,没有用系统默认路径,结果用户环境没有C盘符的情况,错误很低级,但的确是想当然了,测试也没覆盖到,部署时候,那是相当被动。还有要及时更新过期的模块。IT技术更新快,团队人员变动相对频繁,导致老旧代码,遗留问题多。其实千年虫就是个典型的例子了。
Gregory书中提到一些零散的点,提醒开发除了自己手头的工作,还要多交流,要足够了解周围每个人都在做什么,以便了解自己的工作是否符合大局。很推荐开发人员想想代码以外的事情,细品一品,琢磨琢磨,结合工作查缺补漏。
最后,一些工作以外的思考,做软件是个工程,通过项目不断的积累经验,靠个人写代码开发的时代已经过去了,对开发人员的技能要求也不同,要有做工程的思维来解决问题,有大局观,这也是工程师和码农的最大区别。
低头刨地,是基本生存技能,抬头看天是提升生活品质的希望。从码农到工程师,需要多思考这些代码之外的事儿了。