全栈工程师修炼手册

你常常听说“全栈工程师”这个叫法吧,不过这到底表示什么意思呢,你觉得自己应该成为一名全栈工程师么?下面我们就来探讨一下这个话题。


在Web与软件开发的世界中有3个基本的关注点:前端、后端与全栈。我们先来看一下他们的含义。

何为全栈工程师?

前端工程师:

在打开一个网站时,屏幕上的一切都属于前端。前端工程师负责创建用户界面背后的代码。这些工程师不仅要熟悉HTML、JavaScript与CSS,还要掌握很多框架。这些框架有Foundation、Angular JS、Ember JS、Backbone及Bootstrap等等。前端工程师要与设计师和其他专家协同工作,从而将网站从模型转换为可使用的模式。

后端工程师:

在你每天所访问的网站背后有服务器网络、数据库以及各种应用,他们相互协作将你所请求的网页与数据传递给你。后端工程师负责构建这些组件。

他们要擅长各种编程语言,如Python、.Net、Ruby、Java及PHP等等,从而通过这些语言来编写程序。他们还需要使用各种数据库程序如MySQL、SQL Server及Oracle等来操纵信息并将其传递给最终用户。后端工程师需要与组织中的各种经理及其他成员通力配合来完成工作。

全栈工程师:

全栈工程师既要了解后端开发,也要了解前端开发。他们是“全方位”的工程师,熟悉服务端的同时又懂客户端用户体验。全栈工程师理解Web开发进程的每一个方面,同时又会就整体策略与最佳实践对相关干系人提出建议与指导。

角色演变

在早期的桌面计算时代,我们常常会看到一个人就完成了整个应用的开发工作。随着程序变得越来越复杂,以及越来越多的技术涌现了出来,一个人很难再完全掌控应用开发的各个方面。

在21世纪初期,一些拥有专业化技能的专家开始出现。由于复杂性的持续攀升,当Web 2.0站点开始出现时,很多程序员又回到了更简单的方式上来。相比于构建复杂的数据库和企业计算网络,开发者开始部署稳定的LAMP栈(Linux、Apache、MySQL与PHP),并创建出了灵活的面向对象语言,如Django与Ruby on Rails。在这种环境下,全栈工程师的价值变得越来越大,因为他们熟悉大多数现代框架与语言。

运维复杂性的回归

不过,由于移动计算与iOS和Android平台的兴起,我们又回到了复杂性的新时代:低成本的云服务器如Amazon Web Services和微软的Azure、MongoDB等数据库、Node.js与Angular.js等前端技术、Docker等容器技术。这些平台、服务与框架都拥有自身的特性。因此,一个人几乎无法成为能够掌握所有技术的全栈工程师。

通才与专才

在当前的环境下,成为全栈工程师的好处在于没多少人拥有足够的知识、经验与沟通能力来整体把控使用了各种平台与框架的项目,如HTML5、机器学习及Scala等。因此,高水准的全栈工程师总是供不应求的。

不过,坏处则在于对于全栈工程师来说,他需要能够熟练掌握这些组件,但这是非常困难的事情,况且未来还会有新的技术涌现出来。你可能很聪明,但这些组件本身却是非常复杂的,每几个月都会出现新的语言和平台。要想时刻保持技术上的领先是一件极其困难的事情。出于这个原因,专才拥有自己独特的优势。组织倾向于雇佣专门的角色,因此相比于其他开发者来说,专才在深层次的知识以及某个狭窄领域的经验上会更胜一筹。

全栈工程师的前景

无论选择在前端还是后端进行深入学习,抑或是将自己定位成一个全栈的通才,从工作前景上来看都是好的。以北京为例,2017年北京全栈工程师的平均收入为20K,但是仍有75%的用户觉得此数据偏低。

从简单的雏形到完美的成品,全栈工程师通常被认为是万能多面手,那全栈工程师到底做什么呢?

全栈工程师需要哪些技能

为了在激烈的市场竞争中占据一席之地,全栈工程师需要不断学习各方面技能,主要包含以下方面:

服务器管理/DevOps

程序员必须具备基本的服务器管理能力,包括并不限于以下知识:

1.在非GUI环境中,通过终端连接远程服务器

2.会写Shell脚本编程

3.服务器上的用户和群组管理

4.管理Apache和Nginx等服务器程序来提供应用

5.管理防火墙和权限

6.安装及更新软件

除了这些基本功,程序员还需要懂得如何通过Docker或虚拟机来创建完善的、运行良好的独立开发环境;以及熟练操作版本控制系统,以便可靠地生成备份和可共享的协作代码库,来根据时间追踪代码变化。 

