Architecture 构建一个软件开发团队——是按专业化还是按任务?

Architecture 构建一个软件开发团队——是按专业化还是按任务?,architecture,project-management,Architecture,Project Management,作为一名6年的软件开发人员,我与不同的团队有过一系列的经验,从消极到积极 我最好的经历之一是在一家金融机构的某个项目团队中 有许多因素使项目成功,但我认为团队结构是项目成功的一个关键方面 总结如下: 我们有专门从事不同方面的开发人员。2名开发人员擅长UI,2-3名开发人员擅长编写业务逻辑和数据库接口代码 代码被严格划分为表示层、业务层和数据层 每个开发人员都对整个系统有基本的了解。即使他们不是所有方面的专家,他们也对如何将所有方面结合在一起有一个大致的想法,并且可以在必要时在任何层编写代码 有

作为一名6年的软件开发人员,我与不同的团队有过一系列的经验,从消极到积极

我最好的经历之一是在一家金融机构的某个项目团队中

有许多因素使项目成功,但我认为团队结构是项目成功的一个关键方面

总结如下:

  • 我们有专门从事不同方面的开发人员。2名开发人员擅长UI,2-3名开发人员擅长编写业务逻辑和数据库接口代码

  • 代码被严格划分为表示层、业务层和数据层

  • 每个开发人员都对整个系统有基本的了解。即使他们不是所有方面的专家,他们也对如何将所有方面结合在一起有一个大致的想法,并且可以在必要时在任何层编写代码

  • 有些任务涉及开发人员的整个垂直功能(涉及所有层的工作)

  • 其他任务仅涉及开发人员专门负责的应用程序领域(例如,仅涉及UI任务或数据库任务)

我认为这很有效,因为:

  • 开发人员能够了解整个系统,并在必要时跳入另一层

  • 开发人员保留了专业性,如果开发人员需要他不熟悉的东西的帮助,总是会有一个求助者

  • 建筑是严格的,但人们是灵活的,因为他们应该这样

这种团队结构有正式的术语吗?这听起来像是敏捷/SCRUM的安排吗

(当时似乎没有完全计划好。)


有什么想法吗?

允许您的开发人员学习的技能越多,您的团队就会越强大、越多样化、越快乐

交叉训练非常重要。如果你的用户界面专家被一辆公共汽车辗过会发生什么?团队中还有其他人可以接替他的职责吗


工作分配应基于如何在架构上划分工作(例如,在接口处进行细分)。分配工作任务的开发人员应该能够或多或少地自主地完成特定的工作。

允许开发人员学习的技能越多,您的团队就会越强大、越多样化、越快乐

交叉训练非常重要。如果你的用户界面专家被一辆公共汽车辗过会发生什么?团队中还有其他人可以接替他的职责吗


工作分配应基于如何在架构上划分工作(例如,在接口处进行细分)。分配工作任务的开发人员应该能够或多或少地自主地完成特定的工作。

我认为这种团队没有正式的名称——除了明智之外!:)为此,我当然同意罗伯特·哈维的观点

每个解决方案(通常)都将覆盖一般领域,如UI、BL、数据;您通常还将涉及横切关注点,如日志记录、部署打包等;所有这些都将使用某些技术。因此,一个团队要适合这个项目,首先需要涵盖所有这些内容

这是“水平”视图,垂直视图(实现功能的各个部分)是这些人需要交互的地方——这就是XP实践(如同级编程)的用武之地,也是交叉培训真正开始的地方

与此形成对比的是,你可能会对弗雷德里克·布鲁克斯在其著名著作《外科手术团队》中概述的“外科手术团队”方法感兴趣


该页面上还有一个指向“”的链接,这可能会引起人们的兴趣。

我认为这种团队没有正式的名称——除了明智之外!:)为此,我当然同意罗伯特·哈维的观点

每个解决方案(通常)都将覆盖一般领域,如UI、BL、数据;您通常还将涉及横切关注点,如日志记录、部署打包等;所有这些都将使用某些技术。因此,一个团队要适合这个项目,首先需要涵盖所有这些内容

这是“水平”视图,垂直视图(实现功能的各个部分)是这些人需要交互的地方——这就是XP实践(如同级编程)的用武之地,也是交叉培训真正开始的地方

与此形成对比的是,你可能会对弗雷德里克·布鲁克斯在其著名著作《外科手术团队》中概述的“外科手术团队”方法感兴趣


该页面上还有一个指向“”的链接,可能会引起您的兴趣。

感谢您提供的精彩链接。与我以前的公司相比,这很有趣。谢谢你的链接。把这和我们在以前的公司做的比较起来很有趣。