程序员的态度问题以及行业现状
“成为优秀技术人员的两点建议”,这篇博客里面提到一个很重要的程序员面对任务的态度问题,觉得很有意思和感触,就写了这篇文章。
第一.Don't treat the code you not own as blackbox
这个在现实中,由于时间的关系往往做不到,主要是中国现实外包加工或老板以任务进度来进行项目控制以及绩效考核,不过这种方法是一个程序员从普通通往优秀的必经之路,想想我们不要做天天在敲键盘的工人。你想想真正有思想的程序员,完成一段代码不过是有几分钟而已,真正要话大量的时间的是思考过程,而有效解决思考时间过长的问题就是要熟知整个系统的组件以及组件关系。另外一个功利的想法,我要是设计整个系统,我自己开公司去,这不又加速自己主动去学习其他的组件了吧:) 虽然这种方法不可取。
第二. Don't assume, just confirm
的确我们在碰到问题的时候,特别是调试的时候,总是觉得这个肯定没有问题,那个肯定没有问题,那么问题究竟出在哪里呢,唯一的办法就是建立checklist一个一个confirm。
看了评论,想到了服装生产管理里面的计件工资与计件工资考核。现在中国普遍采用的是计件工资制度,我们大部分的程序员在绩效考核的时候都是解决了多少个问题来评定这个人干了多少活。而且Boss总是要求你快点把活干完。老板关心的是进度与成本以及收益。由于上层的这种意识导致程序员图快而不图好,你想想大家都要养家糊口的啊,我不快点怎么行。
所以作者提出的两个观点是程序员素质提升的有效方法,不过由于现阶段我们的现状导致我们成为代码工人(和服装厂的加工工人一样),如果企业高层没有意识到这个问题,那么就不从根本解决企业软件的质量问题,更无从提高软件质量。 因为代码工人都是以完成任务为出发点,不管质量的,但往往是这种态度又浪费了很多的时间,导致整体质量下降。所以为了更好的解决这个问题,首先项目要给大家一定的适应时间以及技能提高时间,再加强质量检测(QC),才能是一个双赢的局面。如果是做项目外包的,由于项目周期短,那么可以考虑建立一种长期的相互学习的机制(实际上应该是属于企业文化的范围),敏捷开发里面讲到的结对编程应该就是要建立一个相互学习、相互提高、相互交流的机制来提高项目的质量。