专业主义:
每检入一次代码,就要让它比上次检出时变得更为简洁。每次读代码,都别忘了进行点滴的改善。这完全与大多数人对软件的理解相反。他们认为对可工作软件不断地做一系列修改是危险的。错!让软件保持固定不变才是危险的!如果一直不重构代码,等到最后不得不重构时,你就会发现代码已经僵化了。对待代码,就如同雕塑家对待泥巴那样,要对它进行不断的变形与塑造。
软件开发必须精通事项:
- 设计模式:
- 必须能描述GOF书中全部24种模式
- POSA书中的多数模式的实战经验
- 设计原则:
- 必须了解SOLID原则,而且要深刻理解组件设计原则
- 方法:
- 必须理解XP(extreme programming),Scrum,精益,看板,瀑布,结构化分析及结构化设计
- 实践:
- 必须掌握测试驱动开发,面向对象设计,结构化编程,持续集成和结对编程
- 工件:
- 必须了解如何使用UML图,DFD图,结构图,Petri网络图,状态迁移图表,流程图和决策表
坚持学习:
不写代码的架构师必然遭殃,不学习新语言的程序员同样会遭殃,学不会新原则和技术的开发人员必将沦落。
练习:
业精于勤,真正的专业人士往往勤学苦干,以求得自身技能的纯熟精炼。只完成日常工作是不足以称为练习的,那只能算是种执行性质的操作,而不是练习。练习,指的是在日常工作之余专门练习技能,以期自我提升。
kata:一个有待解决的简单编程问题,比如编写计算拆分某个整数的素数因子等。做kata的目的不是找出解决方法,而是训练你的手指和大脑。不妨早晚都来个10分钟的kata吧,把它当作热身练习或者静心过程。
合作:
学习的第二个最佳方法是与他人合作。专业软件开发人员往往会更加努力地尝试与他人一起编程。专业人士会视辅导新人为己任,他们不会放任未经辅导的新手乱打乱撞。
了解业务领域:
每位专业软件开发人员都有义务了解自己开发的解决方案所对应的业务领域。开始一个新领域的项目时,应当读一两本该领域相关的书,要就该领域的基础架构与基本知识作客户和用户访谈,还应当花时间和业内专家交流,了解她们的原则与价值观念。最糟糕最不专业的做法是,简单按照规格说明来编写代码,但对为什么那些业务需要那样的规格定义不求甚解。相反,你应该对这一领域有所了解,能辨别,质疑规格说明书中的错误。
与雇主,客户保持一致:
雇主的问题就是你的问题,你必须弄明白这些问题,并寻求最佳的解决方案。每次开发系统,都应该站在雇主的角度来思考,确保开发的功能真正能满足雇主的需要。
“为什么”远不如事实重要。阐述事实以及其更多的细节:
成为英雄及“解决问题”的诱惑诚然巨大,只是我们要明白,委屈专业原则以求全,并非问题的解决之道。舍弃这些原则,只会制造出更多的麻烦。
口头上说。心里认真。付诸行动:
专业人士不需要对所有请求都回答是。不过,他们应该努力寻找创新的方法,尽可能做到有求必应。当专业人士给出肯定回答时,他们会使用承诺用语,以确保各方能明白无误地理解承诺内容。
要精熟掌握每项技艺,关键都是要具备“信心”和“出错感知”能力。