当我们被采访的时候,常常会问及这样一个问题——一个伟大的程序员需要具备哪些特质。大多数人回答的是逻辑、机智、耐心以及勤奋。对于这个问题,其实并没有标准答案,但是除了这些特质,习惯也是非常重要的因素。而这一点则只能在已经进入正轨的团队组织中可以窥见。
除了必需的技术技能和逻辑能力,下面讲一下一个团队应该具备怎样的好习惯:
1. 良好的时间管理
迟到对于任何一家公司都是个头痛的问题。作为一个程序员,有时候为了完成任务常常不得不熬夜,从而导致第二天上班就迟到了。但是我们忽略了这一点,我们的工作时间至关重要,因为在这段时间里我们要和客户同步,也要与团队其他成员一齐协作。
2. 深入理解客户需求
仅仅了解单一用户的表面意思是远远不够的。一个伟大的程序员应该具备能把繁琐的要求理解并分解成项目的技术任务或子任务的能力,并且最后拿到的成果应精确满足客户的需求。
3. 在编程之前准备好全套算法
案例、伪代码和流程图统统都是非常重要的软件开发手段。一个伟大的程序员如果没有先准备好算法,那么他是不会像傻小子一样兴冲冲地开工写代码的。写代码实际上只是一个编码任务。
4. 理解并帮助定义验收标准
是否需要高层次测试脚本是由产品所有者决定的,但是一个伟大的程序员必须能够编写技术测试脚本,并且深刻认识到跳过这些步骤可能会带来的后果。
5. 绞尽脑汁还是“NO”
假如抓耳挠腮还是找不出解决办法,我们该如何是好?一个伟大的程序员应该足智多谋,能灵活应对困境。他们会去询问同事,或者是向团队领导者请教;在互联网上面搜索,然后耐下心来一遍又一遍地试验。相信山穷水尽疑无路,柳暗花明又一村,投降两个字从未出现在他们的字典上。
6. 承认自己的缺陷
性格内向就是其中一个对于我们大多数程序员而言很常见的软技能问题。但是一个伟大的程序员一旦知道自己的不足之处之后,会立刻主动改善自我,并且积极执行“客户第一”的服务理念。
7. 主动
优秀的程序员不需要别人告诉他怎么做,他的主动性更强。他有这个自觉,会主动去关注流程;改善能增强软件开发生产力的工具,例如SVN;提高应用程序的灵活性以及解决软件开发中发现的Bug。
最后,我想说的是,无论你是职工还是自由职业者,要明确一点——软件开发的目的是为客户服务。一个伟大的程序员深刻明白每一个任务的价值并且尊重他人的成果,对其呕心沥血的过程感同身受!