Spiga

前端工程师的职业发展路线在哪?

2011-12-14 08:40 by Cat Chen, 5533 visits, 收藏, 编辑

我猜想国内很多前端工程师都想过这个问题吧。前端工程师往往属于产品研发团队,但却很容易被边缘化——后端工程师觉得自己才是主力,没有后端工程师产品就不存在了,但没有前端工程师产品还能有,只是界面非常糟糕而已。这时候前端工程师就开始感觉自己像是个外包似的,只是来帮别人完成一些任务而已,对产品没有归宿感。这时候前端工程师的职业发展路线在哪?成为一个更好的外包吗?

要做关键任务

我觉得,要别人重视你的工作,不仅仅是你做得好就行了,还要求你的工作对别人来说足够重要。这跟产品定位有关——例如说对搜索引擎来说,前端对产品的影响不会非常大,用户只要能搜索到自己想要的结果就行了。搜索引擎最复杂的交互可能就是搜索框的自动完成了,但有自动完成和无自动完成的区别到底有多大呢?跟准确率和召回率相比,有没有自动完成实在没有多重要。况且,自动完成的结果本身也依赖于准确率和召回率,所以后端工程师比前端工程师重要得多。

因此,前端工程师在选择工作时首先要选择前端足够重要的工作。重要用什么来衡量?务实的话,是钱;务虚的话,是产品。如果一个功能只能在前端实现,并且这个实现能够提高多少的转化率,使得多少原本不产生利润的点击产生利润,那么前端对这个产品来说一定十分重要。可惜往往跟钱相关的事情不由前端工程师来研究和决定,所以这部分工作还是安心交给产品设计师来做吧,让他们来决定怎么样的产品能赚钱,然后由你来完成这个产品的实现,这时候你的目标就是把产品做好。

回到刚才的问题,有些产品更依赖于后端,例如搜索引擎,当然也有些产品更依赖于前端。什么样的产品更依赖于前端?就是后端难以建立起技术壁垒的产品。这类产品要抄袭一个功能差不多的并不难,因此只有细节做得最好的能够获得足够多的用户。这类产品在 iOS App Store 上很常见——有很多 app 拥有相似的功能,而其中只有一个交互设计得最好的能够获得绝大多数的用户。尽管 app 不存在 HTML + CSS + JS 这个前端,不过道理是一样的。当年 Tweetie 能够取代老牌的 Twitterrific 成为主流 Twitter 客户端,靠的就是交互上的创新,外加不差的性能和稳定性。如果交互对于一个 web app 来说十分重要,这个 web app 自然也就需要十分优秀的前端工程师。

总结一下,由于前端工程师的价值在于实现复杂的前端细节,因此如果可以选择的话尽量选择一个细节决定成败的产品。如果产品的成败已经由后端工程师决定了,例如某某数据规模要么能做要么不能做,那么这个产品就没你什么事了。

要懂核心业务

每一个公司,每一个项目,都有它的官方语言。不是指普通话,也不是指 C++,我指的是大家围绕什么问题来展开项目,什么问题的讨论能让大家为之兴奋。举个例子来说,百度的官方语言就是搜索,跟搜索没有关系的产品也会使用「准确率」、「召回率」这样的术语用来做比喻。前端工程师有多少知道什么是「准确率」、「召回率」的?估计不多,因为前端根本没有这样的概念。这时候前端工程师要跟后端工程师沟通也就不容易了。久而久之,你对人家很兴奋在讨论的什么 O(1) 还是 O(n) 不感兴趣,人家也不理解你的 {} != {} 是什么意思,你就被边缘化了。

如果不想被边缘化,就算前端不是公司的核心业务,你也必须懂公司的核心业务,然后说着官方语言,而不是前端的方言。这就意味着,如果你在一家后端技术很强大的公司,你最好也懂后端技术。我知道国内有很多前端工程师并不是计算机系毕业的,就算是国内的教育也不怎么样,这时候你只能恶补相关的基础知识了。如果你不懂这些,就算你能把整本《JavaScript 权威指南》背下来,你说的还是方言,说官话的人还是会鄙视你。如果公司主要服务于某个垂直领域的话,你必须对这个垂直领域十分了解,随时能用这个领域的行话来沟通。

总结一下,由于每个人已经熟悉的领域都不一样,所以没办法说哪个领域更适合前端工程师。如果你原本已经有某个领域的从业经验,进入服务于该领域的技术公司总是有显著优势的。如果你进入了一个自己不熟悉的领域,那就一定要补充相关基础知识,否则你对这个领域不感兴趣,这个领域也不会对你的前端工作感兴趣。

实际例子