云端/Cloud

除了物理服务器与虚拟服务器外,全栈工程师还需要了解云端,例如Google Cloud、Azure、AWS等。 

虽然很多工具或平台可能不会立即应用,但长远看来,熟悉每个人都在讨论的服务可能会派上大用途,客户可能随时要求更换服务端,所以需要早做准备。

后端/Back-end

除了需懂得选择哪种语言,还应该熟悉: 

1.与运维紧密相关的Web服务器,如Nginx和Apache

2.NodeJS会将JavaScript,CSS编译为静态文件,用PHP可以避免NodeJS的问题

3.依赖管理工具的使用,比如PHP中的Composer

4.良好的API设计,当前大多数网站是基于API的,很少有独立的前端交互

5.对性能提高非常重要的搜索引擎使用

6.用Gearman类工具,Crunz等库进行Cronjobs及后台作业

7.缓存技术非常重要,使用Varnish,Redis或其他工具分片存储数据

数据库/Database

除了需掌握架构稳定的关系型数据库,如MySQL , PostgreSQL,一个全栈工程师还应该对非关系型数据库熟练应用,如MongoDB, Redis, Cassandra,更不用说Neo4j这样的图形数据库了。

数据库是在服务器上的,需要全栈工程师的控制,同时也存在远程解决方案,比如Mongo类的RestDB或Google的Firebase等。

前端/Front-end

说到前端,技术栈可能比较混乱。作为一个全栈工程师,你需要了解:

1.NodeJS和 NPM

2.Yarn

3.预处理器和编译器(如Babel),用来编译 Typescript, ES6, LESS, SCSS, SaSS

4.构建和任务执行工具,如 Grunt和 Gulp

5.框架,如 VueJS、React、Angular

6.模块打包工具,如 Webpack、Browserify、Rollup

设计/Design

开发者需要知道产品在转为可用的HTML、CSS代码前应如何画原型,然后用JavaScript进行交互,在后端用虚拟数据做模拟测试,只有当原型图完成,用户体验和交互界面设计完成,产品才可以开始真正的开发。所以设计本身就是非常巨大的挑战,需要使用一套特殊工具:

1.Photoshop ,Illustrator或一些开源工具如 Gimp , Inkscape等。

2.好用、快速的编辑器,比如 Atom或 Sublime Text

3.背景选择器,如Subtlepatterns和匹配颜色的颜色选择器

4.CSS的栅格系统

5.用于JavaScript模拟的相关知识

6.把原型图放到网上供用户查看和反馈的方式,比如Ngrok

日志

为了有效的监控应用的健康度,开发者需要追踪错误,找到这些日志并找出其中有价值的信息,还需要预测一些趋势,比如需要注意CPU及I/O占用率的上涨,以防服务器突然崩溃。这些和运维有一定联系,也需要掌握更多专门的技能

移动端

最后说到移动端,随着 iOS和安卓的webview变得越来越高效,以及PWA(渐进式web应用)的到来,原本的应用逐渐不再流行,因为他们开发起来过于复杂。所以一个全栈工程师必须了解 PWA或 React Native,或NativeScript、Tabris、Cordova、Phonegap等好技术开发出基于API的客户端。

看完上述技能要求,全栈工程师是否仍然吸引着你?

需要注意的是其实大多数全栈工程师并不是精通所有技术,也会在某些方面有所偏重,毕竟每个人的时间与精力都是有限的。全栈开发工作可能无法使人成为某一领域的专家,但却能让人很好的了解整个产品流程、项目需要的全部技术、以及对项目有更高层面的理解。 

如果想要向着全栈工程师的方向迈进,你应该掌握很多知识与技能,并且熟悉上面提到的各种组件。此外,还要提升自己的个人沟通技能,这样才能管理并与前端与后端开发者实现较好的协作。

好消息是未来对于每一类Web开发者来说都是光明的,无论是前端、后端,还是全栈。要坚持学习一切有价值的东西;掌握新的框架、语言与平台;并且与开发者同事及最终用户保持高效的沟通。在这种情况下,无论世界发生什么变化,你都会始终立于不败之地。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 2016年4月10日,在一个春暖花开季节、阳光明媚的早晨,我完成了人生中第一个全程马拉松比赛:42.195公...
    3只青蛙阅读 829评论 0 7
  • 梅是我妈妈的姓,杜蘅是古书上记载的一种香草。不起眼,但中医用它来治病。有《楚辞》中“香草美人”的意味。
    梅杜蘅阅读 297评论 1 1