Web前端开发--应该有一批程序员去专注
自从接触asp.net以来,就开始接触分层开发的思想。到如今六个年头过去了,.net也从1.0升级到了4.0,正好跨越了6次重大升级。6年中,我参与过学校的教学项目小组;做过程序救火队员友情客串;到中小公司担任过主力程序员;目前自己在带队伍开发一套庞大企业信息化应用。然而,六年过去了,我始终未曾见过真正实施分层开发的队伍或者公司。或者真的有分层开发的队伍或者公司,也许是我的个人经历有限,没有遇到过。担我的经历至少说明了一个问题:很多很多团队或者公司根本没有实行过分层开发。
分层开发有多少好处,无论是书本上还是课堂上抑或是与一些朋友们的聊天中,我们都能明确的表述清楚:让最合适的人去做最合适的事,最大化提高软件稳定性与性能,降低开发成本,提高开发效率。分层开发的好处我们都耳熟能详,但是为什么很少有团队这么做呢?我想有一个关键问题没法解决:我们没有或者找不到可以做前端的人才。
什么是前段人才?不同的组织有不同的看法,但是有一种团队构成模式应该是比较理想且能得到大家公认的:
- 架构师: 负责设计程序架构。
- 项目经理: 分配任务,签收BUG,控制项目进度。
- 业务经理: 与客户沟通,编写项目文档(很多时候是项目经理兼任)。
- 美工: 负责设计程序界面。
- 主力程序员: 编写公共类库,解决高难度问题。
- 助理程序员: 配合助理程序员编写程序框架。
- ado.net程序员:编写SqlDAL层及存储过程,设计数据库等。
- web前端程序员:负责整个web层的编写。
- 测试员: 负责测试整个程序,编写使用与帮助文档。
当然,我们在实际操作中,会有很多“兼职”现象出现。这个是正常的,(我们的公司大多数都属作坊公司,很难配置“合理”的团队)。但是我见过太多太多的“超级兼职”现象,或者说“超级程序员”----按模块分配工作任务,程序员负责从数据库设计到SqlDAL、IDAL、IBLL、BLL、Common、WebService、Model、Cache、Log、Web的编写,我接触程序设计已经有10年了,接触asp.net也有6年了。至今为止,我给自己的定位还是“技术熟练工”,我只擅长Web层的开发,其他层只是了解。我真的很佩服也很可惜那些从头干到尾的程序员----你们太辛苦了,公司要求你们什么都会,所以你们必须的学,然而人的精力终究有限,在有了3-5年的编程经验后,你还是很难很难从众多程序员中脱颖而出,因为你学的太杂了,很难有一项精通的,偏巧,你的竞争对手也是这么做的,所以大多数情况下,你们的技术水平是接近的,升职、加薪更多依靠的是与公司管理层的人际关系决定,然而很多程序员并不擅长人际关系,所以很多人自嘲“我们是IT民工”。
聊了这么多,我想给出一个定义(或者这个词用的不合适,但是我真的希望能够强烈而明确表达出我对这个问题的思考),Web前端到底是什么?它都包含哪些需要我们去了解的技术?
所谓web前端,就是只在分层开发中(三层、七层或者N层),整个的Web层。它主要包含如下技术需要您去了解:
- XHTML:主要指DIV+CSS,技术要求:精通。
- JavaScript:主要指纯js编程或者jquery等框架,推荐考虑jquery框架,技术要求:擅长。
- XML:主要xml规则、格式、使用常识及XSLT(一种格式化xml的语言,可以把xml转化成html或者其他文本语言,可以简单理解为xml的css),技术要求:了解。
- DOM:主要指DOM结构及如何使用,技术要求:熟悉。
- PhotoShop:主要指学会ps中的切图工具的使用,用于将美工的页面效果图转化成html或者aspx页面,技术要求:了解。
- SEO:网站开发人员专属,主要是了解基本常识,页面制作中需要考虑给后来的seo专员以施展空间,技术要求:了解。
- asp.net页面生命周期:主要指熟悉asp.net中各个事件的发生、运作过程,特殊情况下需要此知识用于处理特殊的表现形式。技术要求:熟悉。
- http状态:主要指C#中的HttpModule、HttpHandler、HttpHandlerFactory等相关技术,复杂的页面功能需要这些知识做基础,技术要求:熟悉。
- asp.net编程基本常识:主要指属性、变量、循环、分支选择、函数范围等asp.net编程中的基本常识,技术要求:熟练。
- asp.net控件:这个不用说了吧,技术要求:擅长。
补充说明:四种技术要求说明:
- 精通----顾名思义,要非常非常熟悉,再没有参考资料(百度、Google)的前提下,可独立完成此项工作。
- 擅长----要求能独立解决绝大多数问题,在搜索引擎的帮助下,可以完全独立的完成此项工作。
- 熟悉----熟悉大多数常用的相关知识,简单问题可独立解决,复杂问题可在搜索引擎的帮助下解决大部分问题。
- 了解----知道此技术,对此技术的相关应用较为熟悉,再有参考资料的前提下,可以解决绝大多数常见问题。
无论有用也好,无用也罢,有道理也好,无道理也罢,说了这么多,我其实想表达的只有一个意思:能有那么一批程序员去专注前端----程序员不是神,他应该有自己独特的技术方向,而不是什么都了解,什么都不会。
----答网友 “朱已”问:
从我的经历来看,大多数公司的工资标准时按照个人在项目中的地位(或者说个人负责的代码对项目的重要程度)决定的,有个问题难以避免,前端人员初期工资可能是惨不忍睹,这其实是前段人员还没有发挥出他的价值来。一旦有个三至五年的经验,或者再技能标准达到要求,那么前端可能是最贵的程序员之一。
因为这里有个问题难以避免,能够接触项目的业务逻辑人一般只有两种人。第一是项目经理,第二是前段,其他大多都是编码工人,项目经理能接触业务逻辑不用多说,前段为什么能接触业务逻辑呢?大家不懂软件,不知道作为客户的他们提出想法后,软件是什么样的,所以这时候需要有demo,需要有设计说明书,demo是什么?几乎是纯前端的东西,需求说明书是什么?那是demo+功能说明+软硬件环境及性能说明啊。
这样的人对项目中不重要,我想每个公司的老总心里都得掂量掂量。