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

关于前端开发这份工作

26October2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

只挑我懂的来拍

6October2009

标准的 Web 组成应该包括 3 部分:结构、行为和表现。这种思想最早在微软设计的DHTML 模型中初步提出来,但是很不规范,也不成系统。后来,W3C(World Wide Web Consortium,万维网联盟)组织规范了 Web 的构成。根据 W3C 制订的标准,Web 标准不是某一个标准,而是一系列标准的集合。完整的Web 应该由以下3 部分组成:
· 结构(Structure)。
· 表现(Presentation)。
· 行为(Behavior)。
这 3 部分对应的实现技术如下。
· 结构标准语言:主要包括 XHTML 和 XML。
· 表现标准语言:主要包括 CSS。
· 行为标准语言:主要包括W3C DOM、ECMAScript。
上面各种标准语言大部分由W3C 组织制订,但是部分标准也由其他标准组织制订,如ECMA(European Computer Manufacturers Association,欧洲计算机厂商协会)制订的ECMAScript。

“标准的 Web 组成应该包括 3 部分:结构、行为和表现。”
“ 完整的Web 应该由以下3 部分组成:结构 行为 表现”

1. 先挑最重要的说吧。Web标准的核心思想是,结构、表现和行为要“分离”。不是说包含这三个部分的就是标准,也不是说不包含这三个部分的就不标准。

2. 稍微扯玄一点。任何一个网页都会有结构、表现和行为,就哪怕不带JS、不带CSS的“纯HTML”也是这样:比如HTML标签的默认样式,就是它的“表现”;比如target=”_blank”这种属性,就是它的“行为”。Web标准号召结构、表现、行为要分离,也正是这个思想,导致XHTML 1.0 strict 废除了a标签的target属性,希望交由JS来决定链接是否新开窗口(呃,当然,现在看来这个规范很蠢)。

3. 所以,即使那么喜欢“结构、表现、行为”这种辞藻,也不一致一段话里开头讲一遍,末尾又讲一遍吧?

根据 W3C 制订的标准,Web 标准不是某一个标准,而是一系列标准的集合。

其实我一直以来没跟人较过这真:但事实上Web标准跟W3C半毛钱关系都没有。Web标准是WaSP(Web Standard Project,网页标准组织,大本营在这儿)提出的一种“前端开发规范”(呼,这个名词我真喜欢)。当然,W3C制定的一系列规范文档,是多少融合了Web标准的思想,但它只是一些语法规范,完全没有提到所谓结构、表现和行为分离的事情。我可以写一堆带了N多style和N多onclick的标签,严格符合XHTML语法规范,但很明显它并不符合Web标准的分离原则。

所以这里引出一个重要的结论:通过哪些啥W3C验证,跟网页是否符合Web标准没有任何关系

一本书开篇第一章就这么糊里糊涂的,也能看得出治学态度的浮躁了。其他的部分,我也不是啥高手专家,不敢妄加评判。不过,反正我本人是看得云里雾里的,不知道真正的初学者看了之后,能收获些啥。当然,这种书也有个好处,就是让那些梦想成为专家的“初学者”们,一下子捕获了众多华丽辞藻,说不定能激起他们对散发出牛逼哄哄气氛的网页前端技术有了新的神往。前端技术嘛,永远是这个下场,门槛低,易炫耀,会点皮毛再堆点辞藻,就能忽悠住一大片人。

好吧,我确实是因为blog老不更新,才硬挤出这么一篇赶时髦的文章。其实,我可没那众多高手和前高手(呵呵)那么有社会责任感,初学者嘛,总是要走很多弯路,买很多烂书的。咱这些从洪荒年代走来的人,谁没买过几本“实战100例”之类的书嘞?一个人的成绩只跟自己追求真理的态度有关,跟图书市场环境没啥关系。

再招一名

16September2009

再招一名哈。

—————-

土豆网上海总部招聘前端开发工程师。作为前端开发团队的一员,你将会肩负如下的职责:

1. 根据产品需求与UI设计稿,负责土豆网主站页面的开发;
2. 保持优秀的界面与交互体验的同时,始终将前端性能的最优放在首位;
3. 设计整站前端架构,并为前后端整合提供完美解决方案;
4. 积极探索先进的前端开发协作模式,持续优化工作流程;
5. 营造一流的前端开发理念与文化,进一步扩大团队影响力。

我们希望你能大致符合如下描述:

1. 全面掌握HTML 4.01与CSS 2.1规范,对于网页标准有成熟而独立的看法。
2. 精通JS的语法特性和运行机制,乐于钻研JS设计模式,并积极探索高级Web应用的最佳实践;
3. 充分理解前端开发对界面设计、交互设计、网站性能的重要性;
4. 持续关注业界新话题与新技术,对前端技术的发展保持浓厚的兴趣与激情。
5. 我们不限资历,但希望你能有丰富的经验,以便游刃有余的面对各种挑战。

如果你目前还不完全具备这些要求,但很渴望并自认有潜质做到这些,我们也很愿意与你面谈并提供尝试的机会。

请在简历里附上以下的内容(如果有的话),以方便我们更全面的了解你:

1. 你最精彩的案例
2. 你阅读的书籍、关注的技术,或是沉迷的技术社区
3. 你的blog

简历请发至 join@tudou.com。