专业人士,懂得说“不”(捍卫),才敢于说”是“(承诺)。
“专业主义”不仅象征着荣誉与骄傲,还意味着责任与义务。只有具备相应的能力,才能承担起对应的责任。作为一个专业主义者,应当提升编码能力(坚持学习、反复练习、参与开源),采用TDD(测试驱动开发)与自动化验收测试,避免优先级错乱,警惕死胡同与泥潭,提高预估准确性,从而实现对他人的承诺。
一直觉得项目工程与《魔兽世界》中的团队副本有着某种相似性:
个人需要听从团长指挥,熟悉并理解业务,提升自身能力以应对分派下来的任务;
各个成员需要彼此了解,从而磨合成一个有凝聚力的团队,以期在限定时间内实现共同目标;
帮助新人,壮大队伍!
文摘
不要破坏软件的功能与架构!
要想证明软件易于修改,唯一办法就是做些实际的修改。对每个模块,每检入一次代码,就要让它比上次检出时变得更为简洁。每次阅读代码,都完成点滴改善。
每个专业软件开发人员必须精通的事项:
设计模式,必须能描述GOF书中的全部24种模式,同时还要有POSA书中的多数模式的实战经验。
设计原则,必须了解SOLID原则,而且要深刻理解组件设计原则。
方法,必须理解XP、Scrum、精益、看板、瀑布、结构化分析及结构化设计等。
实践,必须掌握测试驱动开发、面向对象设计、结构化编程、持续集成和结对编程。
工件,必须了解如何使用UML图、DFD图、结构图、Petri网络图、状态迁移图表、流程图和决策表。
TDD(测试驱动开发)是一项能够提升代码确定性、给程序员以鼓励、降低代码缺陷率、优化文档和设计的原则,它的三项法则:
在编好失败单元测试之前,不要编写任何产品代码。
只要有一个单元测试失败了,就不要再写测试代码;无法通过编译也是一种失败情况。
产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写。
关于会议,有两条真理:1、会议是必需的;2、会议浪费了大量的时间。
敏捷开发的武器库中包含“立会”:在开会时,所有参会者都必须站着,到场的人依次回答3个问题——1、我昨天干了什么;2、我今天打算干什么;3、我遇到了什么问题。
学校能够传授的是计算机编程的理论,不会也无法传授作为一名编程匠者所需掌握的原则、实践和技能。这些东西只有经由师徒个体间多年的细心监督和辅导才能获得,建立一种包含学徒期、实习期和长期指引的机制已是迫在眉睫。