GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

1.3.3 全栈程序员

一个好的系统不可能割裂前端与后端,工程师的职责是解决问题,既然问题往往横亘于前端与后端之间,那为什么不可以让一部分工程师兼顾前端与后端呢?于是就有了全栈工程师(也叫全栈程序员)。

Q&A 什么样的人才可以被称作全栈程序员呢?或者说具备了怎样的知识和技能才能成为一个合格的全栈程序员呢?

懂后端:包括服务器端的逻辑实现,也包括数据库、缓存、分布式队列的使用和设计,以及各种后端环境的搭建和部署。

懂前端:包括用户界面的开发、用户体验的优化,还有各种前端开发环境的搭建和部署。

懂设计API:最主要的是前端和后端交换数据的API,也包括模块与模块之间的API。

懂质量保障:通俗地说就是测试,不单是编写测试用例和手动测试,同时作为程序员也要让自己的代码易于测试。

懂信息安全:千里之堤溃于蚁穴,在用户隐私数据重于泰山的当下,用户体验再好的应用也经不住一次信息泄露。

有的读者可能会觉得:这怎么可能呢?只专注于一个领域尚且不能精通,又如何能掌握全部的全栈技术呢?

根据著名技术网站Stack Overflow在2016年对程序员们做的调查报告[4],全栈程序员的数量已经达到28.8%,远远超过后端程序员的12.2%,移动客户端开发的8.4%,前端程序员的5.8%。

很多程序员信奉“凡是现实的东西都是合乎理性的,凡是合乎理性的东西都是现实的。”[5]这份调查报告则清楚地表明全栈开发不仅是现实的,而且是合乎理性的,并且正力压程序员的其他工种,成为一个新的程序员就业热点。

当然,如果用均等的精力去面对这些技术,的确很难做到全部精通。要有侧重点,在其中两三个重要领域做到精通。那不精通的领域怎么办?在这些非精通领域就要注重方法,而不是一味地追求细节。目的是解决问题,而不是成为一个JavaScript明星或者数据库大师。

对于全栈工程师,什么是所谓的方法呢?抛开各种具体的技术和编程语言,作者认为最重要的就是应用程序接口即API的设计、实现以及使用。