第一章 专业主义
1.1 清楚你要什么
专业主义的精髓在于将公司利益视同个人利益,专业主义意味着担当。
1.2 担当责任
没有对例行程序进行测试就交付软件是不负责任的行为。
1.3 首先,不行损害之事
没有人能写出完美的软件,但是并不表示你不用对不完美负责。
所谓专业之人,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在所难免。
职业经验多了之后,你的失误率应该减少,甚至渐近于零。失误率不可能等于零,但你有责任让它无限接近零。
发布软件时,你应该确保QA找不出任何问题。故意发送明知有缺陷的代码,这种做法是极其不专业的。会大幅增加公司成本,严重损害软件,破坏计划并让企业对开发小组的信心打折扣。
要实现自动化测试,写一些随时能运行的单元测试,然后尽可能的执行这些测试。你写的每一行代码都需要测试。
最后先写测试,再写要测的代码。
聪明人不会为了发布新功能而破坏结构,结构良好的代码更灵活。以牺牲结构为代价,得不偿失,将来必追悔莫及。
所有软件项目的根本指导原则是,软件要易于修改。简言之,你必须能让修改不必花太高代价就可以完成。
有人认为对上线运行的软件不断的做修改是危险的。错!让软件固定不变才是危险的!如果一直不重构代码,等到最后不得不重构时,你就会发现代码已经僵化。
如果你有一套覆盖了全部代码的自动化测试,如果那套测试可以随时快速运行,那么你根本不会害怕修改代码。
1.4 职业道德
雇主没有义务确保你在职场能够立于不败之地,也没有义务培训你,送你参加各种会议或给你买各种书籍充电。这些都是你自己的事,将自己的职业发展寄希望于雇主的软件开发人员将会很惨。
每周工作60小时,前40小时给雇主,后20小时给自己,在这20小时内你应该看书,练习,学习,或者做其他能提升职业能力的事情。
如果想成为一名专业开发者,那你就得对其中相当一大部分有所了解,而且要不得扩展这一知识面。
软件行业飞速发展,意味着软件开发人员必须坚持广泛学习才不至于落伍。
只完成日常工作是不足以成为练习的,那只能算是种执行性质的操作。练习指的是在日常工作之余专门练习技能,以期自我提升。
学习的第二个最佳方法是与他人合作。
教学相长,在传道授业的同时,导师也会从中受益。
开始一个新领域的项目时,应该读一两本该领域相关的书,要就该领域的基础架构与基本知识作客户和用户访谈,还应当花时间和业内专家交流,了解他们的原则和价值观念。
最糟糕,最不专业的做法是,简单按照规格说明来编写代码,但是对为什么那些业务需要那样的规格定义不求甚解。
每次开发系统,都应该站在雇主的角度来思考,确保开发的功能真正能满足雇主的需要。