编程知识 cdmana.com

专访|前端布道师@张克军

前言

今天专访的这位前端,在早读君刚入行的时候就听过这个名字,而且也是看着他的博客学习成长的。当初约他做专访的时候还是会有点小期待的,那么我们就来看看关于他的前端之旅。

正文从这开始~

自我介绍,以及现在所服务的公司

我是张克军,一般用名字的拼写“Kejun”出没在社区里。工作在豆瓣。

详细介绍下自己从事前端的经历,这过程中你是如何学习的?有没有遇到瓶颈过,有的话,如何去突破。

我专业是学计算机网络的,架局域网什么的。大概98年左右,那段时间混图书馆,看电脑报上介绍用Dreamweaver做动画, 引起我的兴趣。做一个个人网站玩玩吧,于是就这样上道了。

那时候主要精力是在设计上,那个时代叫“网页制作”是很准确的,是“制作”,不是“编程”。现在回顾,这种背景决定我最终是产品、设计向的前端工程师,不太可能成长为语言专家或极客。这个阶段大量做网站,自己的、学校的、外包的、参加比赛等等,生活一度小富裕(哈)。另一方面也培养了耐心,做一个东西常常没有捷径,忍受过程,享受结果。周围同学很多不懈学这种低技术含量和需要付出枯燥劳作的东西,而我乐在其中。

02年第一份正式工作是在亚商在线(不存在了)做网页制作,可能表现出很高的性价比,带动了学校的就业分配(哈)。直到现在工作上,我也是很看重和追求效率。干了两年多去了一家用.net的公司。兴趣是很奇怪的东西,总是潜移默化拉着你走,最终还是不喜欢干后端的工作,05年去了1拍(新浪和雅虎合资的)。

1拍的工程师来自雅虎中国,其中有一位工程师Anson(现在是宝贝树的CTO)对我影响极大,向我输入了很多很新的来自雅虎美国的技术资讯,其中有一个是革命性的-Ajax。

05年底雅虎中国被阿里并购,我正式转到雅虎中国,地理上是从王府井转到土的多的光华路,但技术上使我与雅虎美国的前端技术更靠近了。雅虎的内部技术交流非常活跃,我在后台可以看到很多很系统的技术资料。那个时候还是Blog时代,国内的开发者要了解新技术,主要靠国内前端第一批Blogger的搬运,像陈贤安、嗷嗷等。雅虎时期,最直接影响我的人是Hedger,他后来也数次来国内分享,是国内前端界的老朋友。他是用代码说话的人,满脑子前端黑魔法,极富个人魅力,直到现在也是我的偶像(哈)。由于算是阿里系了,跟淘宝关系紧密。那时淘宝前端的负责人是承志(后来蘑菇街的创始人),这家伙才华横溢,我们经常一起交流。后来证明他其实是更优秀的产品经理(哈)。

回顾一下这个时期,好比从沟壑上到山峰看到更广阔的风景,有幸遇到很多极富才华又很nice的人直接影响了我。我觉得对于新人的借鉴是,刚毕业先别急于进高大上的公司,先进一个限制小、能更全面实践技术的公司,然后,再找一个更大更专业的平台,跟比自己有才华的人共事。

09年去了豆瓣。豆瓣没有明确的角色边界和刻板的流程。前、后端在开发上配合非常紧密。前端工程师做为一种中间角色,即要有能力弥补设计上的不足,又要会写一些Python,尽可能独立解决问题。豆瓣发展到三、四百人时,豆瓣的前端团队最多也没超过15人,如果说优秀工程师的生产力是平庸工程师的10倍,没那么优秀5倍也够了(哈)。角色之间的协作效率才是影响开发效率的主因,通过加人可以解决一时的问题,但慢慢会变得臃肿难以逆转。我在豆瓣写的代码是在雅虎的n倍,参与了很多项目,在这个过程中,有机会与不同优秀工程师合作受益匪浅。学学其它语言有助于建立更多维的编程思想。比如要深刻理解函数式编程,最好学学Haskell。

