周星驰有一句经典的台词:请不要叫我“跑龙套的”,我是一名演员。
看了这本书,我突然也有了感悟:请不要叫我“程序员”,我是一名软件工程师。
程序员只关心自己代码的一亩三分地,完成预期功能,如果级别高点,能考虑一下代码的质量和相关文档。在这种情况下,程序员一般被动的接收来自上级的分配的任务:按照分配任务的邮件,开发完代码。输入数据了,看看输出数据,不对?那就修改一下;得到预期效果了?嗯,任务完成了。至于这个代码是目的什么的,用在什么产品里了,能带来多少利润?不管不关我的事情,反正我是完成任务,对得起我的工资了;有什么方案,可以让这个产品做的更好,和其他部门协作的过程中,我是否需要人家提供更好的资源吗?嗯,还是不关我的事,人家给啥我就做啥呗;
而软件工程师考虑的不是代码,因为真正给自己和公司创造价值的是产品。所以作为一名软件工程师,实际上承担了更多的责任,一个产品的成功,代码实现功能,只是其中一部分,还要考虑是否需求是否合理,UI是否友好,开发进度如何安排,开发过程中不同的人甚至不同的部门如何分工,才能保证保证产品开发高效进行。而完成这些工作,,往往纠结以往的惯性,部门和个人的利益关系。这些工作都不是一个程序员没有权力去安排这些工作按照自己的意愿进行,但却可能收到这些因素的掣肘,典型的程序员遇到这些问题大多要么“事不关己高高挂起”;要么“众人皆醉唯我独醒”,嗟叹自己怀才不遇。而一个真正为产品负责的软件工程师,最终的目标是为自己心中的那个产品而奋斗,想方设法解决一切这条路上的困难,无论是不是代码相关的。
归根到底,程序员和软件工程师的区别在于责任感的范围大小。一个真正有前途的软件工程师,遇到问题,不要把时间浪费在争论是谁的责任,是谁的分内工作,而是要尽快想出解决方案。一切给我带来不便的问题,本质上都是我的问题,因为如果不解决,受到拖累的人就是自己,如果自己都不帮自己,谁还来帮自己?
所以一般程序员的形象就是胡子拉碴,不讲卫生,头发油油,穿着大裤衩大拖鞋,说话满口听不懂的词汇。
而软件工程师的形象应该是有衬衣西裤,工作报告有统计,有分析,有总结,不加班,不弹性工作,会开发会写总结会演讲。
写到这里,突然觉得,软件开发这个行业似乎和其他行业也没有什么本质区别,一个合格软件工程师,其所具备的职业精神也会让其在陌生行业上也会很快进入正轨。各位伏案敲代码的同行们,就把当前的工作作为一项人生的修炼吧。