在成为一个出色的开发人员前,必须先成为一个合格的程序员。所以,职业素养和专业性十分重要。下面是关于《程序员的职业素养》–Robert.C Martin 的读书笔记
个人素养
- 不要破环任何代码
在对一个既有项目写代码前,首先要保证,新加入的代码不能造成此前代码的功能异常。并且,不要随意破坏此前代码的结构(注意解耦)。 - TDD(测试驱动开发)
当然不同的程序员对这一点持有不同的看法,但是个人认为,任何时候对自己代码的测试是必须的。对于复杂功能的代码,一定要在设计初期就考虑好编码完成后如何测试。 - 持续学习
程序员要坚持不断学习,除了自己本身最擅长的语言,要再掌握另一门语言。不学习新语言的程序员会遭殃。 - 练习
演奏家要不断练习基础的乐器手法,歌唱演员要练习发声。程序员也要不断练习,提升自己的对代码和语法的熟练。常用API的认识。
练习最好的一种方式,就是拥抱开源项目。 - 合作分享
自己学习的效率必然不如社群一起分享学习
工程素养
- 学会说“不”
不要对自己难以完成的工作说是,时间,难度都要考虑好。盲目的答应只会造成急于求成,但是留下众多bug,严重的话会导致整个项目崩溃。
(前些天部门里的应届的同事,负担了整个新版本的功能升级,天天加班。最后项目上线前还是出了很多bug,整组都来改bug。即便如此,没有进行压力测试的情况下,项目上线后出现了严重问题,险些高挂了整台服务器) - 理解“是”
确认和你合作的人的项目进度。是否已经开始和你工作有关的工作。持续跟进别人的进度。 - 编码规范
不说了,各种规范。同时不要总想着炫技,最好的代码应该是逻辑简洁明了,符合功能要求,易于维护扩展。个人认为,一个方法(特别要求的复杂算法除外)代码应该尽量控制在50行之内,最多扩60行。超过50行的代码,真的让人不想阅读。 - 控制编码的节奏
程序员难以避免的被人打断。可以要求对方如果不是特别急得事情,尽量在特定的时间段处理。比如午饭前,下班前这种编码效率较低的时段。
遇到解决不了的问题,多和搭档沟通,避免个人陷入死循环的思考。 - 预估时间
对于老板的要求,永远要考虑三个完成时间:乐观时间,标称时间,悲观时间。三者要随实际进度进行调整。 - 关于加班
(个人感觉,这部分可能只有外企能用吧)加班20%的时间不一定能多完成20%的任务;除非具有以下三个条件,才是比较合适的加班:a.个人有时间;b.短期加班,最多两周;c.老板是否有后备预案,还是单纯的为了加班而加班。
团队素养
- 理解公司的团队的业务需求
专业的程序员会花时间去理解和分析业务。主动和策划人员沟通所遭遇的问题。明确团队的目标。业务上的同舟共济是必须的。