关于界面的价值观与方法论

关于前端开发这份工作

26October2009

一直想写点关于前端开发职位本身的文字,但写了好几次都没发。最近又在持续的招聘,对应聘和招聘有些感想,零散的写多少算多少吧。

关于“前端开发工程师”这个职位
当一个词开始泛滥,就会被人忘记它的本意。我只讲我认为的解释。首先,它是“开发工程师”,也就是程序员。其工作内容的本质,就是写代码。所以,程序员应该具备的素质,比如逻辑能力,写代码的水平等等,算是它最最基础的要求。

在此之上,则是另一个要求:“界面开发”。对“看得见”的东西的感觉要敏锐。这偏偏是大多数重于理性思维的普通开发工程师,所无法具备的一项能力。坦率的说,这也是前端开发工程师与众不同,可以引以为傲的地方。前端开发职位,正是一个将看不见的逻辑转化为看得见的图形的重要角色,也可以说,一个优秀的网站产品,“最终”的成败系于前端开发这一环。

如何入行前端开发
由于现在这个劣币驱逐良币的年代,前端行业里滥竽充数太多,真正优秀的又都各占着坑不大挪窝,所以有必要仔细回答一下这个问题,以期更多有潜质的人能加入我们。我按当前状态来分类:

如果,你正在从事“网页设计”、“网页制作”方面的工作。我得先说明一下,“会做网页”不等于“前端开发”。再重复一遍:前端开发是写代码的,是用代码来构建网页界面和交互。如果还不明白,我举个例子。在宜家买个电脑桌,带回来需要自己把几块板拼成电脑桌。这个过程你会做,但绝对不会有人把你称作家具木匠。这只不过是有现成的材料,按照图纸把成品拼装起来而已。前端开发,就相当于给一块木头,要从刨木头弹墨线开始做。也不要以为今后WYSIWYG工具发达了,就没前端堆代码这碗饭。但凡纯手工打造的都是上乘精品,再过一百年,这个道理都会在的。(这样说,感觉自己好像深山里的老师傅,hoho)

如果,你正在从事“软件开发工程师”方面的工作。那你遇到的就是另一个问题了:对于界面的敏锐度。其实前端开发也不用做设计,所以不需要知道该如何“做菜”,但一定要知道好吃不好吃。能够知道什么界面的是好看,什么界面是不好,这其实并不容易。我其实也很困惑,为什么大多数人对界面好看不好看没有什么感觉。但苹果告诉我们,界面好看到极致,确实是可以比一般的产品多出一些价值的。

如果,你正在从事“前端开发”方面的工作。那就需要问问自己几个问题了:对于前端开发所必须的技术,你掌握多少?“够用就行”的知识量,是无法胜任“真正的前端开发”的。这里有一个很重要的问题:我接到的很多简历,确实可以看到对方过去一直在从事前端开发工作,但给我的案例都是非常糟糕的。如果说,过去的工作环境让你无法做出自己想做的东西,我认为这不是值得体谅的借口。我也面试过很多来自不好的公司的人,他们同样给了我他们自己平时做的实验性作品。诚然工作环境局限会让一个人很容易止步,但我真正欣赏的其实是对前端开发本身充满热情的人。之前的“堆代码”,只是我的一种戏称。如果你真的觉得前端是无聊的堆代码,那其实也无法指望在将来有不断的进步。其实,任何一份工作都是这个样子的,只有热情才能将人推向完美。

如果,你只是一个“前端开发爱好者”,比如,只是一名学生,还没有工作经验。其实我经常会遇到这个来自菜鸟的问题:怎么学CSS或JS。那,如果认真的打算作为职业来学习,有几个简单的忠告:

1. 通读权威指南。不要瞎读,外面烂书太多。倒不是说烂书学不到知识,它们之所以是烂书,是因为它们缺乏一种“正确的价值观”。什么是卓越的方法,什么是优雅的代码,这些都是有“品味”和“格调”的。由于我近期看的书不多,也不想为别人打广告,所以我只能给出一个简单但绝对不会错的答案:看《权威指南》。

2. 多做自己想做的练习。比如自己做一个简历网站或是博客,把想用的技术都用上去,做了一版再做一版。不要指望通过接外包项目之类的能给你带来技术上的提高,替他人做嫁衣其实让你很难很好的发挥的。

3. 多向他人学习。这不是说你得缠着个高手整天帮你解答问题。但凡技术高手,都是自学、google、自己琢磨+和人讨论的。计算机技术,向来不存在“教会(呃,第一个字念一声)”这一说。多和别人交流,共同提高,这才是正确的做法。

我还会其他的技能
我也时常会接到简历,声称会设计,会flash,会PHP或.NET。淘宝倒是一直要求应聘的前端开发一定要会一门非前端编程语言。我想他们的本意或许是在强调我开篇的第一点:前端开发是开发工程师。回到开初的问题,会一些周边的技能,对前端开发是否有帮助?答案当然是肯定的。但我在面试时从来对这些方面只字不问。对于一个优秀的前端开发,最重要的仍然是对前端技能本身的精通,而我相信,当你全身心投入在前端技能上时,是不大可能将其他的技能也同样做到精通的。既然不精通,我也没必要测试了。如果来者说会这些,我知道了,我也相信,就可以了。反过来,如果你真是对前端技能精通,是不可能对这些周边知识一无所知的。其实,它们都是和前端开发工作紧密结合的,很容易触类旁通。就像一个优秀的网页UI设计师,是不可能对HTML一窍不通的。

