普通程序员该如何进阶为全栈工程师?

如何成为一名全栈工程师(full stack developer)?互联网最热的话题之一。LinkedIn, Facebook上标榜本身是全栈工程师的人也愈来愈多,彷佛正在成为IT行业的新潮流和新趋势。Full Stack的概念早已不新鲜,广大开发人员之间对”全栈”类话题的讨论也从未中止。曾经看到过一篇关于全栈设计师的文章,毁誉参半。有的人认为全栈只是一个头衔而已,真正的仍是看我的的能力和技术。php

中国有句老话:鱼和熊掌不可兼得。而相似全栈工程师,全栈设计师这类的职业,彷佛正在挑战这一可能性。由于他们横向发展的技能树赋予了他们鱼和熊掌兼得的能力。而国外对于全栈型人才,有这么一个说法:Jack of all trades, but master of none. 翻译成中文就是无所不能便一无所精。如何避免成为广而不精的全栈工程师,是广大想要成为全栈设计师朋友们须要深刻考虑的一个问题。前端

本质上来说,这个话题实际上是对互联网行业“技多”是否等于“全栈”,“深度”和“广度”哪一个更重要的一场深层次的讨论。node

1. 什么是全栈工程师?python

what is a full stack developer.png

全栈工程师,也叫全端工程师,英文Full Stack developer,是指掌握多种技能,并能利用多种技能独立完成产品的人。                       git

Quora上有人提出了这个问题,其中一个高票回答是:程序员

全栈工程师是指,一个能处理数据库、服务器、系统工程和客户端的全部工做的工程师。根据项目的不一样,客户须要的多是移动栈、Web栈,或者原生应用程序栈。                                  github

其实,“全栈”指的是为了完成一个项目,所须要的一系列技术的集合。“栈”是指一系列子模块的集合。这些软件子模块或者组件组合在一块儿便可实现既定功能,再也不须要其余模块。web

2. 为何全栈工程师会存在争议? redis

fullstack-developer.jpg

上面提到过,全栈工程师的争议在于对技能深度和广度的探讨。特别是在OSCON会议上,一名Facebook的工程师说他们只聘请“全栈(Full stack)的程序员。”此话题一出,更引发了你们对成为全栈工程师的优点与劣势的热烈讨论。 mongodb

优点:全栈工程师的技术发展是横向的,涉猎技术很广,能快速的运用他所掌握的技术知识开发出产品原型。由于他们视野更宽阔,思惟更活跃,对技术和产品都十分敏感,对于任何技术或设计,他老是有话可说。能够对团队中的每个人都提供有益的帮助,能大大减小团队人员沟通、技术对接的时间和技术成本。因此他们当中,不少人成为了创业者或者在创业公司担任技术合伙人。

劣势:正是因为横向的技术发展,致使全栈工程师每每博而不精。大多数自称为“全栈”的工程师,都停留在一种浅尝辄止的“略懂”的境界。至于具体如何实现,如何让架构更适合后面阶段的模块化开发,那就真不知道了。

3. 即使如此,仍有人在问,如何成为全栈工程师? 

一个合格的全栈开发人员应具备在构建应用程序时涉及的全部方面的功能知识和能力。

1) 掌握多门编程语言

你须要精通多门编程语言,JAVA 、PHP、C#、Python、Ruby、Perl 等,由于你的大多数核心业务处理都须要用这些语言来写。你既要掌握这些语言的语法,又须要很是熟悉如何基于这些语言进行项目的架构、设计、实现以及测试。

       在哪学Git / GitHub-你必须掌握如何使用Git来管理和分享你的代码。

full stack web developer.png

2) 运用开发框架和第三方库

流行的开发语言,通常都伴有出色的开发框架,好比JAVA的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等。

     在哪学:Courses.AngularClass.com

                  15本免费的Python电子书

3) 前端技术

前端技术在今天的项目和产品研发过程当中变得越发重要。除了实现产品功能,用户体验也是检验产品是否成功的标准之一。而这都依赖于前端技术的实现,你至少须要掌握 HTML五、CSS三、JavaScript 等基本前端技术,同时进一步学习 JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方库。

       在哪学:You don’t know JS

4) 数据库与缓存

任何产品或项目都须要一个数据库来存储数据。做为全栈工程师,你也须要至少掌握一到两个数据库,并知道怎样与数据库进行交互。目前流行的数据库主要有MySQL、MongoDB、Redis、Oracle、SQLServer等。MongoDB做为文档型数据库,在互联网产品中正被愈来愈多地使用,对于规模稍大一些的项目,我仍推荐使用MySQL或商用的Oracle做为后端数据库。而Redis这样的内存数据库则能够用于缓存,以提高系统的性能。

         在哪学:MongoDB MERN教程系列

                       Redis 教程

5) 基本设计能力

大部分关于全栈工程师的文章或讨论中都不多涉及到设计能力的要求。但我却认为这项技能很是重要,基本的原型设计,UI设计,UX设计都是须要了解的。

        在哪学:Mockplus博客

full stack designer vs. full stack developer.png

6) 除了良好的开发技术知识,自我要求也是全栈工程师必备的因素:

全局性思惟

良好的沟通能力

创造力

好奇心

时间管理能力

总结

根据格拉德威尔的一万小时定律,但愿熟练的掌握前端、后端、客户端方向的知识内容,天天都花时间来钻研也得花10年左右的时间。因此,全栈工程师决不是一晚上练成的,你须要打好技术基础,强化核心技能,并持续学习才能应对更多的挑战。

相关文章
相关标签/搜索