-->

Neater

Be A Warrior, Not A Worrier

全栈开发者的潮起潮落

貌似今天的技术都迷恋全栈的开发者。全栈可能在Web2.0时代是可能的,但新一代的创业公司的涌现打破了许多限制。从机器智能预测推计算数据分析移动/可穿戴等等,全栈变得几乎不可能了。

上世纪70年代末至80年代初,还是孩子的我便开始为早期移动端和网站编程,那时独立开发一个软件是很普遍的,程序员和硬件之间也没有很多的层。在8位处理器和有限的内存环境下,程序员使用汇编语言尽可能地提升运行的性能和空间。

80年代末至90年代初,随着C/S模型的到来,很快软件开发演变成了一种团队合作,而90年代末至新世纪初的互联网浪潮则加速了这一进程。新进的技术进一步提高了复杂度,管理一个商业网站需要具备多种技能(比如前端、数据库、应用服务器等)的专业人员精通网络设备的操作、路由器和负载均衡原理、Java虚拟机调优、各种数据库的索引机制。

00年代中期开始,任何项目的开发成本都变的非常高,从简单的网站到新一代SaaS服务,这直接增加了开发中各个层之间的沟通成本甚至还会造成沟通障碍,项目中的层数也增加了不少,直接增加了部署的难度。 正如Marc Andreessen针对最近tweet的烧钱风波(译者猜测是狂招人吧)指出:开发人员的增加极大增加了沟通成本,只会导致效率的降低。

与之相反,新一代Web2.0技术变得日益简单和无缝。使用J2EE及Oracle的程序员切换到了更加一体化的LAMP(Linux, Apache, MySQL, PHP/Python/Perl)。新的语言及其框架(Django and Ruby on Rails)在网站和数据库之间封装相应的层来完成自动化。前端框架(jQuery)提供抽象层使开发者不用关心具体的浏览器。云服务(Amazon Web Services)简化部署并提供一致的网络。

00年代后期,许多程序员都能独自交付一个消费类或SaaS网站,包括动态网络客户端,以及负责商业逻辑的服务端,数据库的开发、布署以及运维。这新一代全栈开发者可以完全胜任需要过去一个团队才能完成的任务。当新加入的全线开发者为项目开发一个新的功能,将不可避免地涉及项目的各个层,

skill1

如果你要使用上图中的技术来搭建网站,需要找到能够胜任的程序员。不久之后我觉得不切实际,因为这是并不是全栈开发者,下面的才是: skill2

我敢打赌,没人能精通所有这些领域,并开发相应的应用,因为要精通每一个领域及其API都是一个全职工作。

我们正处于复杂技术的变迁中,每个技术层都需要相关专家。开发Android&iOS App需要理解各自平台的特性。使用Amazon的云服务运行一个应用,需要熟悉它的各种服务,才能应付各种事故。甚至前端技能的CSS都到了CSS4,JSON&JavaScript也出现了MVC框架,Angular.js & Backbone.js.

在这勇敢的新世界,一种人成为了关键,他除了精通至少一个层,还要能连接其余的层,并能和各层的专家合作开发新的功能并交付。换言之,他能够连接各个层以及设计整体的架构,这样的人很可能是一个或几个层的专家,相比全栈开发者,我们更需要全栈集成者。

安息吧,全栈开发者,我们应该欢迎全栈集成者,除了某些特殊领域需要具备高超技术的工程师外,软件使世界变得更加美好,其中自然少不了你们。

译自: The Rise And Fall Of The Full Stack Developer