开发团队的效率

原文

几种典型的开发方式

  • 软件开发中的“锁”
    • 技术能力上的锁:需要不同的语言开发一个项目,每人只会一种语言
    • 负责模块上的锁:不同的人负责不同的模块
    • 时间锁、进度锁:掌握语言或模块负责的人不同,需要协作开发
    • 沟通锁、利益锁:人员增多会增加沟通成本
    • 解决方案
    • 一个程序员应该可以掌握多个语言,能够负责多个模块甚至不同的职责
  • 接力棒式软件开发
    • 底层开发-上层开发-测试-运维。。。
    • 解决方案
    • 不同的团队有自己的框架(开发框架和服务框架),使得其他团队可以自己接入
  • 保姆式软件开发
    • 从产品到研发、测试和运维,每个团队没有较好的完成自己的工作,需要之后的团队来发现问题
    • 产品的需求不完整,后期边开发边加需求
    • 研发没有充分测试自己的代码,使得测试花更多时间来定位错误
    • 测试没有充分测试产品,使得运维需要花更多时间重新部署服务
    • 解决方案
    • 招聘懂“需求”、注重“软件工程”、“软件质量”和“软件维护”的工程师
    • 自己管理自己
    • 支持性工作的人越少越好
    • 服务化。我服务于代表让对方做起事来更容易
  • WatchDog 软件开发
    • 为了解决某个系统的问题,要用一个新的系统去监控
    • 解决方案
    • 想好设计,多评估几个设计,简化流程
  • 故障驱动式软件开发
    • 以上线为目的,出问题再改,使得后期话更多时间定为错误、重构代码
    • 解决方案
    • 基础知识和理论知识的重要性,多使用成熟的方案
    • 考虑清楚再写实现,做好设计
  • 总结
    • 软件工程师分工分得越细这个团队就越没效率,团队间的服务化是关键的关键
    • 需要在一个环节上认真,这个环节越往前就越有效率,越往后就越没效率:需求收集-设计和编码-测试
    • “小而精的团队”+“条件和资源受限”是效率的根本,这样才会用最经济的手段做最有价值的事
    • 软件架构上要松耦合,团队组织上要紧耦合
    • 工程师文化是关键,重视过程就是重视结果

相关