Web前端工程师职业规划如何做
只有确定好自己的职业方向,才能做好职业规划。在小编看来
web前端工程师
能够找到的职业方向有以下几种:
-
资深web前端工程师
这个方向算是web前端最基本的选择了;
-
资深web架构师
这一方向即兼顾了工作的单纯性,又能够减少实际的工作量从而能够腾出时间钻研技术;
-
自己创业
这一方向挑战与机遇并存,作为一个前端技术人员,需要将自己的视野更多放在行业的动态、产业链的动态、相关产品领域的动态,把关注细节的优势继续保持,同时,增强自己把控一个产品乃至一个公司命运的能力。
职业发展规划是在职业发展目标的基础上制定的,我都有一个最终的目标,在这个目标之上,我们需要给自己制定一系列学习和成长计划,制定的方法如下:
-
梳理知识架构
其目的在于目的在于,我们要了解清楚,哪些技术是前置、哪些技术是后继,那些技术是深度、哪些技术是广度,按照这两个维度梳理好知识架构之后,我们才能准确地制定清晰的成长目标、高效的成长计划。
-
分解目标
小编看来大致可以分为三个阶段,包括起步阶段、提升阶段、成型阶段,这三个阶段又分别对应着不同的目标:
①起步阶段目标:基础知识的掌握、常用工具的掌握、
沟通技巧
的掌握、良好的开发习惯;
②提升阶段目标:高级技术的掌握、产品思想的学习、各种框架的学习、富客户端应用的学习、各种
网络协议
的学习、程序设计;
③成型阶段:到了这个阶段,我也没什么好说的了,如果能达到这个阶段,就证明后续的成长之路是异彩纷呈的,是成为一个资深WEB前端工程师,还是成为一个资深WEB架 构师,亦或其他,都要具体分析自身的特点和兴趣所在。如果是资深的前端工程师,我觉得更重要的是去作新技术的研究,
互联网技术
发展速度日新月异,不断学习新技术,否则就被淘汰。此外,我建议在知识的广度、深度方面最好能挑选一个自己最擅长和最感兴趣的一两个领域深入钻研,不要挑太多,多而不精。
web前端工程师都有什么样的职业规划路线
对于一个WEB前端的职业规划,其实是有各种的答案,没有哪种答案是完全正确的,全凭自己的选择,只要是自己选定了,坚持去认真走,就好。在这里,
我只是
简要说一下自己对于这块儿内容的理解。有一个观点想要分享给大家的是:任何规划和目标的实现都依赖于知识的积累,而知识的积累来源于学习及学习后大量的实
践。我提供一个实践途径,我们可以在工作之余的时间在网上或外包公司那里接一些私单做,因为目标不是赚钱,我们可以用最低的价格来提升自身竞争力,获得大
量订单就意味着获得大量的实践机会,同时,还有一些收入作为工作成就感之外的安慰奖,还是不错的。
一、职业方向定位
首先,只有确定好自己的职业方向,才能做好职业规划。在我看来,做WEB前端技术能够找到的职业方向有以下几种:
(1)资深WEB前端工程师
这个方向算是一个WEB前端最基本的选择了,在国外,很多老外都能够把自己的专业做到极致,能一辈子就在一个专业领域不断学习和积累。主要在于内因和外因
两方面,内因是老外通常思想比较简单直接,容易一直专注于一个领域;外因是国外的环境很好,能够良好的支撑这样的职业发展道路。反观国内,从内因来
讲,WEB前端技术人员还是蛮浮躁的,通常会因为WEB前端知识的更新速度太快而觉得学习起来辛苦,最终转向后台或其他道路。从外因来讲,WEB前端人员
没有获得公平的待遇,可能从HTML页面制作就开始并沿袭下来的,从来WEB前端人员都比后端人员低一等,貌似前端就是“浅显”的代名词、后端就是“深
奥”的代名词,这也直接造就了前端人员的收入无法和后端人员媲美,同时直接影响到前端人才市场的活跃程度。另一方面,前端的技术入门较容易,造成另一个极
端情况:人员泛滥、人才稀缺。我想对所有的WEB前端工程师说:面包总会有的,要耐得住寂寞!我个人比较推荐这个职业发展方向,因为,在这个方向下,只要
足够耐心、厚积薄发,成功的概率是非常高的。同时,这是一条最单纯的路,我们更多的是花费精力在技术的钻研上,而不是办公室政治等其它琐事。
(2)资深WEB架构师
说功利点儿,我喜欢这个方向,既兼顾了工作的单纯性、又能够减少实际Coding的工作量能腾出更多时间钻研技术。在国内,WEB前端工程师遇到较多的情
况是总是反复编写着同样的代码,总是面对着同样的技术和产品,容易感觉枯燥。由于我们拥有最为广泛的WEB相关知识沉淀,使得我们更加容易成为一名架构
师。这个职业发展方向不如第一种来得平滑,主要是作为一名架构师不得不学习:后端技术、DBA、Platform等内容,而这种学习通常需要实际操刀做项
目,不是自己在家里写两个Demo就好的,这就势必会遭遇一段时间的阵痛期。虽然不是很平滑,但是,对于一个大局观好、悟性好、知识面广的前端工程师,我
推荐你们努把力,走一条光荣的架构师之路吧。
(3)自己创业
其实,自己创业是最好的道路、也是成功率最低的道路,挑战和机遇并存。这里,作为一个前端技术人员,需要将自己的视野更多放在行业的动态、产业链的动态、
相关产品领域的动态,把关注细节的优势继续保持,同时,增强自己把控一个产品乃至一个公司命运的能力。但是,这条道路和技术之路稍有分歧,后续将不再赘
述。
二、职业发展目标
我都有一个最终的目标,在这个目标之上,我们需要给自己制定一系列学习和成长计划,制定的方法如下:
第一、梳理知识架构;
梳理知识架构的目的在于,我们要了解清楚,哪些技术是前置、哪些技术是后继,那些技术是深度、哪些技术是广度,按照这两个维度梳理好知识架构之后,我们才能准确地制定清晰的成长目标、高效的成长计划。
第二、分解目标;
我认为,大抵可分解为三个阶段,包括:起步阶段、提升阶段、成型阶段。这三个阶段分别对应着不同的目标:
起步阶段:
1、基本知识的掌握
在我们梳理的知识架构中,按照我们分析的两个维度里最前置的、最浅显的部分,作为打基础的阶段,必须要在这个过程中更多投入到实践中去,我们通常做的多了、熟练了,就认为这部分知识和内容掌握了。
2、常用工具的掌握
对于常用工具的掌握应该掌握一些有大公司或专业团队背景的流行工具,这些工具的熟练掌握能够提升专业度、职业度,同时,能提升我们的工作效率。我们只有在 检验自己对于知识和技能熟练程度的时候,才会自虐式的用Notepad去编写页面、css和脚本等内容。
3、沟通技巧的掌握
通常做技术的人会被定位为“不善沟通”的人,这是为什么呢?究其原因,主要是因为多跟程序和代码打交道,跟人的沟通较少导致。这种时候我们要特别注意增加
和人沟通的机会,着重提升这块儿的能力。另一方面,我们通常被称为“不懂沟通技巧”的人。在国内,我们的技术人员通常都是自己制定方案、自己执行方案,在
执行过程中又缺乏相关产品、交互设计等人员的沟通,大多是在自己的思路贯彻下进行开
发,久而久之,我们习惯于信任自己的观点、在自己的视角看问题,对于挑战总是百般地“据理”力争。我们需要更多提升的是,如何在对方的视角看问题、如何在
用户的视角看问题。
4、良好的开发习惯
开发习惯是养成的,一旦有不好的习惯,对于将来去修正带来的将是很大的麻烦,我们在培养良好开发习惯一定要从起步时做起,例如:写代码之前先分析、先写文
档、先写注释。定义变量最好能用直接可理解的语义,最好是拼音,别整英文,尤其是生僻单词,将来自己忘了还要开金山词霸。文件最好有有意义的文件夹命名来
管理,文件名最好有意义,需要版本号的最好能和项目版本号一同更新……等等。
提升阶段:
1、高级技术的掌握
在提升阶段对于知识和技能掌握,我们需要从梳理好的知识架构中选择更深一层次的技术进行学习,选择之前,我们先通过类比或预估的方法,衡量自身学习的难
点,以学习难点和自己最不感兴趣的部分为主。这样推荐大家的原因是:这个阶段我们兴趣正浓,已经度过了苦涩的起步阶段,到达了兴奋的提升阶段,我们要用兴
趣和兴奋去挑战最困难的部分,在我们信心受挫和兴趣浓厚之中找到平衡。同时,辅以其他的深层次知识一起学习和研究。
2、产品思想的学习
没有正确的产品思想,很难设计出良好的程序,无论从界面、交互,还是接口、逻辑,不能够理解产品、理解用户需求,我们会给自己造成很大的麻烦,例如:我们
千辛万苦用最新技术、最复杂的实现做出的功能,却得不到使用者或领导、同事的认可。为了使我们的工作和学习更加有效率、避免无用功,我们需要不断的学习产
品的思想,只有理解了产品的思路,我们才知道用我们的技术去输出什么。
3、各种框架的学习
框架是我们提高工作效率的优秀手段,对于框架的学习是成长必经之路。我们学习框架的路线通常应该是:使用——》分析——》个性化定制——》模仿编写自己的
框架。只有大量的使用,才能明白设计框架者在设计背后的思路,只有了解到设计的思路,才能做正确全面的分析,只有正确全面的分析才能支撑我们去对其裁剪或
扩展,只有经过实际分析、修改别人的框架,才有可能写出优秀的、自己的框架。学习通常的路线是:学习、理解、模仿、创造。
4、富客户端应用的学习
随着带宽和计算机性能的提升,以及WEB2.0的如火如荼,富客户端应用充斥着互联网,如果你不懂得富客户端应用,你就不能称之为一个合格的前端技术人 员。可以按照:Flash动画——》Flash编程——》
Flex——》——》Air——》Silverlight动画——》Silverlight编程
的步骤学习,先学Flash后学Siverlight的原因,一来Silverlight还不太成熟,二来,实际Silverlight借鉴了很多
Flash的思想,最好在学习的时候不要本末倒置。
5、各种网络协议的学习
WEB前端技术就是云上的技术,云的协议有N种,我们应该着重学习:TCP/IP,UDP,HTTP,POP3,SMTP这几种协议,在开发WEB前端应
用过程中,这些协议是我们的技术的载体,有时候决定了我们的应用是否能实现、有时候决定了我们的应用是否高性能,同时,这些协议还是我们和后端技术交互的
重要手段,这些协议就像是密码字典,帮助我们把后端传输过来的密文解释成我们前端技术能够理解的明文。
6、程序设计
这个阶段我们需要学习OO、UML、设计模式、设计方法……,我们要让技术开发工作变成有目的性、有计划性,并且,这些目的和计划必须有理论的支持,这
样,我们设计出来的程序才能够更优秀、我们的开发才更有效率,这样,我们的技术才能有所提升。为什么要学习程序设计呢?主要是,就算我们不用Flash的
ActionScript编写程序的前端逻辑,我们至少要把我们自己的Javascript函数、包的定义规划起来,避免将来自己或他人维护代码的时候出
现问题。程序设计能力,在技术人员仍然被看作是程序员的这个年代,是灰常、灰常重要滴。
成型阶段:
到了这个阶段,我也没什么好说的了,如果能达到这个阶段,就证明后续的成长之路是异彩纷呈的,是成为一个资深WEB前端工程师,还是成为一个资深WEB架
构师,亦或其他,都要具体分析自身的特点和兴趣所在。如果是资深的前端工程师,我觉得更重要的是去作新技术的研究,互联网技术发展速度日新月异,不断学习
新技术,否则就被淘汰。此外,我建议在知识的广度、深度方面最好能挑选一个自己最擅长和最感兴趣的一两个领域深入钻研,不要挑太多,多而不精。
经验可以积累,但梦想永远不能磨灭
前端工程师在工作上都有哪些规划
前端工程师往往属于产品研发团队,但却很容易被边缘化——后端工程师觉得自己才是主力,没有后端工程师产品就不存在了,但没有前端工程师产品还能有,只是界面非常糟糕而已。这时候前端工程师就开始感觉自己像是个外包似的,只是来帮别人完成一些任务而已,对产品没有归宿感。这时候成为一个更好的外包吗?要做关键任务我觉得,要别人重视你的工作,不仅仅是你做得好就行了,还要求你的工作对别人来说足够重要。这跟产品定位有关——例如说对搜索引擎来说,前端对产品的影响不会非常大,用户只要能搜索到自己想要的结果就行了。搜索引擎最复杂的交互可能就是搜索框的自动完成了,但有自动完成和无自动完成的区别到底有多大呢?跟准确率和召回率相比,有没有自动完成实在没有多重要。况且,自动完成的结果本身也依赖于准确率和召回率,所以后端工程师比前端工程师重要得多。因此,前端工程师在选择工作时首先要选择前端足够重要的工作。重要用什么来衡量?务实的话,是钱;务虚的话,是产品。如果一个功能只能在前端实现,并且这个实现能够提高多少的转化率,使得多少原本不产生利润的点击产生利润,那么前端对这个产品来说一定十分重要。可惜往往跟钱相关的事情不由前端工程师来研究和决定,所以这部分工作还是安心交给产品设计师来做吧,让他们来决定怎么样的产品能赚钱,然后由你来完成这个产品的实现,这时候你的目标就是把产品做好。回到刚才的问题,有些产品更依赖于后端,例如搜索引擎,当然也有些产品更依赖于前端。什么样的产品更依赖于前端?就是后端难以建立起技术壁垒的产品。这类产品要抄袭一个功能差不多的并不难,因此只有细节做得最好的能够获得足够多的用户。这类产品在iOSAppStore上很常见——有很多app拥有相似的功能,而其中只有一个交互设计得最好的能够获得绝大多数的用户。尽管app不存在HTML+CSS+JS这个前端,不过道理是一样的。当年Tweetie能够取代老牌的Twitterrific成为主流Twitter客户端,靠的就是交互上的创新,外加不差的性能和稳定性。如果交互对于一个webapp来说十分重要,这个webapp自然也就需要十分优秀的前端工程师。总结一下,由于前端工程师的价值在于实现复杂的前端细节,因此如果可以选择的话尽量选择一个细节决定成败的产品。如果产品的成败已经由后端工程师决定了,例如某某数据规模要么能做要么不能做,那么这个产品就没你什么事了。要懂核心业务每一个公司,每一个项目,都有它的官方语言。不是指普通话,也不是指C++,我指的是大家围绕什么问题来项目,什么问题的讨论能让大家为之兴奋。举个例子来说,百度的官方语言就是搜索,跟搜索没有关系的产品也会使用「准确率」、「召回率」这样的术语用来做比喻。前端工程师有多少知道什么是「准确率」、「召回率」的?估计不多,因为前端根本没有这样的概念。这时候前端工程师要跟后端工程师沟通也就不容易了。久而久之,你对人家很兴奋在讨论的什么O(1)还是O(n)不感兴趣,人家也不理解你的{}!={}是什么意思,你就被边缘化了。如果不想被边缘化,就算前端不是公司的核心业务,你也必须懂公司的核心业务,然后说着官方语言,而不是前端的方言。这就意味着,如果你在一家后端技术很强大的公司,你最好也懂后端技术。我知道国内有很多前端工程师并不是计算机系毕业的,就算是国内的教育也不怎么样,这时候你只能恶补相关的基础知识了。如果你不懂这些,就算你能把整本《JavaScript权威指南》背下来,你说的还是方言,说官话的人还是会鄙视你。如果公司主要服务于某个垂直领域的话,你必须对这个垂直领域十分了解,随时能用这个领域的行话来沟通。总结一下,由于每个人已经熟悉的领域都不一样,所以没法说哪个领域更适合前端工程师。如果你原本已经有某个领域的从业经验,进入服务于该领域的技术公司总是有显著优势的。如果你进入了一个自己不熟悉的领域,那就一定要补充相关基础知识,否则你对这个领域不感兴趣,这个领域也不会对你的前端工作感兴趣。实际例子为什么我选择加入豌豆荚?主要考虑的还是上面两点。我在百度的时候一直就在想,既然前端对搜索引擎来说不重要,那对什么类型的应用来说比较重要呢?当时看到Facebook做得不错,所以觉得社区会需要复杂的交互,而如果复杂交互做不好则会影响用户使用,因此前端对社区来说应该十分重要。现在看来,也不完全是这样子。前端对社区来说确实重要,但Facebook并不是一个典型的例子,它是一个前端做得尤其优秀的例子。在我了解到豌豆荚Windows客户端的实现方式时,我立即意识到它可以通过我的第一个判别标准——前端对它来说是关键任务。它使用Webkit做了一个容器,然后把所有的交互都通过webapp的形式做在里面,然后通过一组接口跟native进行交互。如果一个应用决定要这样做了,那么前端就能影响到它的成败,因为这时候前端后端的分隔线已经很明确了。如果一项功能应该由前端来做那就必须由前端来做,后端基本不可能成为实现此项功能的备选方案,这时候前端就具备了无可替代的位置。至于第二个判别标准——豌豆荚的核心业务是什么?我觉得豌豆荚做的很多事情都是以产品设计为起点的,而这至少是我感兴趣并且也有点感觉的东西。从细节上来说,就是大家喜欢谈论的事情是一致的,例如产品如何做一些很智能的设计,最新的技术方案如何能够巧妙地帮助这些设计得以实现。Junyu说「设计就是创造性地解决问题」,这是我喜欢的解决问题方式。这个世界上能够把逻辑转化为代码的人非常多,同时有一定数学和计算机专业基础的人也不少,因此要拼谁的解决方案更好的话那还要加上创造力。我知道国内有很多产品设计师,在考虑产品时首先想到的是百万千万级用户量,这样无论从单个用户身上赚到的钱多么的少,最终产品还是能赚大钱。百度曾经就属于这种思维方式,但这不是我喜欢的风格,因为没有明确的目标用户定位。我知道国内由很多工程师,在编写代码时用尽各种技巧以展示自己过人的才智,但是这样的代码还有可复用性吗?除了作者本人没有人能够维护啊。不同的人有不同的品味,能够跟品味一致的人一起工作是一件幸福的事情。