要打造一流的web产品开发团队,在团队成员基础能力上一定要下功夫。对于web前端产品开发来说,仅仅掌握web1.0时代简单的”网页套接”是完全不够的。我结合自己的团队配备,特此罗列了web前端产品工程师所涉及的技能列表如下:
通过许多实际项目,个人认为一个完备的前端产品开发团队,必须拥有如下的人才配备,也希望大家补充:
具体技能描述:
【必备】userinterface
photoshop/fireworks design
a – 配合美工将草图形成具体的符合webpage的设计
b – 有快速制作分层高品质psd、png的能力
c – 能迅速将psd、png的内容构思成div css或者table等html代码
flash design
a – 基本动画效果
b – 复杂的交互体系设计,了解第三方swf辅助设计软件
c – 复杂的交互体系设计以及较强的对各类外埠资源(png、jpg、mp3、wav等)的整合能力。精通部分第三方辅助设计软件(ae、swishmax、swift3d等)
【必备】browser-side (web application)
xhtml/css
a – 基本的layout实现
b – 严格跨平台的layout实现以
c – 优雅的html code,尽可能符合标准并有seo的考虑因素。在任何平台、浏览器下基本保持一致。不要求了解各种css的hacks,但要求知道遇到问题应该如何查阅资料以在第一时间内解决。能够为javascript开发人员提供最好操作的dom结构,让js开发人员在开发的时候认为”一切都已经准备就绪了”,而不是”捉襟见肘”。
javascript/ajax/dom
a – 基本的dom操作,了解ajax,可以实现数据通信
b – 基本的dom操作,能写高效率的oop代码,以降低维护成本
c – 基于需求,进行不同的开发,选择合适的框架,做到代码效率最高,用户体验最好,代码下载量最小,并且可以在单独甚至更多产品线中最大限度重用代码
flash developement
a – 基于timeline的actionscript操作,能实现简单交互
b – 掌握a外,能实现数据层通信(与服务器以及本地sharedobject)
c – 精通as1-3,能根据需求进行各类ria开发。无论是要求支持flashplayer8的,还是flashplayer9的,都能做到开发效率最高、灵活性最大(比如对html层的接口设计,等等)。
【必备】client-side (desktop application)
apollo
a – 产品级的封装,基本技术了解(如何打包、如何加入html和javascript等)
b – 掌握a的同时,能利用apollo的api独立设计、开发os的文件i/o功能。
c – 掌握基本技能的同时,对”3d概念体系”有所认知。这里”3d”即:design(设计)、development(开发)、deploy(产品部署)。能用apollo
windows presentation foundation、wpf/e(silverlight)
(待定,欢迎补充)
【增补】server-side (修改:经考虑,这个技能不参与评级)
本来列举了”1、server端简单的技术、脚本”和”2、mediaserver(red5)接口”作为”web前端工程师技能列表“的一种(服务器、数据逻辑层技能的)评判标准。但似乎很多朋友对于前端工程师是否应该掌握server端技能的必要性表示怀疑。确实,要掌握好上述的展现层技能不是意见容易的事情,而且前端工程师的确非常辛苦。但是,站在另一方面来说,辛苦的原因是什么,我不知道在你日夜奋战div css的时候思考过没有。就我的经验,前端的辛苦在于以下几个方面:
重复劳动多,大量的div css都是重复的,即便可以复制粘贴,但几千行的div海洋中去寻找一个入口恐怕都非常痛苦
需求变更多,往往你折腾几个小时终于把跨平台问题解决好了,而且在ie6、7和firefox下面都能显示同样的效果了,甚至连javascript交互都已经快搞定了。突然上面说需求要变。这无疑是莫大的痛苦。
也许表面上看,这跟server端技能无关,但我觉得有好的server端的意识,一定会有所帮助(当然不可能解决所有的问题)。毕竟信息结构和数据库是密切相关的,而server是连接数据库的唯一渠道(至少大多数b/s应用是如此)。掌握server端的基本技能,对于同逻辑层开发人员设计接口是非常重要的。而且html表现层在开发时与数据的分离,也与server端的各种模板技术有关。例如php中的smarty模板(我曾经用的)、jsp 的model2概念等等。html结构如何设计,如何让html重用,甚至在html层进行oop的开发(我现在在新产品线中设计的前端开发流程),都需要server端的支持。最起码,你要告诉php程序员你需要什么。如果你完全对php一无所知的话,那也无从谈起了。
此外,对于创业团队,往往人手非常有限。为了让运营成本降到最低,所有的技术人员都有义务对server端技术有所了解。如果为了修改一个网页的标题还要跑去喊php程序员连接remote server的话,那实在是增加了整个公司的运营成本。
总结:我认为,可以不了解技术细节,但应该知道原理,最好能掌握一两套设计思想(毕竟数据逻辑都在这里走,光看html和javascript,对人的见识还是有局限的,这种局限限制了我自己很久的时间),那将是一比宝贵的财富。