为什么我选择加入豌豆荚?主要考虑的还是上面两点。

我在百度的时候一直就在想,既然前端对搜索引擎来说不重要,那对什么类型的应用来说比较重要呢?当时看到 Facebook 做得不错,所以觉得社区会需要复杂的交互,而如果复杂交互做不好则会影响用户使用,因此前端对社区来说应该十分重要。现在看来,也不完全是这样子。前端对社区来说确实重要,但 Facebook 并不是一个典型的例子,它是一个前端做得尤其优秀的例子。

在我了解到豌豆荚 Windows 客户端的实现方式时,我立即意识到它可以通过我的第一个判别标准——前端对它来说是关键任务。它使用 Webkit 做了一个容器,然后把所有的交互都通过 web app 的形式做在里面,然后通过一组接口跟 native 进行交互。如果一个应用决定要这样做了,那么前端就能影响到它的成败,因为这时候前端后端的分隔线已经很明确了。如果一项功能应该由前端来做那就必须由前端来做,后端基本不可能成为实现此项功能的备选方案,这时候前端就具备了无可替代的位置。

至于第二个判别标准——豌豆荚的核心业务是什么?我觉得豌豆荚做的很多事情都是以产品设计为起点的,而这至少是我感兴趣并且也有点感觉的东西。从细节上来说,就是大家喜欢谈论的事情是一致的,例如产品如何做一些很智能的设计,最新的技术方案如何能够巧妙地帮助这些设计得以实现。Junyu 说「设计就是创造性地解决问题」,这是我喜欢的解决问题方式。这个世界上能够把逻辑转化为代码的人非常多,同时有一定数学和计算机专业基础的人也不少,因此要拼谁的解决方案更好的话那还要加上创造力。

我知道国内有很多产品设计师,在考虑产品时首先想到的是百万千万级用户量,这样无论从单个用户身上赚到的钱多么的少,最终产品还是能赚大钱。百度曾经就属于这种思维方式,但这不是我喜欢的风格,因为没有明确的目标用户定位。我知道国内由很多工程师,在编写代码时用尽各种技巧以展示自己过人的才智,但是这样的代码还有可复用性吗?除了作者本人没有人能够维护啊。不同的人有不同的品味,能够跟品味一致的人一起工作是一件幸福的事情。

额外信息

这个话题到此就结束了吗?其实不是的。关于前端工程师的职业发展,我还有很多可以说的。不过我觉得找到一份让自己满意的工作必然是其中的第一步,因为你必须对工作充满兴趣,然后才能把事情做好,所以我把这部分内容放在最前面并且先发出来了。如果你不想错过后继讨论的话,欢迎订阅本博客。

此外,豌豆荚现在还招前端工程师,包括全职和实习,有兴趣的可以联系我:catchen@catchen.me。对于全职的前端工程师,我期望你熟悉 web app 的开发与调试,如果我让你手写一个 HTTP GET 请求你连个大概都写不出来,那我就要怀疑你平时都有多少时间对着 debug console 调试 AJAX 代码了。对于实习生,我期望你至少有扎实的 web page 基础,能够用简洁的代码实现符合语义的页面。至于豌豆荚提供什么?就是我前面所说的,但还有个前提——至少我们要有一致的品味。

Add your comment

