随笔-一个项目技术负责人的思考-第二篇-对全栈模式的思考

122 阅读5分钟

全栈开发好吗?

“全栈模式”必然导致“质量雪崩”!和个人水平关系不大这方法真那么好吗 ?- juejin.cn

我最近的一个项目,就是基本3个人全栈开发做的,因此我刚好看到这篇文章,也谈一谈自己的看法。

关于第一篇的总结,就是做项目中的一些思考,参见这里:随笔-一个项目技术负责人的思考-第一篇 juejin.cn

这篇文章提出了关于全栈开发模式的一些深刻见解,我认为其中很多观点是有道理的,但也需要辩证地看待:

文章合理的观点:

  1. 专注度与深度的问题:确实,当一个人需要同时关注前后端多个技术领域时,很难在每个领域都保持足够的技术深度。人的精力和注意力是有限的,这一点是客观事实。

  2. "有益摩擦"的价值:前后端之间的讨论和争论确实能够促进更好的解决方案。这种不同视角的碰撞往往能够发现单一人视角下忽略的问题。

  3. "不可能三角"的现实性:软件开发中的"快、好、省"确实很难同时实现,全栈模式可能在短期内节省成本,但长期来看可能会影响代码质量。

需要补充的视角:

  1. 项目规模的考量:文章的观点可能更适用于中大型复杂项目。对于小型项目或初创公司,全栈开发可能是更实际的选择,因为资源有限且需求变化快。

  2. 技术发展的趋势:现代开发工具和框架(如低代码平台、全栈框架)正在降低全栈开发的门槛,使得一个人能够更高效地处理前后端任务。

  3. 个人能力差异:有些开发者确实具备在全栈领域都保持较高水平的能力,虽然这可能是少数。

  4. 团队协作模式:全栈开发不一定是单打独斗,也可以是全栈团队成员之间的协作,这样既能保持技术广度,又能通过团队互补保证技术深度。

  5. 代码评审的价值:代码评审是解决全栈开发中代码质量问题的有效手段。通过严格的代码评审流程,可以在代码合并前发现潜在问题,确保代码质量符合标准。在人均全栈的团队中,代码评审不仅是质量把关的机制,更是知识共享的重要渠道。

关于代码评审

前端开发者可以评审后端代码,后端开发者也可以评审前端代码,这种交叉评审能够促进团队整体技术能力的提升。此外,代码评审还能建立和维护统一的编码标准和最佳实践,减少"个人风格"带来的代码不一致性。

全栈团队中代码评审的特殊优势在于:跨领域视角能够从多个角度审视代码,更容易发现单一领域开发者忽略的问题;整体架构考量能够从系统整体角度评估代码变更的影响;减少沟通成本使得评审过程更加高效。

结合自动化工具(如静态代码分析、自动化测试)作为代码评审的补充,可以进一步提升全栈开发模式的代码质量。

外科手术团队式的软件开发团队

《人月神话》的"外科手术式团队"启示:弗雷德里克·布鲁克斯在经典著作《人月神话》中提出的"外科手术式团队"概念,为我们思考全栈与分工模式提供了重要参考。这种团队模式将软件开发团队比作外科手术团队,包括外科医生(核心开发者/架构师)、副手、管理员、编辑、工具师、测试员和语言律师等角色,每个角色都有明确的职责分工。

这一模式的核心思想是让最有能力的人专注于最重要的工作,同时通过团队协作来弥补个人能力的局限。与全栈开发相比,外科手术式团队更强调专业化和协作,两者从不同角度解决了团队效率和质量问题。

这一经典理论提醒我们,无论是选择全栈还是分工模式,关键在于如何组织团队以最大化效率和质量,而这应该根据项目特点、团队能力和业务需求来决定。《人月神话》作为软件工程领域的经典著作,其团队组织理念至今仍有重要的指导意义,为我们分析全栈开发模式提供了理论支撑。

对于小团队,其实全栈在一定程度上也符合这种模式。

总结

文章对全栈开发的批判是有道理的,特别是在追求高质量、可维护的大型系统时。但全栈开发模式是否适合,应该根据具体项目情况、团队能力和业务需求来决定,而不是一概而论。

在资源有限的小型项目或快速迭代的初创环境中,全栈开发可能是合理的选择;而在对稳定性和性能要求较高的大型系统中,前后端分工可能更为合适。

然而,通过建立有效的代码评审机制和其他质量保证措施,全栈开发模式下的代码质量问题是可以得到有效控制的。

关键在于团队是否能够建立起相应的协作机制和质量保证体系,而不是简单地选择全栈或分工模式。正如《人月神话》中"外科手术式团队"概念所启示的,优秀的软件团队组织应该让合适的人专注于合适的工作,同时通过有效的团队协作来弥补个人能力的局限。

无论是全栈还是分工模式,最终目标都是构建高效、高质量的软件系统,而这需要我们根据实际情况灵活选择最适合的团队组织方式。