为什么网页设计不应强调分工 2

| 10 comments 2008-12-17 20:51:53

上文讲到过分工不合适的原因,这次想和大家探讨一下我的一些关于如何解决问题的想法:

1. “架构+设计+研究”的分工

简单地说,就是架构组负责底层建设和方向引领,设计组负责设计和实现,研究组负责(部分的)用户研究和可用性测试。详细介绍可查看以前写的《说说互联网公司内设计师的分工》。这种分工能够解决上述的大部分问题。

此外,正如jean.ma所说,在项目内的分工,应遵循“按模块而非角色”的方式来进行(这点我在《说说互联网公司内设计师的分工》也说过),就是不同的设计师负责产品不同的部分,然后由一名总设计师来统筹兼顾。

2. 知识管理、文档管理和版本控制

专门设立一台服务器,使用开源工具(比如Drupal),将所有的项目相关文档都进行集中的统一存放和管理,使任何事情有据可查,减少沟通成本,消灭“产出物发给了A部门,忘了发B部门”,或是某人说“我找不到你发的Demo了再发一次”的问题。

如果你的部门使用Dreamweaver作为设计和开发工具,那就更好了!让架构组把最新的Dreamweaver模板和代码片断上传到服务器上,然后每个人打开Dreamweaver时第一件事情就是更新本地模板和代码片断(DW早就有此功能),这样不仅协同起来效率很高,而且质量可控性很好。可以说,这在一定程度上实现了开发使用Eclipse+SVN进行协同工作的效果。

至于版本控制,一方面,给每一份产出指定一个唯一且明确的版本号,所有项目组成员交流时以版本号而不是“最新”一词为准,消灭歧义和不确定性。

另一方面,如果你使用CVS或SVN进行版本控制,一定要把我们设计或开发的版本(也就是使用CVS或SVN进行版本控制的版本,以下简称trunk版)和给项目组演示的版本(采取手工方式进行版本控制,以下简称milestone版)分开,这样不仅可以加快我们的开发效率,更重要之处在于减少许多沟通成本。

比如,假设你上午9点通知业务部门及开发部门,说某项目的Demo已经做好,访问服务器即可查看,一般情况下你并不能保证所有人都在接到你的通知后立即查看 Demo,很可能有的人是在9:30分看到,有的在10:00看到,甚至有的在第二天才看到。这期间你很可能会根据业务部门或是开发部门的反馈对Demo 进行了修改(哪怕是小修小补),那么这样一来,大家讨论的基础 - 统一的版本就不复存在了。

我们可以借鉴程序员的做法,将trunk和milestone分开:平时在trunk上提交各类修改,如果需要展示给他人,则另外拷贝一份milestone版本(或新打一个分支,但此时意义不大)。比如你调试和预览的地址为 http://ued-server/demo/project-a/ ,当需要展示时,将project-a目录复制一份到 http://ued-server/demo/project-a/milestones/1 ,并以此作为第一个milestone。项目组成员在沟通时,都以milestone为基础。

3. 把视图(view)交给它本来的主人-前端开发(甚至设计师)-去处理

由于模板里常常混杂着HTML和程序语言(暂且以PHP为例),而这两种东西又分别来自于UED和开发两个部门,因此无论是编写还是调试模板,都要牵涉前端开发和程序员的精力。工作职责模糊不清,权责也很难界定。关系好的程序员曾私底下和我报怨说“如果连HTML/CSS/Javascript这些东西我们都写了,还要UED的人干吗”,虽然HTML/CSS/Javascript我都是尽可能完整产出,并且这句话也有其偏颇之处,但我仍对此深觉惭愧。

“模型(model)-视图(view)-控制器(controller)”架构的重要目的之一,就是把视图尽可能与逻辑和数据分开。当以模板的形式把视图分出来以后,为了尽可能地降低模板的复杂性、又同时保持模板具有一定的逻辑和数据处理能力,让不那么熟悉程序的人也能够控制如何显示,人们才开发了各种模板语言,比如PHP中的Smarty和Java中的Velocity。也就是说,这种极度简化的模板语言就是专门给设计人员提供的,它甚至不会比Javascript更复杂!

当把视图部分的工作完全交给UED后,开发和UED的合作可以以这样的方式进行:1)UED提供原型;2)开发按照原型提供所需的逻辑和数据(通常是一大堆if...else...和$username等变量);3)如果有必要,可以要开发按原型来写一个不考虑内容及样式的模板,模板里包含了所有必须的逻辑和数据;4)UED将逻辑、数据和各种前端代码编写进模板。

