如何定义牛逼工程师
有软件工程方面的研究说,对于开发者个体而言,最优秀的开发者的生产效率约为平均值的2倍,而优秀的开发者会吸引其它优秀的人,或者激励与帮助团队中的其它成员,最终使团队之间的生产效率差异达到10倍之多。
所谓牛逼的工程师,就是那些个体效率是其它人2倍,形成团队之后达到10倍差异的一群人。
前端领域这几年发展速度非常快,人才分布呈两级分化趋势,大家都在说缺前端,其实缺的是牛逼前端,对于低端的前端,培训机构一直在量产,但是无法满足要求。很多情况下,一个牛逼前端对于团队的价值是再多低端前端都无法提供的。
牛逼的前端工程师有一些共通的特质,这些特质也许不属于前端的核心范畴,但是可以通过它们将牛逼的人识别出来。
对用户体验的追求
不要认为用户体验只由设计师和产品经理把关就可以了。前端工程师对用户体验的关注度会直接影响产品的最终效果。
不管设计文档有多么详细,产品中仍然有大量的细节是设计方没有考虑到或者默认的,而这些细节需要前端工程师来把关。同样的设计,交给不关注体验的前端来做的话,会有很明显的粗糙感,而想要填平这些粗糙感需要大量的附加成本。
目前多数视觉设计师的不足是无法以动态的角度理解产品。比如我们要出一个设计稿,PC时代我们会出一个固定宽度的稿,比如800像素,然后让工程师去还原。后来到移动时代,我们会让设计师出两三个稿,对应不同屏幕的手机。这就是缺乏动态思维的弥补措施,无论出几个宽度的视觉稿,都只是动态形态的截面。
动机来源
我遇到的很多转行做前端的人是认为前端门槛低,所以先从前端做起。这样的人也许能做基础的工作,但很难做到优秀。
牛逼前端是奔着前端领域有更多的挑战和发挥空间而来的,而不是为了好找工作。事实上胜任高级前端的职位很难,我们招聘高级前端工程师的面试通过概率可能是研发类职位中最低的。
还有的人说对前端有兴趣,所以转行做前端。对于前端的兴趣要建立在对计算机的兴趣、对编程的兴趣之上。如果一个人对于做前端很有兴趣,但是对做后端或者其它开发类职位有排斥,那么就要对他的兴趣打个问号了,这类人可能不适合做研发类的工作。
全栈意识
这里所说的全栈并不是真的要去做后端工程师一样的事情。对于前后端分离,很多人有误解,理解成前端不用写后台代码。真正的前后端分离指的是系统级的分离,前端有独立的系统,当然要有自己的后台,还有各种辅助支撑系统。代码构建、发布、线上运维、数据统计监控都要了解,否则没法独立承担一块业务。
牛逼的前端工程师首先得是一个牛逼的软件工程师,他们是不会给自己的能力设限的。
而前端工程师所做的事情是将截面延展为一个完成的产品形态。
牛逼的前端能够主动追求用户体验的提升,对于交互、UI、视觉设计有基本的认识和审美能力,即使脱离设计师的支持依然能交付用户体验良好的产品。
了解自动化测试
优秀的前端不一定真的有多丰富的自动化测试实践经验,但一定要了解与自动化测试相关的基础知识。系统的可测试性本身比具体的测试用例覆盖度更重要。追求质量不是一件有时间了再去做的事情,追求质量本身是提高效率的方法,从而给你更多的时间。自动化测试是前端工程化建设的必备环节,虽然前端的自动化测试还没有形成稳定且应用广泛的实践方法,但是自动化测试这一块完全缺失的话,肯定是成为不了一个牛逼前端的。
重视监控系统
初级前端看功能,中级前端看测试,高级前端看监控。
前端做监控的目的就是在产品上线之后要从用户端拿到第一手的数据,毕竟用户端好用才是真正的好用。
目前多数公司对于前端的监控做的是不够的。在前后端分离的技术架构之下,前端要有自身的一整套监控体系才行。
很多时候后台监控到的是结果,结合前端监控才能分析出原因。我举个例子,比如后台监控到实时订单量骤减,这个是最终的结果,如果有前端的监控,我们就要看一下前端的可用性状况、各个页面的UV、加载性能、每个交互环节的点击量,各个接口的性能和出错占比、前端代码报错的量和位置,然后定位出问题所在。
真正经历过大型项目并且做过技术架构的工程师都会重视监控系统的建设。
做好监控需要有很好的大局观,一方面是产品的大局观,包括思考用户会如何使用产品,如何量化这些行为,每个环节数据的预期变化。另一方面是技术的大局观,要了解到整个技术架构不同模块是如何协作的,怎样测量它们是否正常工作。
总结
牛逼前端肯定不会只把时间花在研究浏览器上,他们所共有的特质就是:对于用户体验的追求、迎难而上的动机、全栈意识、注重自动化测试与数据监控。基础知识之外,对于周边体系的掌控状况最有区分度。