全栈开发:2017年你最好的选择

作者丨Naren Arya
翻译丨 Mofei

前言

大家好。

大家经常讨论的话题是作为一个软件工程师是一个持续学习的过程。因为现有的趋势和技术在软件领域会很快过期,每个人都要做好随时做出改变的准备。这将会是一个持续而单调的过程,放松对于我们来说是奢侈的。

在招聘市场上会有很多开发和工程师的工作,尽管数据科学和分析、大数据专家、AI专家在最近三年已经上升了很多,但是还是没有和全栈开发或者全栈工程师的需求在一个数量级上。

在IT领域,除掉一些专业性的领域,只有几个是最热的。什么原因呢?这是由于某些技术的饱和以及很多创业公司挖掘新的业务导致的。

创业公司和微服务爆炸式的增长引起了一系列技术人员需求。在这些里面,全栈工程师就是其中一个。

为什么全栈工程师这么受欢迎

公认的全栈工程师的定义是:“全栈的意思是开发者能够熟练的掌握前端和后端的开发技术”。

从技术的角度来说,这并不是行业设定的标准,这是技术进化的一面。一个全栈工程师经常努力去学习开源的技术去应用到他/她的工作当中。

我认为全栈工程师是一个以下技能的简化组合:前端开发+后端开发+开发运维+设计。为了做一个web应用,一个全栈工程师应该知道怎么样去配置,优化,自动化部署应用。

全栈工程师是一个广度优先搜索

如果你学过图论,你应该遇到过图的遍历算法,每个学计算机的人都应该知道这些。

BFS(广度优先搜索):一种首先搜索根节点所有的临近节点,再递归进行搜索的遍历算法。
DFS(深度优先搜索):一种首先搜索根节点最大深度的节点,再回来继续按同样的方式搜索其他节点的算法。

那么,你学哪一种?DFS还是BFS?

这是一个个人的选择问题。一个博士生可能更倾向于选择深度优先学习方法因为他/她可以缩小他们的工作范围到一个模块。但是在2017年做专业的软件开发工作,你并没有充足的时间来构建、测试和修复你的应用。

一个全栈开发工程师是一个广度优先的学习方法,你要尽可能的去学习多个领域(像前端开发,开发运维等),然后在后续的工作中再去加深你在这些领域的理解。

当你在学校的时候,你在同时学习多门课程的过程中使用的是BFS算法,所以这个技术你应该很熟悉吧。

全栈开发:2017年你最好的选择_第1张图片

作为一个全栈工程师,你需要顾全一个应用从开始到结束的所有阶段,你需要在各方面亲力亲为,然后深入挖掘。你学的越多,你对你的团队就越有作用,你也会越来越牛B。

在2017年,公司需要一个人掌握更多的技能。这不像是找一个大家都不知道的领域的传统的候选人。拥抱开源让很多机会都摆在了你的面前。

你在学习方面有热情吗?

如果你是有非常强的学习能力,又对尝试新的事物非常热心,那么这个职业将会非常适合你。全栈开发是一个学习、实现、提高的过程。

持续的工作将会给你带来各种不同的视野,你可以将这些都应用在开发中。作为一个全栈开发工程师,为了解决问题,你需要去知道怎么去开发,用哪种方法,怎么样去面对一个新的需求。

解除对Web开发人员的限制

所有的职业都在持续的进化。计算机科学和软件开发也不例外。

不久以前,人们还习惯于雇佣一个专家去做一个任务。但是现在,在云计算的时代,一个掌握更多技术的更适合现在的情况。

就像在动漫《口袋小精灵》中皮卡丘进化成了雷丘,一个传统的web开发现在也正在向全栈开发工程师转变。在这个领域这些改变是毋庸置疑的,我将会在下面说明。

谁是全栈开发工程师?