这个方案我曾和系分及程序员讨论过几次,我们都认为它是可行的。出于可维护的角度考虑,他们其实也愿意将模板的编写工作交给UED。

此方案的优点是显而易见的:开发和UED终于可以真正地各司其职,大家权责明确,从项目管理的角度来说,UED的工作时间计算也更为准确,以前那种“UED协助调试模板,花了大量时间却没有被记录进项目”的情况不会出现。

缺点当然也不是没有,在方案实施初期,UED一定会有阵痛,尤其是对那些从没有接触过后台编程的设计师。

4. 强调工具和规范的重要性,而非某个人的聪明才智

天涯上前段时间流行一篇名为《做单》的小说,里面有一句话印象很深:

“外企更像是一个集团军……民营企业都像是个游击队或者是特种部队……集团军最大的特点就是随便换掉某个人或者某几个人对整个军队没有任何影响,游击队就不能承受这种变化。

国内的企业面临最大的问题就是从游击队向集团军的转变中,因为人意识的转变跟不上,而导致转型失败……一个民营企业要想做大,必须经历这种从游击队向集团军的转变。”

关于规范说得够多了,还是说说工具吧。

从团队的角度来说,工具主要的目的就是最大限度地统一和标准化产出物,提升团队的工作效率和质量。因此以下提及的工具都是与这个目的相关:

  1. Dreamweaver。它内建Templates和Code snippets功能,并支持从服务器上同步,如果整个部门都使用Dreamweaver的话,那么大家的Templates和Code snippets就全是规范的;
  2. 框架。无须赘言,好的框架可以让你3分钟做完原本需要10分钟的事情,并且产出物(典型如代码)高度规范;
  3. 文档库。比如前文提到的VelocityDoc,有了这东西,设计师可以在短时间内了解整个网站的模板,包括模板整体的结构、每个模板的作者、功用、所引用的CSS/Javascript,以及它所属的layout和所包含的control/element等等。对于新同事来说,文档是最好的老师;
  4. 封装。努力地将常用的东西封装成模块,避免重复劳动,同时也能降低对设计师的技能要求。比如说对于表单界面,交互设计师根据不同的错误情况,需要制作出不同的原型,费时费力,还容易出错,如果封装一下,设计师只按照一定格式提供错误提示的内容就好了,剩下的什么都不用管,全交给系统自动处理。

上面讲得有点太干巴巴了,这里有一个06年做的东西-代码助手-算是上述思想的一个集中体现吧。

 

关于分工的话题暂且到此为止吧,这么枯燥冗长的内容不知有多少人可以坚持读完,呵呵。

