不记录,等于没读。
这里是我阅读《程序员修炼之道》这本书的记录和思考。
务实的团队
一个项目不只你一个人,就需要建立一些基本规则,并依次将项目的各部分分配出去。
程序员有点像猫:聪明、意志坚强、固执己见、独立、并且经常引起网络崇拜。
团队是小而稳定的实体。务实的团队很小,充其量也就 10~12 人左右。成员很少进出。每个人都很了解彼此,相互信任,相互依赖。
质量是一个团队问题。团队必须鼓励开发者持续地修复琐碎问题,防止问题进一步恶化。团队必须对产品的质量负责。质量只能来自团队每个成员的独立贡献。质量是内在的,无法额外保证。
团队要鼓励每个队员积极监控环境的变化。对项目范围扩大、时间缩短、额外特性、新的环境——任何在最初理解中没有的东西,都要留心。对新的需求要保持度量。团队不必对变化心存抗拒,只需要知道变化正在发生就可以。
团队的工作不应仅致力于开发新功能,还可能包括:
- 维护旧系统
- 反思
- 实验新技术
- 学习和提升技能
要将上述内容排入日程表。
团队中的开发人员必须相互交流。为项目起一个稀奇古怪的名字,这将给团队一个赖以依托的身份,也将作品和一个值得纪念的世界关联在一起。
有一个确保一致性和准确性的好方法,就是将团队所做的一切自动化。自动格式化代码、自动测试、自动部署。
自动化是每个项目团队的基本组成部分。
椰子派不上用场
椰子派不上用场是指人们模仿事物的形式,而不是事物的本质。
这源于一个故事,讲述了一群土著岛民首次接触到来自外界的陌生人及其带来的先进技术和物质财富。这些陌生人(二战时期的军人)使用土著的土地作为机场,作为回报,他们带来了大量的物资财富。当战争结束,这些陌生人离开了岛屿,带走了他们的技术和财富。
岛民渴望恢复之前的繁荣,于是他们模仿了机场、控制塔和其他设备的样子,使用当地的材料如藤蔓、椰子壳、棕榈叶等重建了一座假机场。然而,尽管看起来一切都齐全了,飞机却没有再回来。这是因为岛民们只复制了形式上的东西,而没有理解使飞机真正运作的技术。
很多时候我们也如同这些土著居民,比如宣称使用敏捷开发,但实际每周只做一次每日站立会议、推迟迭代周期等,他们的只是浮于表面,甚至只限于名字。不出所料,他们的境地并没有得到改善。
做能起作用的事,别赶时髦。
在软件开发时,没有哪一个计划是可以照搬的,更别说另一家公司里某个人提出的一个计划。
同一尺码无法适应所有人。获取每种特定方法中做好的部分,并对其进行调整以供使用。
务实的入门套件
当汽车还是一样新奇事物的时候,福特 Model-T 的说明书中,就如何启动汽车的说明有两页之多。而现在,你只需按一个按钮,启动是全自动,而且是傻瓜式的。文明的进步是以增加那些不需要思考就能完成的重要操作来实现的。
每个团队需要的最基本、最重要的元素是:
- 版本控制
- 回归测试
- 完全自动化
版本控制
将构建项目所需的一切都置于版本控制之下。使用版本控制来驱动构建、测试和发布。也就是说,构建、测试和部署通过提交或推送给版本控制来触发,并在云容器中完成创建。
无情的持续测试
务实的程序员主动找出 BUG。尽早测试、经常测试、自动测试。直到所有测试都已运行,编码才算完成。
测试要彻底,测试状态覆盖率,而非代码覆盖率。
每个 BUG 只找一次。如果有某个 BUG 成了现有测试的漏网之鱼,那么就需要添加一个新测试,以保证下一次能将其捕获。
完全自动化
现代开发依赖于脚本化的自动过程。不要依赖任何手动干预。无论是构建和发布过程、测试、项目文书工作,还是项目上的任何其他重复任务,都必须是自动化的,并且在任何能力足够的机器上都是可以重复的。
手工操作无法保证可重复性。
取悦用户
用户真正要的不是代码,他们只是遇到某个业务问题,需要在目标和预算范围内解决。他们的信念是,通过与你的团队合作,能够做到这一点。
用户认可的成功才是重要的。
如果你想取悦用户,就和他们建立起某种关系,成为“解决问题的人”。
每一份打赏,都是对创作者劳动的肯定与回报。!