全栈工程师与其经济原理

最近迫于生计,重修经济学原理,正好复习到比较优势,于是就结合自身的职业,写了这么一个类似于课后小练习的东西。

比较优势

在聊技术之前,我们先还是简单澄清一下基本的概念(不保证正确性,我又不是学经济的)。

要说比较优势,按照教材的顺序,我们要先了解什么是绝对优势。为了方便说明,我继续照抄课本的例子(这样我的成本最低):假设有两个人A和B,这两个人生产牛肉和土豆,且这两个人都吃牛肉和土豆。我们假设他们的生产能力符合下表:

生产者 每小时牛肉产量 每小时土豆产量
A 1 4
B 3 6

显然,B是个比A厉害的人。因为不论是论生产牛肉还是论生产土豆,B每小时的产量都比A高。这就是绝对优势

但是,B具有绝对优势并不意味着B就要独自生产,我们假设他们工作8个小时,且根据A和B各自的喜好,他们在独自生产时各自的产出符合下表:

生产者 每天实际牛肉产量 每天实际土豆产量
A 4 16
B 12 24

然而我们注意到,A虽然菜,但是其实他自己更擅长生产土豆。虽然这种擅长可能是基于A实在是太不擅长生产牛肉导致的。
现在,考虑到A这么菜的情况,我们让A和B共同生产,且A专门生产土豆,B减少生产土豆,经过交易后,我们可以得到下表:

生产者 每天生产牛肉量 每天生产土豆量 每天获得牛肉量 每天获得土豆量
A 0 32 5 17
B 18 12 13 27

结果就是A和B每天获得的东西都增多了。

而比较优势就是说A比B能用更少的机会成本来生产土豆。毕竟A太不擅长生产牛肉了,让他全去生产土豆其实没啥机会成本。

生产软件

我们把上面的例子换个皮,把生产牛肉和土豆改成生产前后端代码。我们假设一个可以用的网站需要的前端代码和后端代码的比率是1:1。也就是说,粗略的假设,前端的一个功能一定会对应后端功能。
虽然现实中,显然不是1:1,但是就我这个练习中,把这个比例调整为2:1甚至1:100应该都是一样的结果。当然,0:1或者1:0的情况除外。
同时需要澄清的是,生产软件也离不开devops的支持,但是为了简化计算,我们这里忍痛忽略devops的工作。但现实中devops也是很重要的。同理QA、BA乃至公司管理都对软件生产起到了至关重要的作用,但这里出于简化模型,都暂时忍痛在例子中忽略。

同样的,两个Dev:A和B,他们1小时能产出的前后端代码量如下表所示:

生产者 每小时前端产量 每小时后端产量
A 2 4
B 8 1

显然,A更擅长后端,但是B明显是个前端大佬。现在我们让这两个人工作9个小时以产出网站(为了简化计算,所以改成9小时)。我们先看他们分开开发:

生产者 9小时前端产量 9小时后端产量 9小时交付网站
A 12 12 12
B 8 8 8

这里我们首先能发现人的多样性:
我们从牛逼不牛逼的角度来讲,讲道理B还是很牛逼的,毕竟峰值产能是A的一倍呢!
另外一个方面,我们从独立做事的角度,似乎A也还是牛逼的,毕竟比B搞出50%的产能!

在走到最优解之前,我们先考虑A全力生产后端,B全力生产前端,我们得到下列产量表:

生产者 9小时前端产量 9小时后端产量
A 0 36
B 72 0

这样网站总交付数是36,已经超过了A和B共同生产的产量12+8=20了。这里,我们可以很清楚的看到,为什么之前以及现在很多大厂采取瀑布开发,并且让前后端完全分开开发的模式。

但这显然不是终点,因为我们看到B多生产了36份前端代码,这浪费了产能。于是我们让B每天只花5个小时在前端,另外4个小时来写后端,我们可以得到下面这个产量表:

生产者 9小时前端产量 9小时后端产量
A 0 36
B 40 4

我们发现,这样一来交付的网站变成了40份,再次提高了产能。

全栈开发

我们首先考虑全栈开发的定义:

全栈工程师是指掌握多种技能,胜任前端与后端,能利用多种技能独立完成产品的人。

这个定义也不能说有什么大错。但我个人认为,这个定义容易导致一种误解:因为这个人有独立完成产品的能力,因此这个人就要独立完成产品。这个我认为是不对的。

以上面的例子为例,看上去A其实比B更全栈,而且确实,在独立完成产品的情况下,A的产能是比B高的。但我们看到,其实在由A和B组成的项目中,A却在专门生产后端,相反的B才是真正“全栈”的那个人。

因此,我个人认为:只要独立完成,就是全栈开发。虽然这个全栈开发可能是发展的并不均衡。但只要一个人的某一项产出是1不是0(严谨的说,只要不是接近于0),那么这个人就是全栈的。
至于这个全栈的人,具体到底做什么事情,这个其实看缘分。

一点展望

我个人认为,随着行业发展,全栈开发也许会逐渐成为主流。因为这样其实是能提高生产效率的。
但这里的意思是,纯粹的前端或者纯粹的后端的市场价值会减小。
而这里的意思不是指要均匀发展,面面俱到,没有特长。

一些限制

虽然,大概率是可以类比到devops、qa等等。但是考虑到招聘流程和验证的成本,未来也不是一定能看到全栈成为主流。毕竟商业化的事情,我不懂,这里只是照着课本做个推论而已。

展示评论