Apr 25, 2008

关于交互设计与技术,以及小公司的一些思考

    最近在写UI部分的API文档。在写的过程中,发现产品在技术实现上的许多不足和缺陷,重新思考了一些功能的实现技术以及可行性,并和底层的工程师做了探讨。有一些方法和技术,不但可以提高产品的质量,提高开发效率,更可能极大的改善产品的体验。虽然想法是好的,也确实可以尝试或者应该那样去实现,但受限于技术水平,公司目前没有这样的技术能力去实现。其实,我主要想到的是PHP和Flash技术。这是两样再常见不过的技术了,但公司目前没有人掌握。我想,这基本上会成为我后面这段时间要去学习的东西。

    抛开公司的一些具体情况不谈,做交互设计,在技术领域应该掌握哪些东西,掌握到什么程度,我有一些思考。

    交互设计,我的一个初略的理解,就是把实现模型转变为心智模型。既然交互设计是实现模型和心智模型的纽带和桥梁,那技术能力应该成为交互设计师的一个必备能力和基本素质。

    Cooper在给同行的话中也说到:“交互设计师通常不是来自各级程序员,尽管如此,他们也是精通技术的人。非技术人员无法想象计算机能为我们做的美好新事物。非技术人员无法理解CPU的时间与用户下次击键之前计算机迅速地完成千万次指令的精细平衡。”

    看一看微软亚洲研究院交互设计中心对原型工程师的招聘要求,有这么一条:“Proven record of developing SW applications for Windows. Must master C++ (or Java), Python, and web development languages. Will be great to have strong programming experiences on Macromedia Flash and Director.”

    Cooper也说到:“(交互)设计师很少编程,除非你可以完全控制你的项目,否则你同时设计和开发将对不起你的用户,这存在利益冲突。”

    我理解这个利益冲突,因为这两年我就一直处在这样的冲突中。我想有好的设计,我同时想有好的技术实现。我曾经为走设计的路还是走程序的路而思考辗转过很长时间。当时一个让我不能放弃程序的理由就是,担心两年的程序经验浪费了。当时不理解设计,不理解交互设计,所以当时有那么一条理由。现在看来,没有浪费,很有用,而且还不够用。

    那么对技术的精通哪里来?我认为还是从实际开发中来。在设计的时候,你不需要考虑某个功能的代码具体怎么写,但你知道应该怎么去实现,我想,掌握到这个程度应该就够了。所以不经历实际的开发过程,不经过亲手敲出自己思考的代码的过程,怎么实现那个功能就不会思考那么清楚,精通就远谈不上。

    那是不是交互设计师都是从事过开发工作的人?这个我不清楚。我认为对技术的掌握,是做交互设计的必要条件。如果有一个设计团队,那团队里需要精通技术的人。如果没有团队,只有你一个人,那你就必须掌握技术。

    很多小公司都有这样的人,要做设计要做开发,一定都有和我一样的困惑。公司不懂设计,公司需要你这样一个多面手。在设计和开发之间,这个平衡很难把握,把握住的结果那也是你的设计一般般,你的程序也一般般,做的糟糕的话还很有挫败感。毕竟做全才很难。怎么办?振之曾经跟我建议过,这时候的重心不是在设计,程序实现最重要,更重要的是,让全体开发人员都有为用户着想的意识,把这个意识带到通常那种边设计边开发的过程中去。交互设计和用户体验不是一个人来抗,一个人也抗不好。看过白鸦一篇文章,是对公司是否应该成立设计团队的讨论,结论是对于一些小公司,不如没有设计团队。这里面有一些道理是相同的。

    我有一些完美主义情结,所以我以前的做法是,把设计和开发分开,其实就是把我自己分开,做设计的时候就只管设计,做开发的时候就只管开发,以为这样就遵循了所谓正确的产品开发流程。但实际的结果和理想相差甚远,最后的结果就是产品很糟糕,设计糟糕,程序也糟糕。现在,我改变了一些做法。像振之建议的那样,要让开发人员具有为用户思考的意识。我会经常发一些博文给他们看,发一些成功的产品例子给他们看,然后在休息的时候引发大家来讨论,有时候甚至是争论和辩论。我也给头头讲一些我对产品开发和项目管理的分析,说出一些不合理和可以改进的地方,也给他看成功产品的设计,让他明白设计的重要性和设计的力量,然后头头就会在开会的时候又引发大家来讨论。这些小动作带来的影响是潜移默化的,也是有效的。整个开发团队,包括你自己,都会受益。而对于自己,要不断的学习和提高,不仅在设计上,也在技术上,因为你是连接用户和工程师的桥梁。

    Cooper 说,“ 设计师不仅要成为用户服务的倡导者,还要成为组织内部革新的倡导者”。所以,有与我一样困惑的同志们,抛开那些困惑,思考一下怎样能把产品做好,怎样能做出一个成功的产品,让你的思考影响你周围的人,然后做你所能做的。这样,用来思考困惑的精力就转移到做产品上来,转移到自我学习和提升上来,这比困惑的心情要好的多,也许会找到久违的成就感。

    PS:我不是什么专家型人物,上面的看法和建议是最近的个人感受。

4 comments:

  1. 我通篇阅读了全文,有很多事是发展过程中必然经历的。小公司需要全才的现状是基于对成本、市场环境的考虑。但是这样的做法通常是陷入于一个恶性循环。唯一可以打破这个循环的人则变成了设计师的觉悟是否提高,而不是控制在管理层的发展决策上。 "交互设计和用户体验不是一个人来抗,一个人也抗不好。"这句话中的“抗”应为“扛”

    ReplyDelete
  2. 最近忙,只看到你Gtalkl上的这个标题,没顾上来读这篇文章你说的要慢慢的带动大家去认识这个东西这一点我非常赞同最近几天我到了一个新的环境下,这个环境下的人都是程序员大家对产品的理解不甚相同或许在某些方面,我看的比别人多一点,多意识到了一点希望能尽快把我的理解用在工作上 呵呵,刚开始,还是要低调一点的。

    ReplyDelete
  3. 如果设计师能在管理层?或者说有管理权限?

    ReplyDelete
  4. 不是设计师是否能有管理层的权限,而是作为一个基层员工是否具备了指挥员一样的思考能力。我们做个假设:你是一个基层的员工,每当你在做一件事的时候你也用你上司那个职位角度去思考问题是否会把工作做得更好呢?当你如此做了是否就减少了你上司否定你的机会?是否能减少没有必要的沟通与反复呢?所以公司的合作指数比对抗指数高的时候这个公司就能得到很好的发展速度。

    ReplyDelete