10 comments so far

  1. 沈蚊 2008-12-18 00:34:57

    没下载,只有图……岂不是更干……mad.gif

  2. taine 2008-12-18 09:06:06

    专门设立一台服务器,使用开源工具(比如Drupal)...

    没用,真的没用,很多公司都有类似这种内部服务器,但没几个真正实施起来。关键还是人,没人愿意用,靠行政命令不行。

  3. 奇遇 2008-12-18 09:28:27

    要不要分工是个管理问题,视公司规模、业务模式、管理方式等等而定,不可简单的说要不要分工。

    从管理学的角度来说,协作会提高效率,当前前提是管理和人员素质要跟的上。

    UED要写HTML/CSS/Javascript吗? 可能不同的公司对UED的定义不一样。

  4. 丁宇 2008-12-18 10:02:41

    @沈蚊: 有版权的。这其实就是个PHP+MySQL的应用,你甚至可以用Wordpress代替!

    @taine: 我发现了,你是来砸场子的,哈哈 confus.gif。不过我同意你的说法,人是关键哪! 至于知识管理,这个是绝对必要的,大辉写过一篇相关的文章,推荐阅读:http://www.dbanotes.net/web/web_operations_knowledge_management.html

    @奇遇: 嗯,没有绝对正确的方法,就像你说的,方法要适合于公司情况才行。但UED如果连HTML/CSS/Javascript都不写了,那……我只能说,这听起来有点奇怪。

  5. 百纯 2008-12-18 14:22:47

    能具体说说封装么?

  6. jean.ma 2008-12-18 17:14:53

    你们现在做得东西已经相当规范了。

    模型(model)-视图(view)如果都是UED的人员来做,前端开发水平要很不俗,这个技能会将招人工作提高到更令人崩溃的一个等级。。

    一个疑问,你这里提到的视图实现,应该要与后台研发协调,这样ued的工作进度很可能将受制于研发的进度,项目的战线可能会拉得很长。你们如何协调这方面的东西?

    我们前端实现还是由研发统一完成,界面小组,只提供原型,和样式。脚本方面要么在原型中使用便于模拟交互效果,要么直接不写,因为这种合作模式,在研发阶段因为选择的开发语言控件的差异,导致脚本抛弃是很常见的现象,无形中会加了很多的重复工作。

  7. 丁宇 2008-12-18 17:33:15

    @百纯: 简单地说,封装就是“抽象-提取-组合”的过程。比如我文中提到的表单的例子,假设一个表单有2个表单项,那么最多可以有3种出错情况,传统方式是交互设计师分别设计这3个页面;如果用封装,你可以这样写html:<input type="text" name="username" message="必须填写用户名" />,这样交互设计师除了把文案写好了,剩下的错误显示可以都交给系统来做。上述代码并不是最佳方案,只是个例子而已。但它说明了采用封装会降低成本。

    @jean.ma: 1)模型还是程序作,这个不可能由设计师来接触的;2)我说过了,好的工具会降低工作的技术要求。你觉得 css('style'); 和 <link rel="stylesheet" type="text/css" href="/blog/css/style.css" /> 哪个更适合记忆和编写?3)战线只会缩短,不会拉长,因为你可以在开始的时候做html原型,等开发的模板搞好了以后,再把两者结合。参见“当把视图部分的工作完全交给UED后,开发和UED的合作可以以这样的方式进行”一段。

  8. 千鸟 2008-12-18 21:51:24

    不错的分享,提供几点参考:

    在组织架构上,就是一个产品设计团队足矣,无所谓UED(貌似很专业)或者其他称谓,原型制作工程师当然也应该包括其中。

    五年来,我一直认为Dreamweaver是做互联网设计不可或缺的软件。虽然它有这样那样的毛病,或者各领域都有更专业的工具来代替,但凭心而论,综合战斗力非他莫属。

    用SVN来管理原型、模板是个好办法,曾经打算试,后来没有拿到足够的资源。包括软件工程、项目管理的很多工具,都可以拿到产品管理来。

    还是那个观点:用web方式做web-based产品设计的优势将更垂直的专业、体系化发展。

  9. 季子乌 2009-03-02 23:57:50

    angel.gif 虽然现在才看到这(几)篇,不过对于过去的工作经验来说,的确浪费了很多时间在沟通和可简化的或是重复的劳动上了。唉,心寒~~

    不过,企业要达到一定的程度(管理者的认知、员工本身的条件——企业的规模反而并不是关键)才能用上你说的这种分工方法啊。。

  10. fer 2009-05-06 21:37:26

    比较赞同第二、第三条,其他我没有发言权。

    @taine

    关于内部用来文档管理、知识管理的服务器完全可行的,但是我觉得有更好的工具,例如google app企业套件,我们曾经把google docs和google site玩的相当顺手

    关于分工,我觉得只要是开发人员都可以参与需求设计,最好从产品原型到最后的实现都参与,这样熟悉数据库熟悉业务流程,开发人员才能做出最傻瓜的产品出来。如果在大公司,团队通常臃肿,理想总是不可能实现,大家各行其责任,走流程都排队,很是郁闷。。。

(Support Gravatar)
  • angel.gif
  • glasses.gif
  • hum.gif
  • sad.gif
  • caresse.gif
  • sick.gif
  • angry.gif
  • zip.gif
  • gun.gif
  • emu.gif
  • big_smile.gif
  • clin_oeil.gif
  • devil.gif
  • wahou.gif
  • confus.gif
  • mad.gif
  • larme.gif
  • wave.gif
  • scare.gif
  • lang_1.gif
  • ask.gif
  • xd.gif
  • eye_up.gif
  • mdr.gif
  • smile_1.gif
  • lang_2.gif
  • zzz.gif
  • bad_smile.gif
  • jet.gif
  • smile_2.gif
  • love.gif

About

我在厦门拍的照片

丁宇(Felix Ding),电脑Geek,狂热的爱书和爱乐分子,99年迷上网页设计,并从此一发不可收。现在在上海做用户体验/产品设计咨询。Email: felixding[AT]gmail.com。

订阅到RSS