全栈开发是一个相对性的术语。就像色谱中的波长范围一样,全栈开发工程师需要的技能是根据需求而定的。但是我认为,一个合格的全栈开发工程师需要以下技能:

  • 能熟练的使用CSS&JS(查询,单页应用,DOM和ES6),知道自动化工具(Grunt,Gul)和Browserify
  • 至少熟悉一个web框架。比如:Django或者Node JS等
  • 使用过SQL或者NoSQL数据库一段时间(MySQL,MongoDB),能很好的进行数据库建模,会实现高级的查询和SQL join语法
  • 知道如何在AWS EC2用Apache2 或者Nginx 作为一个web服务器去部署代码。会使用Docker或者虚拟化环境部署工具
  • 可以用不同的组件设计web应用,有足够的能力对架构重构有一定的见解
  • 选择最好的解决方案并持续优化
  • 可以使用Chef或Ansible周期性自动发布应用。自动化记录日志和故障检索
  • 喜欢转变环境,从一个领域到另一个领域,或者一个技术到另外一种技术,并且能够很快的完成任务
  • 有能够用JS、Chrome插件和渐进式的web应用的方式开发hybird移动App

为什么你要选择全栈开发?

当有多个职业可以选择的时候,为什么我们要选择全栈开发?

首先,它可以让你一直学习新的事物。技术变化非常快,长时间做同样的工作会让你的职业生涯毁掉。你懂的越多,你就越有价值,你可以在各方面有更好的见解。

其次,这个工作钱多。如果你是一个全栈工程师的话,选择多并且钞票多。在Indeed.com上一个薪资调查显示,旧金山全栈开发工程师的平均工资是$130,576/年,一个传统的web开发工程师的平均工资是$94,614/年。

哪怕是爆炸和拥挤的印度招聘市场,全栈工程师在2017年也非常的抢手。印度的创业公司已经开发意识到全栈工程师的重要意义,全栈会越来越重要。多数城市的软件公司都在招聘软件全栈开发工程师。

考虑负面的影响

做全栈工程师也有一些缺点,所以并不是所有人都适合做全栈工程师。有以下缺点:

人们可能会说你门门了解,没有哪一门精通。尽管这些可能有一部分是对的,但精通你使用的技术是你自己的责任。开一个博客,经常记下当前项目中对你有帮助的笔记,也许以后你能用的到。

对于新手来说,你需要工作来证明自己,可以在创业公司做全栈工程师。只有少数人可以在开始阶段获得很大程度的自主权。对于大多数人来说,公司决定了你在开始阶段将会做哪些工作。所以最好在出大学校园之前就做好规划。

为什么又如何能成为一个全栈开发工程师

我很自豪的称我自己为全栈开发工程师(在理论上和实际上)。你可能会说没有人是完美的。这是真的。我离完美差的远呢。我正在精通全栈开发的路上,而且在前三年的职业生涯之旅上经历了酸甜苦辣。

许多事情已经改变,或者正在改变,我写了这篇文章而你恰好读到。就像我开始跟你说的一样,全栈开发并不是一个精确的定义。它是一个持续性的学习过程,全栈开发的关键是旋转按钮,而不是打开和关闭开关。

我的职业生涯开始于 Python 和 Flask,然后学习了数据库,像 MongoDB 和 MySQL,缓存使用 Redis,提交代码使用 Git,使用 javascript,学会理解 Celery 和 RabbotMQ 的事件处理机制和消息队列的原理。在那之后,我使用 Diango 框架,我又熟悉了 AWS 和 Nginx web 服务器。我使用 CoffeeScript 和 Backbone JS,也用过 Angular JS 取为公司开发 Chrome 扩展。因为我在几家很优秀的创业公司工作,我有很大的自由度去做这些工作。我打心底感谢他们。

写在最后

我给后来开发者的建议如下:

要一直保持学习的热情。不要知道了就止步。

可以参加技术研讨会和科技大会去发现最近开发流行的技术。

不管是开发运维、UI/UX或者是后端开发,这取决于你。

保持阅读的良好习惯,多动手实验。

不要害怕CSS。买一个AWS的云主机来做负载均衡的实践。

祝你早日实现全栈的梦想,吃好,睡好,保持好精力。

原文转自:https://dzone.com/articles/why-full-stack-development-is-too-good-for-you-in

你可能感兴趣的:(全栈开发:2017年你最好的选择)