在不断壮大的招聘市场上,最须要的是有很是普遍技术栈的人。javascript
敬爱的读者,你们好。你们常常讨论的话题是做为一个软件工程师是一个持续学习的过程。由于现有的趋势和技术在软件领域会很快过时,每一个人都要作好随时作出改变的准备。这将会是一个持续而单调的过程,放松对于咱们来讲是奢侈的。
在招聘市场上会有不少开发和工程师的工做,尽管数据科学和分析、
大数据专家、AI专家在最近三年已经上升了不少,可是仍是没有和全栈开发或者全栈工程师的需求在一个数量级上。
在IT领域,除掉一些专业性的领域,只有几个是最热的。什么缘由呢?这是因为某些技术的饱和以及不少创业公司挖掘新的业务致使的。创业公司和微服务爆炸式的增加引发了一系列技术人员需求。,在这些里面,全栈工程师就是其中一个。前端
公认的全栈工程师的定义是:"全栈的意思是开发者可以熟练的掌握前端和后端的开发技术."。从技术的角度来讲,这并非行业设定的标准,这是技术进化的一面。一个全栈工程师常常努力去学习开源的技术去应用到他/她的工做当中。我认为全栈工程师是一个如下技能的简化组合:前端开发+后端开发+开发运维+设计。
为了作一个web应用,一个全栈工程师应该知道怎么样去配置,优化,自动化部署应用java
若是你学过图论,你应该遇到过图的遍历算法,每一个学计算机的人都应该知道这些。web
BFS(广度优先搜索):一种首先搜索根节点全部的临近节点,再递归进行搜索的遍历算法。算法
DFS(深度优先搜索):一种首先搜索根节点最大深度的节点,再回来继续按一样的方式搜索其余节点的算法。
那么,你学哪种?DFS仍是BFS?数据库
这是一个我的的选择问题。一个博士生可能更倾向于选择深度优先学习方法由于他/她能够缩小他们的工做范围到一个模块。可是在2017年作专业的软件开发工做,你并无充足的时间来构建、测试和修复你的应用。后端
一个全栈开发工程师是一个广度优先的学习方法,你要尽量的去学习多个领域(像前端开发,开发运维等),而后在后续的工做中再去加深你在这些领域的理解。当你在学校的时候,你在同时学习多门课程的过程当中使用的是BFS算法,因此这个技术你应该很熟悉吧。O(∩_∩)O~~缓存
做为一个全栈工程师,你须要顾全一个应用从开始到结束的全部阶段,你须要在各方面亲力亲为,而后深刻挖掘。你学的越多,你对你的团队就越有做用,你也会愈来愈牛B。服务器
在2017年,公司须要一我的掌握更多的技能。这不像是找一个你们都不知道的领域的传统的候选人。拥抱开源让不少机会都摆在了你的面前。架构
若是你是有很是强的学习能力,又对尝试新的事物很是热心,那么这个职业将会很是适合你。全栈开发是一个学习、实现、提升的过程。
持续的工做将会给你带来各类不一样的视野,你能够将这些都应用在开发中。做为一个全栈开发工程师,为了解决问题,你须要去知道怎么去开发,用哪一种方法,怎么样去面对一个新的需求。
全部的职业都在持续的进化。计算机科学和软件开发也不例外。不久之前,人们还习惯于雇佣一个专家去作一个任务。可是如今,在云计算的时代,一个掌握更多技术的更适合如今的状况。就像在儿童动漫中皮卡丘进化成了雷丘,一个传统的web开发如今也正在向全栈开发工程师转变。在这个领域这些改变是毋庸置疑的,我将会在下面说明。
全栈开发是一个相对性的术语。就像色谱中的波长范围同样,全栈开发工程师须要的技能是根据需求而定的。可是我认为,一个合格的全栈开发工程师须要如下技能:
能熟练的使用CSS&JS(查询,单页应用,DOM和ES6),知道自动化工具(Grunt,Gul)和Browserify。
至少熟悉一个web框架。好比:Djiango或者Node JS等。
使用过SQL或者NoSQL数据库一段时间(MySQL,MongoDB).能很好的进行数据库建模,会实现高级的查询和SQL join语法。
知道如何在AWS EC2用Apache2 或者Nginx 做为一个web服务器去部署代码。会使用Docker或者虚拟化环境部署工具
能够用不一样的组件设计web应用,有足够的能力对架构重构有必定的看法
选择最好的解决方案并持续优化
可使用Chef或Ansible周期性自动发布应用。自动化记录日志和故障检索。
喜欢转变环境,从一个领域到另外一个领域,或者一个技术到另一种技术,而且可以很快的完成任务。
有可以用JS、Chrome插件和渐进式的web应用的方式开发hybird移动App。(译者注:I'm dead)
当有多个职业能够选择的时候,为何咱们要选择全栈开发?首先,它可让你一直学习新的事物。技术变化很是快,长时间作一样的工做会让你的职业生涯毁掉。你懂的越多,你就越有价值,你能够在各方面有更好的看法。
其次,这个工做钱多。(译者注:说的好)若是你是一个全栈工程师的话,选择多而且钞票多。在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。(译者注:(⊙o⊙)…)买一个AWS的云主机来作负载均衡的实践。祝你早日实现全栈的梦想,吃好,睡好,保持好精力。