理解分工
分工带来效能,当带社会由经济学的分工效应,所带来前所未有的发展。
如果你去看每一个行业。
我曾对装修进行过观察,一个再小的工程,如果想自己做,就会发现陷入了一场灾难。而那个衣着不整的民工,却可以不费力的做到一种完美。虽然你可能感觉智力领先。
这就是分工的结果。每个人在自己的行业不断的专研,积累经验,合起来创建更大的财富。
那软件行业呢。
也同样遵循了这个定律,从设计到代码,从产品到交互,从开发到测试,从管理到架构。
这是我们能看到的方向上的不同。
即使在同一个方向上,也会有着更细致的划分。
iOS, android, Web,
性能测试,功能测试,集成测试,
分工是什么,是因为时代的知识发生了爆炸,不再像以前一样,只有经典,而我们的个人时间,能力有限,只能注重于一个领域,去深入。
当然,除了这一点之外,还有一个解释,就是工作太复杂,也不再是一个人能完成的,需要合作。合作带来分工。
分工和组织
分工的不同,也是组织的聚合。
相同的分工会聚在一起,形成自己的知识体系的交流。
但不同分工通过产品、项目形式聚合在一起,进行跨专业的合作。
这就是一个公司最基本的团队模型。
软件工程中的合作
工种的不同,其实也反应在工作中的依赖。
像开发依赖设计交互,设计依赖产品,而测试又依赖开发,
所以,这个合作本身就有着一个链式的关系,如果在设计流程时,不考虑这层关系。那一定是会出问题的。
反模式
社会的永恒定律就是不会存在唯一真理,有模式就会有反模式。
分工带来的坏处是什么呢?
从软件工程上来讲,分工带来年问题就是大家相互不了解,在一起做事的沟通成本就要高很多。
从专业的术语来讲,就是要做到边界冗余。所以我们常提到高内聚,低耦合。差不多一个道理。
有时在一起交流的复杂度被拉高了太多,于是就有了跨专业的人。就是全栈。
全栈更多的不应该是写代码飞快,而是它能主导一场沟通的顺畅。站在更高点上,提出合理的意见。
当然,全栈是不容易的。