怎样才算是个Web Developer
到今天,在公司完整参与的第一个项目算是交付测试,我也松了一口气。这次是做庆祝支付宝4周年的活动。年庆活动就像是兴奋剂,虽然用户未必有真的实惠,但运营的人能有真的KPI。 回到今天的话题,怎样才算是个Web开发者呢?大学第一年曾有个老师问我,将来想做点什么。那时我基本啥都不懂,只是说,我想搞Web开发。一语成谶,后来的好几年,我没写过几个windows上跑的软件,却大大小小做了不少网站。我觉得做Web开发比做狭义上的软件开发要复杂,因为你不仅得掌握至少一门后端语言,还得了解CSS、javascript以及XHTML标准。 在这次的四周年项目中,其实后端大部分东西都是现成的,无非是几个接口调用一下,抽个奖兑个红包之类的。但前端的活动页面需要UI的同事配合来做,然后把切好的页面拿给我们加上程序。别的时候这样的流程还走得通,但这次情况不一样,很多地方都需要用AJAX,提示消息全部要用弹出层。一开始几个java工程师认为一天能搞定的活儿,N个人干了两周,包括加班,才勉强提交测试。 有很多细节,比如UI的同学们发来的弹出页面Demo,需要点击才能弹出提示层。同事们在使用的时候,只能在程序里模拟一个button.click的事件。UI的同学们用的CSS Prime Sprites也造成了不小的困惑,为啥没改背景图图片都会变涅?更别提Firefox和IE6/7之间的兼容性问题,我很怀疑兼容性问题不会在测试中得到重视。 我有些用js、css的经验,所以得以解决了不少问题。看到支付宝UED团队招聘的Flash,我才知道公司还有一个叫Web Developer的职位。把前端和后端分开来做,在我看来,实在不是一件好事。但有几个人能把前端和后端都做好呢?Livid这样的天才不是随便哪家公司都能求来的,这样的职位设置,只能认为是不得已而为之。和周围同事聊起javascript,普遍的结论是作为java工程师不需要去学习javascript,但我觉得所谓Web开发者,并不只是会做前端或会做后端就合格了。融会贯通是需要的,我曾和同事写过一封讨论的邮件,主要想表达的内容是这些: 从Web后端的语言说起,比如PHP,java,ruby,python这些,总体的思路是一样的。在一次HTTP请求中,后端的程序做的事情无非就是 ,接受请求,按照既定的规则进行处理,给出响应。至于是返回一段文本,还是返回一个网页,或者是别的格式,这些都不重要。因为最终是由浏览器来解释。 之后一层,就到了前端。首先是HTML,其实有点像我以前画素描:画在二维的平面上,但目标是呈现一个三维的场景。HTML是一个一维的字符序列,但它规划出了一个网页的结构,像是一副骨架。这就是二维的了。HTML是基于Tag的。 接下来就是CSS,CSS的写法其实就是一个个hash,用key-value-pair来表示某(些)元素该长什么样子。比如一个鼻子,颜色是黄的,7cm高,4cm宽。这些都归css管。 最后是javascript。在我刚接触它的时候,它被描述为“基于对象的语言”,因为那时人们用js大部分是拿来操作网页元素,所以说它是基于对象。但javascript其实有继承、封装、多态的特性,是一门十足的面向对象的语言。它可以把(X)HTML和CSS完美地结合起来,在AJAX中也被用来访问后端。js很容易上手,有很多好用的库,但,它也是最容易遇到兼容性问题的。 其实一切都是逻辑。这次的四周年活动下月就将推出,关注前端开发的同学们可以仔细翻阅一下源代码,我承认我们做得东西很幼稚,包括Ajax请求都是手写的。但我会努力改变这种情况,下一步希望可以在周会的时候,做一些这方面的分享。 觉得又要写后端程序又要做前台页面很痛苦的同学,建议看一下Rails这个框架,首页上的“Web development that doesn’t hurt”,直到如今我才有点明白这意思。以前用PHP,也一直没觉得hurt呀 。欢迎大家留言给我,谈谈觉得怎样才算是个Web开发者呢? 周末去参加这个活动,感兴趣的朋友可以一起来。

