前几天,公司组织技术沙龙活动,引出了一个话题“衡量优秀的卓越的前端工程师的标准是什么呢?”大家纷争不断,会后我总结一下大致的说法,希望给奋斗在前线的工程师一点建议,有不对的地方望大家指正。
本文从二个维度去分析这个话题,每一个维度代表不同方向的工程师的努力方向。
一:自身技术的发展;
二:前端的灵魂思想
在进行这个两个维度的考虑的之前,我想强调一下一个合格的前端工程师的一些基本素养吧(ps:素养可能还不是很确切,但是不好意思我词穷啊)
前端工程师(F2E)
看到这个简称,或许很多小白很迷茫,这是什么呢?你不知懂,那么就请点击进去仔细看看。不过这个解释我觉得有点太老了,不是很准确。作为一个开发人员,你需要知道软件工程师的一些简称:软件工程师的简称
在一起大公司的交流,尤其大型外企对接项目,一个开发人员仅仅有编码能力是不够的,而且需要你有着很强的交流沟通技巧,这里提到了前端工程师的一些专业术语、英语水平能力和沟通技巧。看到这里,你会说我们公司都用不着,这里只能说我们目光短浅了,距离标准远了一点而已。我以前也是这么想的,但是遇到我们公司的技术沙龙,明白了以前真的是目光短浅,或者说我还没有目光吧。
看到上面两个工程师,从图标看每一个工程师的职业都有着不同的寓意,代表着不同的领域。为什么前端工程师一个狮子呢?不是其它的动物?而java工程师是那么多的人呢?从设计角度出发:前端工程师是不是很特殊呢?这也能让我们想到为什么这两年的前端工程师职位比较火,为什么大家都想从事这个行业?这里我想说的是:前端工程师,需要你细心一些,同时要有敏锐的感觉,高的用户体验思维,因为前端工程师更多的是去提前体验用户的所有的操作,去设计和实现用户的所需的一些系统功能的。
一个前端工程师:你需要不断地去思考你的行业、你的公司、你的产品将来的一些变化、不同的用户的喜好程度;这些都需要我们去不断地学习,扩充自己的能力和知识领域;大家都看过前端工程师的招聘信息,为什么一个前端工程师,除了强大的css、熟练的html、熟悉的javascript之外,你需要懂得后台的一门语言,数据库和一些美工的软件photoshop等。因为工作的伙伴都知道,在实际开发中,我们在高度还原UI设计人员的设计稿的时候,我们要去反复去推敲设计的一些逻辑关系,有的甚至牵扯到业务逻辑,同时在coding的同时,我们需要去和后台的工程师去交流如何提供接口,如果去监测一些异常问题,以及UI不懂前端的一些实现工程而造成的漏洞,这些都有可能造成我coding的一些坑,或者一些隐藏的bug;
说到这里,建议大家去关注一些博客,或者微信的公众号,了解自己的一些缺乏的知识,并且做好总结。对于前端工程师而言,你不仅仅需要去考虑如何实现整个功能,同时你需要明白为什么这么去写。还有工作中需要的问题你是怎么处理的,记录下来你的处理办法,同时总结问题。还有的就是一个合格的初级前端工程师,应该有自己的一些基本功能模块的强大的兼容性的代码块。
一:自身技术的发展
如果你从来没有从用户的角度去考虑如何去编写代码,如何提高系统的优越性,那么你思考什么呢?前端程序员也是一个动脑的职位啊,如果你没有这个思维去考虑,那么你动脑的地方在哪里?如果是代码,那么恭喜你进入了自身技术的发展的领域。但是不幸的告诉你:你走上了一个永无止境的路,你将处于不断探索中,不断地去寻求自己的技能不足;如果你没有良好的心态,那么有可能,你在开发的道路中只能走到一半,或者说你可能走到一两年,远一点就是十年左右而已,转行罢了。
但是话说回来,并不是从事技术的发展没有到达光明的彼岸,关键是你的技术到什么程度了,有没有特别牛,还是一个大牛级别的。比如我们所熟知的W3C,靠近标准,那么你就是成功者;这里我想说我们需要让自己去靠近标准,接近它,同时了解标准的机制,比如我们所需要掌握的浏览器的解析机制、render过程、以及http协议原理,相比很多人现在有的还没有熟知果render过程,闭包,原型链等。
自身技术的发展,我觉得你首先在掌握前端开发的一些基本的技能的基础上,可以去看Javascript权威指南,还有github去创建自己的项目,使用git管理自己的代码,同时使用云服务器去管理自己的数据库,去做一个完整的项目,同时我觉得在看书和学习的过程中,大家一定要动手去实现它,因为有些理论和经验在博主当时的情况下是可以的,但是现在可能使用的开发版本升级,其语法和思想都有了新的变化和进步。
前两天我开发中遇到了angular2的一个最常见的功能省市的三级联动,但是我就是用到下面的语法
[(ngModle)]在编译的过程中就会报错的,后来改成(ngModle)就没有错误了,这里就是想告诉大家:你看到的知识点有可能过时了,也有可能有错误,你需要去验证它。这里建议开发者去创建一个自己的博客,去记录自己的一些日常处理问题的办法,并且不断去反复看自己的想法。
我记得我们公司的总监说:’coding并不是很值钱的地方,值钱的是你作为一个前端工程师可以很确定地告诉公司和企业,我这么做一定可以赢得客户,赚到钱“。
其实这句话具有很大的对立,但是如果高级工程师看来,的确如此,因为当你达到一定的阶段的同时,你考虑的是如何去做好产品,或者说你看到原型图的时候,你整体框架已经跃然纸上了,的包括后期的优化,产品的更新,包括你所用的技术:异步加载、如何去实现权限管理、整个项目的编码风格等更重要的是产品的设计已经符合了广大的用户,这样你的编程才有价值。
二、前端灵魂的思想
我相信从事编程的程序猿们都有着一定的灵魂,自己coding的思想,coding的风格。优秀开发者,自己代码可读性非常高,同时他几乎已经脱离coding的境界,而是更多地去着眼于web的数据表现形式和对于一些开发标准的考虑。所以我建议很多开发人员再搞清楚自己的开发设计之前不要去急着敲代码,分析好每一个细节,甚至你想好了每一个Class、每一个函数fn、每一个对象、你需要提供的一下的公共调用的方法、和需要高度耦合的模块,哪里需要引入一些插件,最终这些的表现就是我们看到的,也是用户所用的一web界面。
这里举一个例子:为什么电商类的网站很能赚钱?为什么淘宝优化一下网站会产生大量的订单?为什么百度首页进行一个优化搜索量会有一个变化。还有一些页面的功能如何丧失了会怎么样呢?这些细节、数据表现形式就是将来web工程师的一个核心竞争力,你如果懂得了,掌握了,那么你可能会开发出一个不一样的产品。或者开源类的库,比如jquery和bootstrap。
看看这是三个不同的登录界面,但是相比而言,从客户的体验度来说,觉得第一个更好些。
这里想说作为一个前端工程师,你不仅仅应该考虑如何去实现功能,更多的是考虑如何增加用户的满意度和将来web的数据表现形式,有可能将来会继续创新,出现新的数据表现形式,也就是html6.0的时代,这需要你有很强的技术功底,也了解各大浏览器的机制。