RomeoMo

种一棵树最好的时间是十年前,而后是现在

**说明:**本文来自SitePoint,作者:Tim Evko

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

Web开发者是由多种职位构成的。你可以是前端开发者,用户体验设计师,软件工程师,或者是后端开发者。如果这样说太笼统了,你也可以自称为JavaScript 专家,Bootstrap 开发者甚至是Node 明星。 在Web开发中包含着无止境(甚至是奇怪)的职位名称。那么,为何会有这么多职位的存在?它们的存在是由于在建设Web时某个职位只能做很少的事情。过去在前端和后端开发者之间有着一条明显的分界线。同样这些种类也有自己的分支。前端开发者专长于CSS或者工作在基于UI设计的JavaScript,然而后端开发者专注Ruby或者其他语言。这样在Web开发者中产生了很多争论。如果你想在领域中取得成绩,你应该专注于那些方面?需要专注所有方面吗?需要成为在前端和后端环境都突出的全栈开发者,还是杰出于在某个方面?

雇主的要求

我认为真正的问题在于单一类型的开发者是否更容易雇佣。基于这种想法,有意义的回顾一下以及试图找出当前雇主的要求。

随着Web发展,雇主希望熟悉于更多技术和框架的开发者。这是由于站点变的越来越变幻莫测,并且在原生应用以及浏览器应用的程序之间的分界逐渐模糊。正如我工作的公司,越来越多的用户要求网站胜任现代的Web应用,而不仅仅是单传的静态站点。

那些主要以静态为主的网站,其在持续减少对Web开发者的需要。事实上,其中几个公司的产品能符合建立静态站点商城的需求,使客户能够创建自己的网站,而自己无需编写一行代码。WordPress.com、Squarespace,和Wix,这些都能降低成本,每个平台都有简单的学习曲线和普通的UI。不要求编程能力。

然而我不认为这些站点能在商业上使用,我很确定它们降低了HTML,CSS和JavaScript 能力的价值,同样我认为雇主开始意识到这个问题。他们开始寻找懂得整个架构的更全面和更有经验的开发者,从下拉菜单样式到部署服务器。

然而,我不认为真正的全栈开发者是实际存在的,我相信了解整个架构的开发者更容易被雇佣。而这并不意味着你需要知道Web开发的方方面面。取而代之的是,我认为应该有清单能让每个开发者开发的去学习,并且随着时间逐渐提高。

清单

Javascript Jabber 最近放出的播客就是专注于这个话题。他们列出了大量的技术要求Web开发者应该知道的。我总结了一下最重要的技能列表如下。

  • HTML, CSS, Javascript
  • 一门后端语言
  • 版本控制
  • 命令行使用
  • Node/Ruby 工具
  • 客户端MVC框架
  • 流行的工具和框架,例如Angular,Laravel,Rails等
  • 数据库知识
  • 服务器知识
  • 站点部署策略
  • 搭建和使用REST API
  • 响应式Web开发
  • 易用性
  • 代码测试

这有另外一张Louis Lazaris的清单。虽然有一些年份了,但其中很多技术现在依然很常用。

不要害怕

看到表中列的技术,你应该开始意识到,最基本的,应该听过它们之间的绝大多数。 此外,没有人能精通每个Web开发工具或者技术。反而,我们应该开放的去学习Web开发,尽可能的知道更多的技术和工具。

还有记住普遍水平的了解技术就已经很好了。比如开发者能熟练运用复杂的CSS布局,同样也能通过JavaScript 增加一个新的功能。一些公司或者机构由一个开发者写前端代码,另一个写后端。如团队基础的工作流就很好,这能让开发者大致了解其他部分的工作。

总结

以某些具体的工具或者技术为中心的思想会产生不良影响以至于组织技术的提高。随着Web技术的发展,要求Web开发者需要更多的懂得整个架构。我们依然有在特定领域做的更好的自由,但是正如排版变得越发容易以及交互性的更大的需求,基本的前端技能以及应用开发会受到更多的追捧。听到雇主雇佣全栈而不是专业的开发者可能会令人不安,但Andy Shora的结论揭示了这样的状况。