何时出现瓶颈取决于视野,当看不到发展方向和趋势时,便会苦于没有突破。结合我的经历,有三个明显结点:

  1. 2005年的Ajax流行。之前更多精力是在CSS重构上,学习标准,积累解决兼容性问题的经验。Ajax的出现,让我意识到下一个学习方向是JavaScript。学习OOP、学习如何架构代码、学习YUI等优秀的框架、追求网站性能等等。当这些方面都涉足后,又会感到碰到天花板了。08年去雅虎美国参加全球前端工程师大会,首次听Zakas讲基于Ant的自动化构建,豁然,回来后很快实践和分享。

  2. 2010年Node加速发展。Node使前端生态迅速繁荣,通过不断翻新的工具,弥补标准的滞后和语言设计上的不足,前端开发逐步进入“工程化”开发的时代。各种工具、理念,一下子有点目不暇接。这时候的瓶径慢慢变成学习方向,应该学什么?这部分展开可以看这里。

  3. 2013年PC时代到移动时代。原来的“前端”其实就是浏览器。移动时代的“前端”变成多元客户端。Web方式由必选方案,变成可选方案。工程师必然希望参与一家公司主产品的开发,主产品从PC端转换到移动端,我应该怎么办?曾经想过学Android或iOS开发,解决跨平台问题,首先要先了解平台。但如果追随传统的native开发,从头学起,我个人不太能接受。纯属个人偏好,不喜欢传统native开发方式,一点兴趣也没有。混合开发有局限性,只能坐等完善。我很惊喜React Native的出现,它不会替代原来的native开发,而是传统native开发聚焦在相对底层可复用的组件上,应用层用JavaScript写,看起来这是比较完美的方案。

在所服务的公司中,哪一个公司对你影响最大。为什么?

影响最大的是雅虎,提升最大的是豆瓣。现在雅虎没落了,十年前还是未代王者。技术和设计,特别讲究从理念到方法论的体系性。目的是只要招一个不傻、好学的人,通过这些东西就可以快速培育成符合企业特点的人才。国内的壕公司,这方面做的还不够。豆瓣是一家追求产品创新的公司,如果个人意愿强可以参与各类项目的开发,应用各种新技术也没什么限制。这种环境非常有利于工程师成长。从2014年初开始孵化一拍一这个项目,在产品设计、商业方面有了不同程度的经验的积累,是我想超越工程师局限获得的成长。

对刚入门的前端,你有什么好的建议呢?在技术的深广度上如何考虑呢?

从前面我的个人经历出发,建议是:要先耐的住两三年的菜鸟期(T1),这个阶段“广”最重要,“广”有两方面,一是全面掌握CSS/HTML/JavaScript的基础知识,二是广泛接收各种技术、思想,尽可能多的实践,多写代码,多有体会。书只是陈述技术是什么,无法告诉你什么场景下应该用什么、怎么用。然后是成熟期(T2),可以从容的驾驭足够复杂的项目,这个阶段多看代码比较重要,多做思考和总结。最后是创造期(T3),能造“新轮子”,能攻坚难题。我个人更看重技术在产品上的创新应用。

对你的了解,你现在在豆瓣参与了一拍一的项目,按你的理解,前端工程师的职业规划可以有哪些可能呢?

前端工程师如何发展其实非常不明确。只能说目前有几种可能性,一是成为专家,我感觉Hax还没老过四十吧,有机会跟他聊聊四十岁后有何打算。专家估计会转型为团队Leader,发挥经验和判断力。二是成为极客,超越前面提到的T3,追求T3+或T4。同样到四十岁后,可以创业、可以带团队。三是成为自由开发者,写出个爆款App就真正自由了。四是转行,转产品经理、转设计、转后端皆有可能,取决个人能力。不过没准哪天公司上市、彩票中奖就不用烦恼职业规划的问题了。

作为国内前端的老司机,有哪些图书值得推荐阅读的呢?

Zakas的“红皮书”不错,不过现要学ES2015/ES.next了。书看的不多,大家可以去搜一搜。

最后你可能还需要看看这篇:【第229期】写给初学前端工程师的一封信

后语

看完这篇,你有分享或提问的冲动吗?那么我们就来聊聊:

情侣是同行?你们觉得利弊在哪里?为什么~~

早读君期待你们哦~~

点赞数第一名的评论,将获得@人民邮电出版社异步社区赞助的《编写可维护的javascript》一本。时间截止到当日22点。

专访|前端布道师@张克军

版权声明
本文为[osc_mfth2zpa]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4419312/blog/4840191

Scroll to Top