从“码农”说起——软件工程师

转载参考自1

当很多自称软件开发人员的人不断提到程序员已经逐渐成为“码农”的时候,我想我还是想说出我的想法。这想法未必多么新锐,但是对于那些渴望从各种伪经验和各种吹水中看到一点真知的年轻人,应该还是有点意义的。谈论一个事情的各个侧面不是我今天长文的目的,我的目的其实是想对那些刚刚进入或者是正打算进入这个行当,心存敬畏,并且想好好干一番事业来的年轻朋友们说点我的真心话。

“码农”这个称谓,原本是程序员用来调侃自身待遇的称谓,因为感觉在这个花花城市(程序员的工作一般都位于大型城市) 里,和自己同样学历的金融、财务方面的就业者都有着比自己高的收入。这样的自嘲有时候也是针对所作项目的不满,有些项目因为各种各样的原因,进展艰难,所以让程序员觉得一直裹足不前,看不到明确的发展方向,犹如反复耕耘同一片一亩三分地的农民,而由此自称“码农”。

这个称谓流传到了程序员的圈子外面,很快得到了传播,所以社会上也逐渐以“码农”来形容程序员,一开始总有点调侃和不屑,到后来,舆论逐渐转向同情。

有人说软件行业正在变成“劳动力密集型产业”,我是不同意用“人力成本”来表述一个依赖创意的产业的,至于“好的软件是测试出来的”这样的屁话我也已经耐心的反驳过了。

  • 这个行业的确存在很多重复劳动,因为大家都不愿意购买或者说获得授权使用别人的成果,很多工程之所以劳师动众,很大程度上是因为无法借鉴或者舍不得购买前人已有的算法成果和有效的代码模块。这就好比造汽车的企业明明没有发动机的研发功能,却不想花钱采购发动机。你看,这在实体产业中是可笑的,但是在软件行业中,却是常常出现的现象,尤其是当企业领导或者项目经理拥有一个其他行业的背景的时候。 很多人的说法是,反正别人能写出来,你为什么写不出来?问题是,已经有高人写出来了,为什么我这个菜鸟还要写,而且拿着这么低的工资却要求我写出天才的代码?

  • 这个行业的确存在很多的外行领导内行,前面说的企业领导或者项目经理的问题是一种情况,更为普遍的是,大家觉得软件是无所不能的,所以软件开发者也应该是无所不能的,不遵循软件开发的规律,不激发开发人员的创造力和协作配合精神,以为强调纪律就是一切。

  • 这个行业里面有一大堆不合格的人。很多人是半路出家,很多人就是大忽悠,可以吹牛,但是编程水平太差,很多人根本不会查文档,很多人完全不喜欢这份工作,巴不得这是一份不费脑筋,每天到点下班、每月按时拿钱的近乎前台的工作。

所以,软件行业其实也是中国社会的缩影,或者说各个行业都是中国社会的缩影,而软件行业体现的是中国社会组织性和人性的某些特定层面。知识产权神马的, 这个问题这里就不多说了。

一个正常的市场经济里,有创意,有技术的人,都是能够得到回报的,如果一家企业,一个组织不能满足你,你可以选择创业,可以选择跳槽。现在我们的社会还远远没有到软件供过于求的状态,反而是大量的需求得不到满足,大量的社会协调缺乏软件技术的协助。保持好心态,做有意义的事情,迎接未来。

软件的灵魂是数学和逻辑,开发过程本身就是一种创造,一种与数学逻辑的对话。

  • 我觉得在团队合作中,编程规范是极为必要的,用约定的编程规矩来撰写程序是开发者应该共同维护的良好开发氛围。但这就是所谓纪律的边界了,纪律的覆盖范围,不应该逾越这个边界。

  • 这些年敏捷开发、结对编程等新兴软件开发模式的兴起,从一个侧面强化了我的这种认识,那就是:软件工作的重要方式,就是创造一个可以酝酿好点子的环境,让好想法源源不断的产生出来,形成代码。软件活动应该回归本源,就是激发有创造力的人性。

  • 按照这个思路,我常常建议一些嵌入式软件工程师能够在工作之余学习一下java,学习一下脚本语言,awk也行,tk也行,perl也行。很多人会很诧异,觉得自己面向硬件,甚至面向驱动,为什么要学习那么多表示层的东西?在软件工具已经逐渐丰富起来的现在,底层代码是完全可以通过脚本语言帮忙处理的,大量繁重的比对工作和代码迁移工作完全可以用脚本来执行,高效而且准确。

  • 单纯从项目开发的效率来讲,团队里面有这样的软件多面手,有能够提出这样想法的人,比一个外行领导者对于开发者纪律性的要求要有意义,也有效的多。

  • 感慨:“真正做可靠的嵌入式软件开发,就应该是架构设计配合代码生成工具,资浅程序员的工作就是一边做点小修小补,一边学习架构,这样利于成长,也对项目进展最有利”。

遇到不合理的机制和团队,其实及早离去比说服教育更有意义。
遇到感觉不合理,却又能够取得成绩,能够生存的机制,我常常会感慨其实人性的复杂超出我的想象。
社会问题和教育问题,提出来大家聒噪一番,然后归于沉寂,没能解决什么,只不过搞坏了心情,耽误了时间。
社会责任的确需要有人来肩负,但是主力军不应该是技术人。技术人的专业是技术,不要以为技术思想就能解决各路问题,技术思想在实际工作中连销售问题都难以解决,还是不要盲目以为技术思想能胜任很多不同领域的东西。
“纪律性”这个概念,如果纯粹只是外行们嘴里的外行话,其实完全可以忽略无视;但是当很多从业者,技术人自己也开始接收和崇拜这个概念时,就值得警醒和反思。仅此而已。技术人毕竟是做技术的,做技术其实是需要创造力的,这就是我想说的。
至于其他的很多牵扯,生活原本复杂,我不太建议总以条分缕析来面对生活,有点空闲给自己就好。
写文章,目的如果是为了自己的观点滴水不漏,其实就会变成空洞的说教。
我写我所想,有些局限是如今的我可能突破不了的,而如今的我又确实在过去的我的基础上做了哪些突破,把这些写清楚,我觉得就够了。


  1. http://www.wowotech.net/tech_discuss/111.html ↩︎

猜你喜欢

转载自blog.csdn.net/FJDJFKDJFKDJFKD/article/details/83117255