的确,没有人能指望你能从前端到后端,开始到结束只靠一个人完成。同样你也不应该为提这样需求的人工作。如果你熟练五到十种技术/工具,同样也有意愿去了解其他100多种你不熟悉的,那么你就是高价值的商品了。

**说明:**本文来自SitePoint,作者:Adam Bretz

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

自从1995年发布以来,JavaScript 有了很大的发展。我们已经看到了ECMAScript 规格的几个重要版本及单页Web应用的崛起,这些都被客户端的JavaScript 架构支持。起初,所有的JavaScript 开发和创新都只能在浏览器实现,这是由于浏览器是支持这种语言的唯一环境。随着时间的推移,Web开发者开始意识到JavaScript 的很多实用的特性(没有块级作用域,事件驱动以及与许多其他语言相似)使其能对其他环境而不仅仅是浏览器。这促使JavaScript 社区进行了第二轮创新最终使JavaScript 运行于服务端和数据库。

突然,了解JavaScript 不会把你自动归类在“前端开发者”中。如果你熟悉这门语言,你能建立服务器和数据库,以及丰富前端用户体验。现在,第一次有了开发者能通过只用JavaScript 就能建立整个Web应用。这种趋势常常被称为“全栈的JavaScript”或“纯JavaScript解决方案”。组合了四种流行的JavaScript 技术:MongoDB, Express, AngularJS, and Node.js 建立Web应用受到欢迎了,这被成为“MEAN 全栈”。

MEAN

  1. MongoDB - MongoDB 是一种NoSQL的数据库。它是一种文件导向数据库管理系统, 而不是由行、列和表格组成的。主要用于存储JSON 数据;这完美契合由JavaScript 编写的应用。数据的关系性操作和严厉遵守图式的缺乏,这使MongoDB 具有快速,伸缩性强及易用的特性。
  2. Express - Express是一种轻量级的服务器级框架,被用来使Node 搭建的Web服务更简单及更强的可维护性。框架的灵活性提供给开发者高度的可定制性以及足够“低端”的用于操作Node 框架。Express 提供简单方式使用路由,cookie管理,静态文件服务和其他HTTP模块用于搭建企业级的服务。
  3. AngularJS - AngularJS 是一种客户端富应用的MVC JavaScript 框架。它可用于建立健壮的和复杂的单页Web应用。双向数据绑定和基于HTML的框架语言。AngularJS 也有称为“命令”的特性允许你拓展HTML的新的属性,甚至是新的元素。AngularJS 同样也经过了高强度的测试,这可能不会成为开发的有趣方面,但这对于AngularJS 来说是重要的并且经常管理客户端代码。最后,AngularJS 提供了协议和最佳实践用于帮助开发者建立客户端的解决方案。
  4. Node - Node 是JavaScript 的运行环境用于建立服务及网络应用。它提供了在客户端的所有JavaScript 的特性并且加入了文件以及网络I/O。Node使用了Google 的V8引擎(同样也用于Google Chrome)用于执行JavaScript 。其同样也是非常活跃的开发者社区和Node 模块的生态系统(Express就是其中一个模块)的基础。与此同时,也有很多其他在客户端的JavaScript 实践,到目前为止,就粉丝和大公司而言都成功采用的。

如果你像我一样都是JavaScript 的粉丝,你应该兴奋于只用JavaScript 就可以建立整个Web应用的前景。MEAN全栈是相当受欢迎的话题,在网络上也有很多如何开始这些技术的信息。事实上,有很多关于这项技术的信息,仅仅是有关“开始”的就可以“令人畏惧”。

译者按

最后作者介绍自己和Colin Ihrig共同编写的“MEAN全栈”书籍 有兴趣的朋友可以关注一下。

正如作者所说,仅仅使用JavaScript 就能建立这个Web应用是一件令人兴奋地事情。

更新

时间: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之类的开发方法成为软件开发公司必不可少的部分时,代码开发者和管理者,谁负责代码部署和设置的之间的界限会越来越模糊。

折腾了半天的hexo(时间肯定大于半天)终于搞定了。本人的博客是自己关于技术、生活,工作等等的感(tu)悟(cao)。所以想看就看,不想看就直接用Command + W 关闭本页面。

0%