平时工作的时候,经常有产品妹子呼哧呼哧的跑来找我,说你快看你快看,这儿程序有问题,你得改一改。我拿来一看,内心顿生鄙夷,这特码明明是后台的问题,你找我一个做前端的弄啥咧。但是为了顾全同事间的革命友谊,我还是会笑呵呵的说好啊好啊,我先调查一下,如果不是我的问题,我转给其他人。

chengxuy

也难怪,隔行如隔山。这几天后台有不少同学问前端后端前台后台的概念,今天我就冒着被组织追杀的危险,跟大家聊一下程序员每天在忙啥,你会看到,不同岗位的程序员,工作上到底有什么区别。

要理解程序员不同的岗位,首先你得看下市场上有什么样的需求。用户上网、打开APP,本质上是在获取信息。信息就是数据,数据在哪里?数据在服务器上。我们之前讲过,互联网一切皆下载,下载的就是服务器上的数据。不同的数据有不同的展示形式,视频数据会用视频播放器来播,网页数据要用浏览器来看,朋友圈里的新动态,要用微信APP来展示。所以你看到了,整个过程需要两拨人合作完成。一拨人负责管理数据,一拨人负责展示数据。这也就是最简单的前台和后台的划分。那些整天守着服务器捣鼓数据的,是后台开发。那些整天琢磨如何做出花里胡哨的展示界面的,是前端开发。

先说说前端开发。前端开发概念比较广,用户直观看到的东西,都属于前端开发的范畴。现在比较流行的有三个,Web前端开发、Android终端开发、iOS终端开发。

Web前端开发

1

这些人整天和浏览器打交道。昨天的文章讲的ChromeDevTools,就是他们天天用的东西。他们写出来的代码,要放到浏览器里去运行,然后就成了你看到的各种网页。但是你不要以为人家只是一做网页的,这几年大有Web前端一统江湖的趋势,因为他们写的代码不需要发布版本就能上线,不信你可以查看前面关于ReactNative的文章。如果哪天你也想写写代码体验人生,建议看看Web前端的知识,之前讲过简单的HTML+CSS+JavaScript,学着敲一下,然后打开浏览器看看效果,你会发现其实人人都可以当程序员。

Android终端开发

2

他们个个都是爬墙高手,因为他们的老大哥被关在了墙外。他们个个油光满面,大好青春都浪费在了无穷无尽的机型适配上面。他们用Java语言写代码,但是Java语言天生相比很多语言执行速度慢,所以他们天天被用户吐槽卡顿,但是没有办法,只能不停的优化再优化。

iOS终端开发

3

iOS开发血统纯正,一般人手一套Mac+iPhone,光是生产设备就要上万。他们的开发工具叫XCode,号称最优秀的编程工具。程序界有句名言叫不要重复造轮子,意思是别人已经写过的代码,就不要重复写,直接拿来用。iOS这么多年,有很多轮子可以用,都在Github上。本来要一个星期做完的功能,用好Github可能一下午就实现了。所以我们说,我们不生产代码,我们只是Github的搬运工。当然这个是不会轻易告诉产品经理的。

在介绍后台开发之前,我们先来看看后台服务器面临的困难。你的产品刚刚上线,只有几十上百个用户的时候,你只需要一台PC,加上稍微快点的网速,随便下载个开源的服务端软件就能勉强应付得来前端的数据请求。后来你下血本搞运营,引来了一大波用户,达到成千上万级别的时候,你就得租一台正儿八经的服务器了。再后来,用户量呈指数上涨,你开始幻想从此登上人生巅峰的时候,忽然发现无论有多少台服务器,总是没办法快速响应前端的请求。

4

后台开发就是来解决这样的需求的。为了让各个服务器同时并行工作,他们研究分布式算法,把大任务拆成小任务,分布给各个服务器单独运算。为了提高数据库的存取速度,他们研究非关系型数据库,也就是NoSQL,把它们用在社交、O2O应用的后台。为了解决硬盘速度远远跟不上内存速度的问题,他们研究缓存技术,简单来说就是数据从硬盘里取出来就不放回去了,这样下次还用就不用再去硬盘取了。当然,也有一些后台开发专注于业务逻辑,前端想请求什么样的数据,大家坐在一起商量一个协议,他们负责写个接口,前端来调用就是了。

还有一种被称为科学家的程序员,他们天天看论文搞学术,不参与实际的产品开发,但是每发一篇paper都能搞一个大新闻出来。我们今天习以为常的东西,比如程序的运行编译,计算机的架构原理,都是几十年前的科学家程序员摸索出来的。也许几十年后,现在看起来高大上的机器学习、自然语言处理等技术,会成为每个程序员的必修课。

当然,程序员远远不止这些,限于篇幅仅仅列举互联网行业的一些代表。最后,如果你发现你身边有这样一个人,他前端后台,样样精通,文能提笔发paper,武能调试除bug。请不要害怕,这种人叫做:全栈工程师。