更新

时间:2019年9月18号
说明:更新图片,原文链接链接已失效,更新备用链接

说明:本文来自SitePoint备用链接,作者:George Fekete

文章版权属于原网站/原作者。我依旧只是个搬运工+不称职的翻译。

成为Web开发者进入Web开发领域的门槛依然很低,但Web开发变得越来越复杂。

整个行业的动态特性使需求常常转移到最受欢迎和“下个更好”的工具以及编程语言。

从前开发者只需一种编程语言或者掌握某特定流程的要求已经一去不复返了。现在为了做更棒的事情,开发者需要了解跨领域的大量知识。

全栈工程师意味什么?

全栈指的是工程师能懂得后端及前端的技术。

更详细的说,这意味着开发者能在PHP, HTML,CSS,JavaScript以及它们之间进行工作,并且能把PS的设计转化成前端代码

全栈工程师不需要成为所有领域和技术的大家,因为这几乎不可能。他只需要能在这些技术上掌握的知道即可,但这也是很多事情需要去做。

全栈在2000年和现在意味着什么?

being-full-stack-developer

2000年已经是很久之前了,当时PHP 4.0才发布。是的,4.0。回到当年,一个优秀的开发者知道一些HTML,CSS和一点过程式的PHP,因为直到5.0版本才出现合适的面向对象。

LAMP (Linux – Apache – MySQL – Perl/PHP)框架在那些年处于统治地位,只有很少或根本没有其他选择。在21世纪初,如果有人使用版本控制会被认为不是技术极客就是巫师。但这现在很少能听到了。

所以,我们划分现在全栈工程师需要掌握的关键技术:

系统管理

  1. Linux及基本的shell命令
  2. 云计算:Amazon, Rackspace等
  3. 后台处理:Gearman, Redis
  4. 搜索:Elasticsearch, Sphinx, Solr
  5. 缓存:Varnish, Memcached, APC / OpCache
  6. 监控:Nagios

Linux驱动着绝大多数的网站,这在Web开发上是事实上的操作系统(这里不讨论.NET)。此外,全栈工程师应该知道如何使用云进行工作,Amazon/Rackspace等供应商都提供了API。

搜索在大部分的网站上是必须的部分。开发者需要直到如何建立以及使用如Sphinx或Elasticsearch的搜索服务。

缓存同样很重要,比如Varnish-反向网站快取服务器, Memcached及opcode缓存。全栈工程师需要知道这些是什么及如何使用。

Web开发工具

  1. 版本控制:Git, Mercurial, SVN
  2. 虚拟化:VirtualBox, Vagrant, Docker
  3. 现在,不做版本控制是不能接受的,即便是单人开发也是如此。

使用虚拟化工具,在每个项目的基础使用单独的开发环境是容易获得的,至少在建立VirtualBox和Vagrant是很容易的。

如果你想在Vagrant上进行工作,Ruby和shell的基本命令是必不可很少的。

后端技术

  1. Web服务器:Apache,Nginx
  2. 编程语言:PHP,NodeJS,Ruby
  3. 数据库:MySQL,MongoDB,Cassandra,Redis,SQL/JSON
  4. Apache和Nginx是Web开发的基准。全栈工程师应该知道如何建立这些应用使之服务于网站。

PHP是需要熟练掌握的,NodeJS,Ruby同样也需要掌握。

除了Web服务器和编程语言外,数据库管理也是全栈工程师需要击败的野兽。

全栈工程师需要知道关系型数据库(比如MySQL, PostgreSQL)与非关系型数据库(例如MongoDB, Redis或者Cassandra)的区别,同样也需要知道XML / JSON的语法。

前端语言

  1. HTML / HTML5: Semantic web
  2. CSS / CSS3: LESS, SASS, 媒体查询
  3. JavaScript: jQuery, AngularJS, Knockout, etc.
  4. 浏览器兼容性
  5. 响应式布局
  6. AJAX, JSON, XML, WebSocket

有趣的是,如果你想更好的呈现网站,最好知道浏览器的怪癖。

JavaScript在早些年就是个笑话,但现在发展成为最流行和强大的语言。每天都会有新的方法论和框架提出,MVC, MVVM,MVP,Angular,Knockout, Ember等等。

和HTML,CSS, JavaScript一起,全栈工程师应该知道响应式设计和使用媒体查询进行工作以及CSS预处理程序,例如LESS和SASS。

使用AJAX或WebSockets与后端进行通信也是必须知道的。

设计

  1. 网站设计转换成前端代码
  2. UI
  3. UX

除了前端技术,全栈工程师应该知道根据设计(Photoshop/Illustrator文件),那些是可以使用HTML/CSS/JavaScript进行转化而那些不能。

开发者可以不了解或者不使用提到的很多技术,比如Ruby或者是特定的Javascript库,但是它们之间都是相连的。

比如,如果你需要知道Ruby命令才能建立Vagrant, 最基本的,比如你想操作DOM元素,jQuery是值得了解的。

移动端技术是另一个值得提到的种类。这是一个充满活力的行业并且接近于Web开发。

  1. iOS
  2. Android
  3. 跨平台:PhoneGap, Appcelerator

现在Web和移动开发的鸿沟依然很大,但这个差距在迅速逐渐缩小。

全栈工程师同样也需要知道这些技术。

成为全栈工程师会更好吗?

成为全栈工程师意味着队新技术抱有开放的态度,对此亲力亲,并且懂得使一个Web应用从概念设计到最终的产品发布。

“全栈工程师”的理念并不意味着在所有游刃有余于所有的技术,毕竟专门化的存在是有原因的。它更像了解不同领域,能够聪明的与团队成员进行交流,并且成为解决方法的资源。

全栈工程师会在未来的Web开发中扮演越来越重要的角色,特别是例如像DevOps之类的开发方法成为软件开发公司必不可少的部分时,代码开发者和管理者,谁负责代码部署和设置的之间的界限会越来越模糊。