the division in software engineering

理解分工

分工带来效能,当带社会由经济学的分工效应,所带来前所未有的发展。

如果你去看每一个行业。

我曾对装修进行过观察,一个再小的工程,如果想自己做,就会发现陷入了一场灾难。而那个衣着不整的民工,却可以不费力的做到一种完美。虽然你可能感觉智力领先。

这就是分工的结果。每个人在自己的行业不断的专研,积累经验,合起来创建更大的财富。

那软件行业呢。

也同样遵循了这个定律,从设计到代码,从产品到交互,从开发到测试,从管理到架构。

这是我们能看到的方向上的不同。

即使在同一个方向上,也会有着更细致的划分。

iOS, android, Web,

性能测试,功能测试,集成测试,

分工是什么,是因为时代的知识发生了爆炸,不再像以前一样,只有经典,而我们的个人时间,能力有限,只能注重于一个领域,去深入。

当然,除了这一点之外,还有一个解释,就是工作太复杂,也不再是一个人能完成的,需要合作。合作带来分工。

分工和组织

分工的不同,也是组织的聚合。

相同的分工会聚在一起,形成自己的知识体系的交流。

但不同分工通过产品、项目形式聚合在一起,进行跨专业的合作。

这就是一个公司最基本的团队模型。

软件工程中的合作

工种的不同,其实也反应在工作中的依赖。

像开发依赖设计交互,设计依赖产品,而测试又依赖开发,

所以,这个合作本身就有着一个链式的关系,如果在设计流程时,不考虑这层关系。那一定是会出问题的。

反模式

社会的永恒定律就是不会存在唯一真理,有模式就会有反模式。

分工带来的坏处是什么呢?

从软件工程上来讲,分工带来年问题就是大家相互不了解,在一起做事的沟通成本就要高很多。

从专业的术语来讲,就是要做到边界冗余。所以我们常提到高内聚,低耦合。差不多一个道理。

有时在一起交流的复杂度被拉高了太多,于是就有了跨专业的人。就是全栈。

全栈更多的不应该是写代码飞快,而是它能主导一场沟通的顺畅。站在更高点上,提出合理的意见。

当然,全栈是不容易的。