人总要为自己做的事情找个理由,说服自己也说服别人,写博客也一样,说到底,我们写博客的最终目的还是为自己所思考的东西找个去处,换个说法,我们每一次思考,就像是玩一款游戏,如果你不保存你的进度,那只能寄望于一次通关了。不然永远也玩不到更高的级别。这样可以解释为什么技术大牛都乐于写博客和分享,只有这样才能逐渐的把一个问题思考的更透彻,更深入而不是日复一日的重新思考。
故而随着我们经验和技术以及阅历的增长,我们对问题的解释也会发生变化,对于半路出家的仓库管理员如何成为一个“好”的前端工程师,在不同阶段的描述也截然不同。
过去我习惯于从左到右的思考,因为这符合书写的习惯,对于“好”得前端工程师,我们首先可能会去思考什么是好,好的定义和范围,标准和要求?但现在我习惯于从右到左的思考,因为我觉得越是抽象越难以定义,从粒度更小的名词入手,我们更容易找到解开问题的路径。故而我将这个问题分成三个阶段来思考:
如何成为工程师,如何成为前端工程师,如何成为好的前端工程师
当然这一切还有一个前置条件“半路出家的仓库管理员”
突出仓库管理员的目的,在于任何转行你都得有一个前提,那就是你得有时间,在日常工作之外能够给自己流出充足的时间来学习和提升自己。而半路出家则说明了一个现状,每个人都会对生活不满,迫于压力或者其他原因来寻求转变,希望能进入投入产出比更高的职业领域。如果你仔细的去寻找一些逆袭的履历,你会发现很多都有类似仓库管理,图书管理,保安等等之类的经历,所以你想通过自学转行当前端工程师。
第一步就是找一份,能养活自己同时又提供足够的空余时间的工作。
如何成为工程师
软件工程师可以看做是对程序员的一个加强,工程是一个商业化的概念,相对于程序员这个概念,工程师更复杂,程序员更纯粹,简单的理解,当一个程序员在某一个商业领域有了一定的项目经验以后,他就是一名工程师。
当然半路出家意味着你不可能回头再去读四年大学好好学习如何当一个程序员,所以我们要跨过这个概念,直接进入工程师这个范畴,关键便是“在某一个商业领域有了一定的项目经验”商业是以结果为驱动的,故而你只要获取到一个完整的项目经验,便可以跨过程序员这个雷区成为一名工程师。
所以在这个阶段,寻找任何一份能够接触到实际完整项目的岗位就成了当务之急,每个人基础不同,在这个阶段,可能有人能迅速找到相符合的岗位,而有人可能只能找到一些似是而非仅仅是搭上边的岗位,比如名为前端,实际却只负责页面修修改改,抠图之类的工作或者被外包到某些公司里负责活动页面等等。但只要目标明确,尽快获得一个完整的项目经验,你就不会在工作中迷失自己,这个阶段跳槽可能会很频繁,因为你在快速的调整自己。那么什么样的项目是完整的呢?
一个完整的web项目包含了从前端的用户输入到后端的数据存取,任何复杂的大型项目本身也是无数个小项目构建而成,所以经历一个完整的web项目,有助于你从前到后的了解数据如何从浏览器端经过服务器处理流入数据库。过去我可能会推荐你试试php,因为它和JavaScript很像,现在有了node,要搭建一个web应用就变得更加简单了。当你经过一系列不堪回首的过程,在作坊公司里开发了一个完整的web项目的时候,你就可以尝试进入下一个阶段。
如何成为前端工程师
在github上流传着一份前端工程师技能树,乍看之下绝对会打消你继续朝前端努力的念头,因为它太繁茂了,枝繁叶茂的技术栈层出不穷,更有新技术被不断的添加进去。所以我这里并不推荐你按照技能树的顺序去学习,因为前端的技术迭代太快了,可能你还没学完这个技术就已经被其他新技术所取代了。在我看来前端领域包含了两个大块,计算和设计。
设计
设计包含了用户的交互体验和视觉,css所要描述的内容,大多来自于设计领域可以说基本是ps上内容的移植,所以了解些ps设计上的知识有助于你将设计稿转换成css代码,而交互体验主要是指用户在应用上的操作是否流畅,这种流畅包括性能和交互两个方面。
计算
如果细数前端这些年的发展,其实除了一些浏览器环境特有的问题,大多数还是在照搬后端的那些东西,包括模块化,编译,面向对象等等,这么做的原因是什么?我觉得是为了解决web应用中的一个趋势,计算前置,为了使web应用在设计中能够使用户交互更加流畅,我们把很多后端的计算逻辑搬到了前端来完成,这种趋势促进了前端技术的发展。
而面对如此繁复的前端技术体系,又从何入手呢?
首先万变不离其宗,基础不能落下,JavaScript是重中之重,掌握JavaScript其实不难,作为一门脚本语言,JavaScript本身的标准化库也着实少得可怜,日常工作中,你用到最多的可能就是处理dom事件,发送ajax请求,处理回调,渲染dom。
JavaScript内部的机制,闭包等概念,在这个阶段,你可以知其然但不知其所以然,因为这些概念本身是需要经验和时间的积累去理解的。
其次css,说实话你能使用css3写出动画并且掌握常见的布局就足以应对大多数初创公司的要求,至于less和sass,懂更好,不懂也无妨。
最后你得熟练使用jQuery,因为它太简单了,花不了你多少时间,另外掌握bootstrap,可以显著提高你在一些后台应用开发中的工作效率。有了以上这些技能加上一个完整的项目经验,前端工程师的大门便为你打开了,你要做的很简单---跳槽
如何成为“好”的前端工程师
经历了前两个阶段的洗礼,我不知道你花了多少时间,数月或者数年?但这一切才刚开始。虽然我想说写代码是为了改变世界,不那么功利,但事实上,半路出家搞前端,多半都是家里揭不开锅了...想要养家糊口,自然得当一名好的前端工程师。
而所谓好在这里其实是和薪资挂等号的,这个“好”可能相对狭义,并且更具有商业化的色彩,故而成为好的前端工程师可以这么来。
关注业界动态,github基本上算是前端开源技术的风向标了,从backbon 到angular 到react都是各领风骚两三年,掌握一门时下热门的流行的开发技术对于你的薪资提升有很大的帮助,毕竟热门就意味着更大的影响更多市场需求,而薪资显然是供需关系主导的。
注意沟通表达能力的培养,想的再好,说不出来也枉然。
时间有限,尽可能投入到新技术或者投入产出比高的技术学习中去,比如现在再做ie兼容类的工作,就是很低收益的事情。
最重要的一点,一旦你目前的工作对你来说得不到提升,就要考虑走人了,不要拖,不要混,半路出家大多是大龄青年,混吃等死没资本。
多看书,有些东西,你可以没做过,但你不能没说过。