46 条回复

  1. #1楼 mededu      2011-12-14 09:05
    豌豆2的界面设计非常不好用,不人性,N次想K掉他,还好市面上没有更好的; 还是豌豆1好用
     回复 引用 查看   
  2. #2楼 lorgine      2011-12-14 09:13
    对豌豆荚又爱又恨,好用是好用,性能低下。
     回复 引用 查看   
  3. #3楼 lorgine      2011-12-14 09:13
    我觉得大家写代码的时候,一定要考虑考虑性能否则写出来的功能。用户体验不好。
     回复 引用 查看   
  4. #4楼 yanz      2011-12-14 09:20
    我现在的状况就是闲着,感觉公司可以把前端这个业务外包出去:)现在我试着参与相互设计,不过这不是自己的主业。没有项目,js水平徘徊不前,你说的ajax没有实际的经验。如果自己写简单的web程序,以此来写一些较复杂的js应用,又要先了解一门后台语言与数据库,比如php+mysql。不这样,好像也没有其它好办法。
     回复 引用 查看   
  5. #5楼 wtcsy      2011-12-14 09:32
    今年深有体会,对于前段工程师来说,不会web app会阻碍自己的视野,成为进步的瓶颈.在一个公司里面,如果其他的前端同事都会服务端的东西,自己不会或者不强,压力都会很大的,顶博主了....
     回复 引用 查看   
  6. #6楼 Coolicer      2011-12-14 10:00
    看了文章,看了评论,我怎么看不出核心
     回复 引用 查看   
  7. #7楼[楼主] Cat Chen      2011-12-14 10:06
    @mededu
    能够详细描述一下为什么你觉得 2.0 的界面设计不如 1.x 吗?我觉得我们的产品设计师有兴趣听听。
     回复 引用 查看   
  8. #8楼[楼主] Cat Chen      2011-12-14 10:07
    @lorgine
    是指哪方面的性能?你现在用的是 1.x 还是 2.0?
     回复 引用 查看   
  9. #9楼[楼主] Cat Chen      2011-12-14 10:08
    @lorgine
    是的,性能非常中有。有可能开发者自己认为做出来就非常 cool 了,但用户觉得慢立即就拒绝使用了。
     回复 引用 查看   
  10. #10楼[楼主] Cat Chen      2011-12-14 10:09
    @yanz
    可以用 Node.js 啊,而且部署到云端上也方便,个人开发原型也不用钱。当然,数据存储总是要有的,不喜欢 SQL 可以用 NoSQL,例如 MongoDB 或者 Redis。
     回复 引用 查看   
  11. #11楼[楼主] Cat Chen      2011-12-14 10:11
    @wtcsy
    其实掌握 web server 相关的技术,更多的是为了了解 web server 上常见的设计模式,这样你才明白为什么别人提供给你的 HTTP API 要设计成这个样子。当然,熟悉 HTTP 协议本身也非常重要。
     回复 引用 查看   
  12. #12楼 yanz      2011-12-14 10:17
    @Cat Chen
    嗯,倒是提醒了我。其实之前看了些node.js的资料,觉得精力跟不上,暂时放弃,现在再试试
     回复 引用 查看   
  13. #13楼 杨硕      2011-12-14 10:42
    豌豆2的品味真的不是很好,人性化很低。
     回复 引用 查看   
  14. #14楼[楼主] Cat Chen      2011-12-14 10:55
    @杨硕
    能否说说你觉得不好的地方?
     回复 引用 查看   
  15. #15楼[楼主] Cat Chen      2011-12-14 10:56
    @yanz
    找个具体的目标,然后开始做项目,这样比较有效。
     回复 引用 查看   
  16. #16楼 GoFuture      2011-12-14 11:15
    豌豆荚的老用户,当时觉得功能很赞,但是360也出手机精灵了,哎
     回复 引用 查看   
  17. #17楼 浮生如斯      2011-12-14 11:37
    Fuck啊 感觉好像是替豌豆荚招人的。。。
     回复 引用 查看   
  18. #18楼 lorgine      2011-12-14 12:01

    这个太耗内存了吧?一百多兆。
     回复 引用 查看   
  19. #19楼[楼主] Cat Chen      2011-12-14 12:57
    @GoFuture
    360 的其实就是 91 吧。

    360 的产品设计确实非常好,只不过它的安全软件直接威胁到用户机器的安全,所以我是不安装任何 360 的产品的,在不带我任何私人信息的虚拟机内研究除外。
     回复 引用 查看   
  20. #20楼 Jeffrey Zhao      2011-12-14 13:24
    啊,你去豌豆荚了啊?
     回复 引用 查看   
  21. #21楼[楼主] Cat Chen      2011-12-14 13:30
    @Jeffrey Zhao
    你看你长期不上 Twitter,消息落后了吧?赶快回来吧。

    P.S. 等我回广州了,我就去深圳找你玩吧。你现在去香港的机会多吗?
     回复 引用 查看   
  22. #22楼 Jeffrey Zhao      2011-12-14 13:43
    @Cat Chen
    哈,我twitter就一直想到了就看两眼了,再关注关注名人之间的吵架绝交运动之类的。
    我已经拿到工作签证了,接下来有大把机会在香港(准确地说可能就能周末回深圳了)。
     回复 引用 查看   
  23. #23楼 简简单单就好      2011-12-14 13:45
    web前端必须知识面要广
     回复 引用 查看   
  24. #24楼[楼主] Cat Chen      2011-12-14 14:44
    @Jeffrey Zhao
    那不错啊,平时在香港哪个区上班啊?
     回复 引用 查看   
  25. #25楼[楼主] Cat Chen      2011-12-14 14:45
    @lorgine
    这是 1.x 还是 2.0?
     回复 引用 查看   
  26. #26楼 发条青蛙      2011-12-14 15:02
    楼主,cat in chinese chrome下面打开是乱的,IE8 也是……english也是……
     回复 引用 查看   
  27. #27楼[楼主] Cat Chen      2011-12-14 15:24
    @发条青蛙
    我在 Chrome 下面打开是正常的,并且 meta 里也设置了正确的 charset:

    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

    是否有更多相关信息可以提供给我?例如是否有代理、VPN 在中间,网络运营商之类的。
     回复 引用 查看   
  28. #28楼 Jeffrey Zhao      2011-12-14 15:38
    @Cat Chen
    上班是在港島東中心里面,就在太古附近了。
     回复 引用 查看   
  29. #29楼[楼主] Cat Chen      2011-12-14 16:01
    @Jeffrey Zhao
    地方不错啊,如果我有朋友想去香港工作我就推荐给你吧。你们也有推荐奖金吗?
     回复 引用 查看   
  30. #30楼 testzhangsan      2011-12-14 17:20
    @Cat Chen
    @Jeffrey Zhao
    看我这篇文章和评论后,我才知道:原来这篇文章是用来招人和老友重逢的,呵呵。
     回复 引用 查看   
  31. #31楼 Jake Lin      2011-12-14 17:37
    我觉得前端拼细节,文章不错,能推荐一些学习方法吗,谢谢。
     回复 引用 查看   
  32. #32楼 lexus      2011-12-14 17:40
    你不是在百度吗,创业去了?
     回复 引用 查看   
  33. #33楼[楼主] Cat Chen      2011-12-14 20:36
    @Jake Lin
    细节的话,比较依赖于反复练习,同时要有一定的完美主义倾向,不把最后一点缺陷修复就不罢休。
     回复 引用 查看   
  34. #34楼[楼主] Cat Chen      2011-12-14 20:37
    @lexus
    我半年前就离开百度去了 Yahoo,只不过 Yahoo 也没什么特别好说的,所以这期间也没写什么。
     回复 引用 查看   
  35. #35楼 发条青蛙      2011-12-14 21:16
    页面顶端显示无法显示该页,然后下面的文章能看到 chrome 15
     回复 引用 查看   
  36. #36楼[楼主] Cat Chen      2011-12-14 21:58
    @发条青蛙
    能否发个截图给我看看?此外,如果你是在中国内地访问的话,你是使用什么方式访问的?
     回复 引用 查看   
  37. #37楼 {Prism}      2011-12-15 07:32
    这是典型的“中国特色”问题——文人相轻——做service的瞧不起做前端的,管人家叫“做ui的”;做前端的瞧不起做后台的,嫌人家画出来的界面丑。说到底,程序员是一种比较贴近于“文人”的工程师(毕竟还是靠码字儿活着嘛),所以难逃中国知识分子的弊病。国外就没这种情况,写service还是ui,或是SQL,都一样被视为团队的重要组成部分。
     回复 引用 查看   
  38. #38楼 迭_戈      2011-12-15 08:32
    引用testzhangsan:
    @Cat Chen
    @Jeffrey Zhao
    看我这篇文章和评论后,我才知道:原来这篇文章是用来招人和老友重逢的,呵呵。

    真逗
     回复 引用 查看   
  39. #39楼 testzhangsan      2011-12-15 09:33
    @迭_戈
    园龄5年,伍迷是你的粉丝。
    高人,低调。
    佩服!
     回复 引用 查看   
  40. #40楼[楼主] Cat Chen      2011-12-15 11:55
    @{Prism}
    是的,有些问题确实是中国特有的。国外的团队都不会有这样的问题——你开开心心做完自己的部分,然后拿钱走人就是了,没有人会特别在乎自己是不是核心。
     回复 引用 查看   
  41. #41楼 MK2      2011-12-15 15:02
    CatChen 回广州了啊,膜拜了很久,只有缘见过一面。。。
     回复 引用 查看   
  42. #42楼[楼主] Cat Chen      2011-12-15 17:08
    @MK2
    我暂时还在北京。
     回复 引用 查看   
  43. #43楼 minvt      2011-12-15 17:40
    引用Jake Lin:我觉得前端拼细节,文章不错,能推荐一些学习方法吗,谢谢。

    同感,+1 :)
     回复 引用 查看   
  44. #44楼 Jeffrey Zhao      2011-12-15 19:42
    @Cat Chen
    推荐奖金自然有,不过我不算在香港工作哪,不会长期呆的,估计也最多两三个月,然后一个星期去一两天,保持紧密联系而已。
     回复 引用 查看   
  45. #45楼 Jeffrey Zhao      2011-12-15 19:42
    @Cat Chen
    豌豆荚有广州分部?还是休假亚?
     回复 引用 查看   
  46. #46楼[楼主] Cat Chen      2011-12-16 11:05
    @Jeffrey Zhao
    广州分部暂时不在任何计划内,所以我这叫做 work from remote。
     回复 引用 查看