还是写点东西吧,不管有什么用,起码没有坏处。
– 写在最前面
在互联网这个快速变化的行业,要跟上每天都可能改变的需求,传统的瀑布开发模式显然不合适。
于是有“敏捷软件开发”这样的新开发模式被应用到互联网的日常开发当中,而这也是在腾讯内常用的模式。
根据《敏捷软件开发宣言》,四个最重要的价值观是:
- 人和交互重于过程和工具。
- 可以工作的软件重于求全责备的文档。
- 客户协作重于合同谈判。
- 随时应对变化重于循规蹈矩。
由以上的价值观所强调的部分,其实可以归纳出两个要点:人本身,以及人之间直接、快速、有效的沟通。
从人的角度考虑,最起码的要求是,需要整个开发过程中的每个角色都可以在其位,谋其事。
至于角色的划分,可能不同公司有不同的方法。在Web方面,根据我的理解,大致可以分为以下几种:
产品经理:
基本上是各个角色中和人打交道成份最高的一个,所以对沟通能力的要求会比较高;另外良好的策划能力也是必须的
负责产品的整体方向,收集用户需求(包括来自用户和老大的),协调各种资源⋯⋯
常用的工具是Word、PPT、各式各样的沟通工具(IM、Email、SMS、BBS、广播⋯⋯)
项目经理:
跟踪项目的开发进度,保证版本的准时交付
负责规划产品的整体开发,划分需求,分配任务⋯⋯,
常用的工具可是各种各样的协作平台(例如TAPD)
UI设计师:
最具艺术家气息的角色
打交道的对象是布局、色彩、字体等等UI相关的元素
用户对网站的第一印象主要源自于UI设计师对产品的设计和感觉
常用的工具是PhotoShop
页面设计师:
将UI设计师的设计图切分为浏览器可以解析的页面
打交道的对象是HTML、CSS
最麻烦之处在于要兼容页面在各种浏览器上的表现,尤以个性独特著称的IE为甚
常用的工具是Editplus、Notepad++等编辑器(我没见过有人用Dream Weaver或者FrontPage),IE Dev Tool、Firebug等调试工具
交互工程师:
处理页面上的动态效果,浏览器和HTTP Server之间的通信,以及浏览器上的业务逻辑
打交道的对象主要是JavaScript(VBScript极其少见)
最麻烦之处在于要兼容脚本在各种浏览器上的表现,尤是以个性独特著称的IE为甚
常用的工具是Aptana等IDE;调试会用Visual Studio脚本调试器,Firebug等,当然也不会禁用alert,虽然比printf更不优雅
前端工程师:
串联浏览器和后台服务间的数据传输,产品逻辑的主要控制者
打交道的对象是PHP、JSP、ASP、CGI等动态程序
这里的前端主要是指后台服务的前端,充当了表现和数据间的桥梁。
对应到MVC模型,属于Controll部分。相应的,前面提到的三个角色属于View
常用的工具是Eclipse、Visual Studio、Source Insight、TextMate等IDE(可能SI和TM不算IDE,因为本身没有编译功能,不过可以定制)
后台工程师:
实现后台服务,为网站的数据存储提供支持,是系统性能、可靠性的主要保障者
打交道对象是OS、API、网络、文件系统、MySQL等
MVC模型里的Model
常用的工具是VIM、Emacs
UI设计师、页面设计师、交互工程师、前端工程师、后台工程师之间的关系,有点类似于网络模型中的各个层次:使用下层提供的服务,并为上层提供服务。
用户可以直接感受到部分,大部分都是UI设计师、页面设计师和交互工程师完成的。
因为关乎用户体验,所以他们的工作需要处理非常多的细节效果,这许多细节的叠加,就构成了用户对网站的感觉,决定了用户是否会喜欢上我们的产品。
而前端工程师和后台工程师的工作很多是用户不能直接看到的,有点类似于海面下的冰山。虽然不能直接看到,但系统的速度和稳定性都依赖于两者的工作。
而产品经理和项目经理基本上和上面的五个角色都会打交道。
在实际的工程中,并不一定每个角色都有一个或多个人担任,往往是一个人身兼数职。例如,在项目的起步阶段,1经理、1设计师和1工程师就可以构架出基本的功能和服务。
看了上面这么多文字,如果让你想办法提升一个团队的产能,你会有什么建议?
在我看来,不外乎两个途径:提升个人能力,降低沟通成本。
先说提升个人能力。这和每个人的基本素质、学习欲望、工作态度等自身因素有关,也受公司的氛围、培训以及行业的状况等外部因素的影响。这些都不是朝夕之间可以改变的,所以如果希望短期看到成效,还是看看沟通方面可以做些什么。(当然,如果有充足的资金,人也不是问题)
关于降低沟通成本,我觉得有几个方法,效果从好到差分别是:
上策:将上述的各个角色都放到一个真实的Team里
这在小团队或者创业团队里比较容易实现,但是当人员日益增加,小组按照职能划分之后,就很难维持了。
中策:成立一个虚拟团队,并让他们坐在一起
如果不能保证组织架构上的整体性,其他保证名义上和空间上的吧。但如果人员来自不同的部门,这一条也很难实现。
下策:定期会议
其实很多无谓会议都是低效的根源,但如果没办法做到以上的两点,唯有牺牲一些个人工作的效率,来提升沟通的效率了。
上面的种种方法,终极目的都是“让每个人自始至终都参与其中”,有了归属感之后,自然就不会把实现产品仅仅当成是自己的工作了,其实这也是QQ邮箱能够做到敏捷的秘诀吧。
近期评论