只会CSS或只会JS
一般而言,前一种情况比较多:CSS简单嘛。aoao同学说,百度是愿意要的,当前前提是“足够精通”。而淘宝的招聘广告则是狠狠的说:两者都要好。我个人是觉得,可以容许在前端开发中再细分为界面工程师和JS工程师的。但前提是,这个team已经有足够的钱来养一个大大的前端开发团队。至少对于小公司(比如偶们公司),仍然希望来者身上有足够多的剩余价值可以被榨取(hoho)。

先写这么些吧。其实,还有一些关于前端开发职业发展的想法,等我下次无事可做时再说吧。


  1. vapour:

    只可意会,不可言传。

  2. kevin:

    不看别人在Reader中推荐你,我还不知道这个小麦真是你,不知道你去了土豆

  3. 龙子:

    爱好前端的飘过~~~

  4. leplay:

    土豆也不小啦~ 接着学习 js 去。

  5. clone:

    对前端极度热爱的同学拜读过!

  6. perfectworks:

    权威指南必须是厕所常备书籍啊

  7. key4ever:

    努力写代码

  8. dansion:

    怎么能不提html呢?

  9. 晴枫:

    兴趣是最好的老师,前端需要多实践来提高

  10. paper:

    走过,路过,千万可别错过~~~

    飘过,顶过,千万可别留过~~~

  11. 舞妖:

    只会CSS属于小精通。。
    努力学习JS的飘过。。。

  12. mikeyao:

    同时精通css和js的人不多吧?我们公司的做法是,js由后台程序员带了,前台页面包括css和浏览器兼容性有网页设计师做(设计稿到最终的页面代码)。

  13. hax:

    某个ued部门的头头在面试的时候问我html/css/js哪个更精通,我回答我都很精通,他貌似对我的回答很不满意。。。
    说正经的,js好歹是一门编程语言,因此与html/css在知识结构上有些不同。不过如果仅仅是网页编程,只要精通jquery就好,不必一定要精通js。

  14. Donna:

    话是这么说,做前端的只要求会做制作,这排除大公司,一般的公司,你做前端不仅仅是要做制作,设计,交互,seo都要求会。
    我一直处于制作的阶段,但是还是感觉底气不足,在外面吃不消。

  15. 笑笑:

    这文章不错

  16. Twitter Weekly Updates for 2009-11-01 - 岁月如歌:

    [...] http://www.mikkolee.com/261 小麦说出了很多心里话 # [...]

  17. army8735:

    土豆也不小了……

    像淘宝那样要求会一门非编程语言,我感觉是为了让前端人员更好的和后端人员合作。不懂session不知道post、get请求的话还是很难办的。

  18. 单向度:

    仁兄的一席话让人茅塞顿开,望以后出更加有指导性的文章,疯狂渴望中!

  19. 小麦:

    @hax 鉴于你JS如此的精通,你CSS肯定不够精通。哇咔咔。

  20. 橘左近:

    什么时候聊下前端该如何和UI设计合作,对拿到的PSD有什么要求等等

  21. jkfzero:

    能不能介绍顺便介绍一下前端工程师的职业路线。
    比如 |->前端开发工程师->| |->产品设计师
    | | |
    前端程序员->|->UED工程师->—- |–|->用户体验专家
    | | |
    |->前端架构师->—– | |->*****

  22. Sivan:

    还不到一年就毕业,的确对这个职位很向往,而又不知道自己的水平到底达到一个什么标准。每当看到招聘信息那些“全面人才”的要求,就觉得自己还有很多欠缺。

  23. 浅谈前端新人的职业规划 - 笨活儿的Web前端和网页设计:

    [...] 这其实大致描述了在前端领域可能面对的挑战——视觉,交互,前端开发。这也正是大部分互联网公司UED部门的职位划分。平常所说的前端,一般指狭义的“前端开发”,此文标题里所说的“前端新人”,也是指作为程序员的各位刚入行的前端开发者。程序员有什么成长轨迹,前端新人自然也八九不离十——一日千行代码,钻研细节成为技术大拿,自写程序贡献开源社区,出书立著;学习管理经验,负责团队项目架构,跳槽或创业,当老板赚大钱…… [...]

  24. 辉舞世间:

    看了挺有感触的,发现我还只对CSS达到了精的地步,真正的通还差一点点……

  25. Thankwsx:

  26. 小麦:

    @Thankwsx:收到,多谢~

  27. lisfan:

    。。。。。。对前端又了解些了,步入真正的前端还有一大步要走,目前也仅仅只是CSS精而已

  28. uoian:

    受教了。我也在做前端开发,不停学习中…

  29. 季氏安安:

    不精通CSS,也不精通JS的飘过…