前言
今天专访的这位前端,在早读君刚入行的时候就听过这个名字,而且也是看着他的博客学习成长的。当初约他做专访的时候还是会有点小期待的,那么我们就来看看关于他的前端之旅。
正文从这开始~
自我介绍,以及现在所服务的公司
我是张克军,一般用名字的拼写 “Kejun” 出没在社区里。工作在豆瓣。
详细介绍下自己从事前端的经历,这过程中你是如何学习的?有没有遇到瓶颈过,有的话,如何去突破。
我专业是学计算机网络的,架局域网什么的。大概 98 年左右,那段时间混图书馆,看电脑报上介绍用 Dreamweaver 做动画, 引起我的兴趣。做一个个人网站玩玩吧,于是就这样上道了。
那时候主要精力是在设计上,那个时代叫 “ 网页制作 ” 是很准确的,是 “ 制作 ” ,不是 “ 编程 ” 。现在回顾,这种背景决定我最终是产品、设计向的前端工程师,不太可能成长为语言专家或极客。这个阶段大量做网站,自己的、学校的、外包的、参加比赛等等,生活一度小富裕(哈)。另一方面也培养了耐心,做一个东西常常没有捷径,忍受过程,享受结果。周围同学很多不懈学这种低技术含量和需要付出枯燥劳作的东西,而我乐在其中。
02 年第一份正式工作是在亚商在线(不存在了)做网页制作,可能表现出很高的性价比,带动了学校的就业分配(哈)。直到现在工作上,我也是很看重和追求效率。干了两年多去了一家用 .net 的公司。兴趣是很奇怪的东西,总是潜移默化拉着你走,最终还是不喜欢干后端的工作, 05 年去了 1 拍(新浪和雅虎合资的)。
1 拍的工程师来自雅虎中国,其中有一位工程师 Anson (现在是宝贝树的 CTO )对我影响极大,向我输入了很多很新的来自雅虎美国的技术资讯,其中有一个是革命性的- Ajax 。
05 年底雅虎中国被阿里并购,我正式转到雅虎中国,地理上是从王府井转到土的多的光华路,但技术上使我与雅虎美国的前端技术更靠近了。雅虎的内部技术交流非常活跃,我在后台可以看到很多很系统的技术资料。那个时候还是 Blog 时代,国内的开发者要了解新技术,主要靠国内前端第一批 Blogger 的搬运,像陈贤安、嗷嗷等。雅虎时期,最直接影响我的人是 Hedger ,他后来也数次来国内分享,是国内前端界的老朋友。他是用代码说话的人,满脑子前端黑魔法,极富个人魅力,直到现在也是我的偶像(哈)。由于算是阿里系了,跟淘宝关系紧密。那时淘宝前端的负责人是承志(后来蘑菇街的创始人),这家伙才华横溢,我们经常一起交流。后来证明他其实是更优秀的产品经理(哈)。
回顾一下这个时期,好比从沟壑上到山峰看到更广阔的风景,有幸遇到很多极富才华又很 nice 的人直接影响了我。我觉得对于新人的借鉴是,刚毕业先别急于进高大上的公司,先进一个限制小、能更全面实践技术的公司,然后,再找一个更大更专业的平台,跟比自己有才华的人共事。
09 年去了豆瓣。豆瓣没有明确的角色边界和刻板的流程。前、后端在开发上配合非常紧密。前端工程师做为一种中间角色,即要有能力弥补设计上的不足,又要会写一些 Python ,尽可能独立解决问题。豆瓣发展到三、四百人时,豆瓣的前端团队最多也没超过 15 人,如果说优秀工程师的生产力是平庸工程师的 10 倍,没那么优秀 5 倍也够了(哈)。角色之间的协作效率才是影响开发效率的主因,通过加人可以解决一时的问题,但慢慢会变得臃肿难以逆转。我在豆瓣写的代码是在雅虎的 n 倍,参与了很多项目,在这个过程中,有机会与不同优秀工程师合作受益匪浅。学学其它语言有助于建立更多维的编程思想。比如要深刻理解函数式编程,最好学学 Haskell 。
何时出现瓶颈取决于视野,当看不到发展方向和趋势时,便会苦于没有突破。结合我的经历,有三个明显结点:
2005 年的 Ajax 流行。之前更多精力是在 CSS 重构上,学习标准,积累解决兼容性问题的经验。 Ajax 的出现,让我意识到下一个学习方向是 JavaScript 。学习 OOP 、学习如何架构代码、学习 YUI 等优秀的框架、追求网站性能等等。当这些方面都涉足后,又会感到碰到天花板了。 08 年去雅虎美国参加全球前端工程师大会,首次听 Zakas 讲基于 Ant 的自动化构建,豁然,回来后很快实践和分享。
2010 年 Node 加速发展。 Node 使前端生态迅速繁荣,通过不断翻新的工具,弥补标准的滞后和语言设计上的不足,前端开发逐步进入 “ 工程化 ” 开发的时代。各种工具、理念,一下子有点目不暇接。这时候的瓶径慢慢变成学习方向,应该学什么?这部分展开可以看 这里 。
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 点。