在上世纪90年代的时候,PC 开始逐步走到我们的生活中。那时除了 PC 还有一个名词叫做 MPC,这是 Multimedia PC 的缩写,也就是『多媒体个人电脑』。

在当时,PC 给人的感觉是字符界面下的文字以及科学计算。虽然在 1995年的时候,Windows 95 已经发布。不过不要说播放视频了,就算听 MP3 都会卡顿。所以如果给一台 PC 添加了一个 CDROM、一个声霸卡以及用于解压电影的『硬解压卡』就可以让一台『普通』的 PC 做更多的多媒体的工作。于是就升级为『多媒体 PC』,也就是 MPC。在当时 MPC 还有级别之分,根据 CPU 的主频、内存、显卡支持的颜色数量等等指标来划分。

很快的,MPC 这个名字就淡出了我们的记忆。大概在1997、98年之后,已经很难看到这个名词了,因为那时的硬件性能遵循着摩尔定律在高速的发展中。已经无需添置硬解压卡就能看电影,CDROM 和声卡都已经成标配。现在对于一台 PC 可以做文字处理、科学计算、看电影、玩游戏、上网聊天就已经最为基本的功能了。PC 就是 PC!

从功能单一枯燥的 PC 和多媒体的 MPC,慢慢的,就只有了 PC。对于用户来说,在 PC 上可以编辑文字、播放音乐、修改图片、看电影、玩游戏是再普通不过的功能了。至于『MPC』是什么?1990年后出生的程序员们已经几乎没有谁知道了。

而在『MPC』的时代,会有『前端程序员』或者『后端程序员』吗?。在那时只有程序员,或者软件工程师。程序员要和客户沟通需求、写代码、做测试。当然也要自己搞定客户端和服务端。除了开发相关的工作外,还要做程序的安装、系统的配置和调优。知道如何启用 386 增强模式,如何使用高位内存。不要说配置防火墙和路由器了,连网线都会做。当时的网线可能都是同轴电缆,而且必须接上终结头,否则网络都不通。或许有人还记得『星型网络』或者『环形网络』。所以,以前的程序员真的是要会修电脑,而且很多程序员都以此为乐趣。甚至还有朋友会找程序员修电视,因为电脑也有个显示屏,和电视都很像。连电脑这么高科技的都会修,电视还能不会修?

在20世纪90年代后期,互联网开始迅速的发展起来。很快的,IT 就发展到我们的身边每一个角落了。软件的规模也越来越大,越来越复杂,程序员的职业开始细分。比如在2000年左右的时候,DBA 是一个非常热门的职业。如果你有了 DBA 的证书,你可以很容易的找到收入很高的工作。因为程序规模开始变大变复杂,独立的测试团队也开始出现。而且越来越多的公司开始需要网络工程师来负责和管理开始变得复杂的网络。运维团队也慢慢出现,负责软件的部署和维护。到了 2004 年,AJAX 技术是当年最重要的新技术之一。使用 AJAX,程序员可以开发出更加易用的 Web 前端,基于 AJAX 也出现了很多新的 Web 开发技术。如果一个程序员喜欢去做好的用户交互界面,就成为了前端工程师。还有一些程序员只喜欢和电脑打交道就成为了后端工程师。我们的开发团队就开始有前端程序员和后端程序员了。现在甚至有不同种类的前端工程师,React、AngulaJS、Android、iOS。

软件的规模越来越大、越来越复杂,但是程序员关注的范围却是越来越小。做前端的不懂后端,做后端的不了解前端。开发中的沟通成本和复杂就变得越来越高,随着互相的不了解,前端程序和后端程序在集成的时候就特别容易出现问题,很多软件的缺陷就因此而产生。如果一个程序员既了解前端也会做后端,是可以避免这种集成的问题的。为了减少因为沟通和理解造成的软件缺陷,『全栈工程师』就出现了,作为一名全栈工程师,不要求我们精通包括前端、后端、测试、运维等技术的方方面面,但一定要所有了解,一专多能,起码不会因此而出现沟通上的理解偏差。很多公司里面,全功能团队也在逐步的取代特性开发团队。

这个事情很有趣,以前会修电脑会做客户端服务端会网络会调优的程序员,慢慢的变成了,只会开发前端和后端或者会开发的不会运维的程序员。而那种什么也会做的就是『全栈工程师』。相信有越来越多的程序员希望成为『全栈工程师』,『全栈工程师』这个词也会消失。『全栈工程师』就像是20年前的『MPC』。