软件开发人员的“七重苦”(2)
(接前一篇,继续)
- 第五重:技术变化快,积累上不去
设想一下,一个10年前的高手,这10年他什么也不学,那他今天会是什么样的一个状况。
我个人估计是快被淘汰了。
这是个极端的例子,但回顾一下软件的发展历程你会发现,新技术的出现是爆炸式的。
在DOS的时代里,软硬件的距离非常近,你只要会一种语言,了解基本算法和数据结构,再了解计算机硬件的知识,你就可以写大部分的程序。
接下来软件和硬件间的层次越来越多,Windows加上一层,Java虚拟机加上一层,浏览器加上一层,Flash等再加上一层,诸如此类。
每多一层技术的种类就增加一些。这就导致软件开发人员同时面对两类压力:一是项目上的时间压力,一是技术更迭上的学习压力。但偏偏一个的时间是有限的。
很多时候特定工作岗位会限定关联技术的范畴,如果自身不做点安排,那就真成吃“青春饭”的了。
- 第六重:究竟谁干的好,谁干的不好
大多时候,考评不能每个人都打A,否则就成了吃大锅饭的。
可在软件的世界里,一旦要分个你好他差,难度就出来了。
根据实绩判断,一个人很难全面理解很多人的工作。如果团队规模少于10人,这类的判断还存在可能性;如果超过10人,那么误判的几率会直线上升,除非是天才。
根据数据,大多数据真的不能用来评价软件开发人员。生产率、Bug率这些是一定不行的,圈复杂度这类歧义性很小的指标勉强可用,但说明的问题会比较片面。
根据感觉和印象的话,多少有些草菅人命的感觉。
于是考评大多时候总是天怒人怨的考评,而天怒人怨的程度很多时候取决于当事人的在意程度。
- 第七重:弟兄们意见很多,统一很难
软件很重要的一个特质就是仁者见仁,智者见智。
观点的差异有的时候是是非问题,但大多时候是视角问题,是横看成岭侧成峰式的。
而软件团队大多时候在两个极端间徘徊:要么没意见,要么很多意见。
很少有团队会是在合适的时候有合适的意见---这是政治家干的事,程序员不大做的来。
没意见的团队实是兵无战心的团队,其实更差,这里不去说他。
有意见的团队协调起来比较很辛苦。
程序员群体里大致上是越优秀的越容易固执己见,所以大致上越优秀的团队吵得越多,越凶。
但不管怎么样,最终的选择只有一个。这时候,不能只靠行政力量去拍,要在理解各种想法后,结合外部需求,时间压力,人员状况去协调。
这事其实很不容易。
- 小节
一定程度上讲,这七重苦很难根绝。
好多即将做软件的或做的时间不长的同仁大多时候关注的是新技术,是创造性;但就和阳光下总有阴影一样,不管方法如何更迭,总有些东西无法彻底改善。
所以想做软件的,并想坚持做软件的,要有点心理准备,不能梦想的太美,那样回头会比较失落。
风光的活是有的,脏活累活也很多,有了这样的心理预期,才能在做软件中找到快乐。
说了这么多,倒不是悲观。
有些问题即使没法彻底解决,但程度上还是不一样的。
痛苦在那种程度上是事在人为的主战场,这点上做和不做差别很大。
假如一个人不把眼光只局限于某个项目,而是把视野扩展到整个软件开发所对应的方法论,那么关注现实中的痛苦,则是有所得得前提。
关联文章:
--------------------------------------------------------------
理想流 + 软件 = 《完美软件开发:方法与逻辑》
理想流 + 人生 = ??
理想流 + 管理 = ??
理想流 = 以概念和逻辑推演本质,追求真理。