Asaf Yigal是Logz.io的联合创始人与产品副总裁。在Logz.io以前,Asaf与他人联合创立了Currensee,这是一个社会化交易平台,后来在2013年被OANDA收购。在 Currensee以前,Asaf在Akorri负责管理和开发一款端到端的性能监控平台,在Onaro开发过一款存储资源管理平台。后来,Akorri 与Onaro都被NetApp收购了。在Onaro以前,Asaf在以色列海军带领一个研究团队,从事人工智能系统的开发与军事化应用相关工做。近 日,Asaf撰写了一篇文章,谈到了他对于全栈工程师的认识与理解。前端
你经常据说“全栈工程师”这个叫法吧,不过这到底表示什么意思呢,你以为本身应该成为一名全栈工程师么?下面咱们就来探讨一下这个话题。在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等容器技术。这些平台、服 务与框架都拥有自身的特性。所以,一我的几乎没法成为可以掌握全部技术的全栈工程师。网络
通才与专才前端工程师
在当前的环境下,成为全栈工程师的好处在于没多少人拥有足够的知识、经验与沟通能力来总体把控使用了各类平台与框架的项目,如HTML五、机器学习 及Scala等。所以,高水准的全栈工程师老是供不该求的。不过,坏处则在于对于全栈工程师来讲,他须要可以熟练掌握这些组件,但这是很是困难的事情,况 且将来还会有新的技术涌现出来。你可能很聪明,但这些组件自己倒是很是复杂的,每几个月都会出现新的语言和平台。要想时刻保持技术上的领先是一件极其困难 的事情。出于这个缘由,专才拥有本身独特的优点。组织倾向于雇佣专门的角色,所以相比于其余开发者来讲,专才在深层次的知识以及某个狭窄领域的经验上会更 胜一筹。框架
全栈工程师的薪资
不管选择在前端仍是后端进行深刻学习,抑或是将本身定位成一个全栈的通才,从工做前景上来看都是好的。根据美国劳工统计局发布的统计信息来看,软件 工程师是将来10年最具发展潜力的职业之一。2014年,大约有718,000名软件工程师;从全国范围来看,其平均薪资大约为$95,510。这个数字 将来还会继续攀升。那么,到底什么才是最好的工做呢?这取决于你的背景、经验与目标。前端工程师须要掌握以下技能:
HTML与HTML5
CSS、CSS3与SASS
PHP
JavaScript
jQuery、Angular.js、React,js与Node.js
Websockets与Ajax requests
浏览器开发工具与调试器
Python
Git
后端开发者应该精于服务端编程、语言与框架,如:
C与C++
Python
JavaScript
Ruby on Rails
PHP
Perl
Node.js与Express
MongoDB
Postgres
MySQL与NoSQL
Git
Web APIs
Go
若是想要向着全栈工程师的方向迈进,你应该掌握不少知识与技能,而且熟悉上面提到的各类组件。此外,还要提高本身的我的沟通技能,这样才能管理并与 前端与后端开发者实现较好的协做。好消息是将来对于每一类Web开发者来讲都是光明的,不管是前端、后端,仍是全栈。要坚持学习一切有价值的东西;掌握新 的框架、语言与平台;而且与开发者同事及最终用户保持高效的沟通。在这种状况下,不管世界发生什么变化,你都会始终立于不败之地。