程序员和设计师的矛盾
程序员和设计师,有时候我们可能不能分的太清楚,很多情况下我们既要当程序员又要当设计师。
程序员,是指最终编写代码实现项目细节的人。
设计师,是指对项目进行规划,对系统进化功能划分的人。
在大公司里,这两个角色一般会由不同的人员担任。程序员角色当然有程序员来担任了,至于设计师角色一般会有产品经理或项目经理来担任。
但是在很多web2.0的创业团队内部,情况就会稍稍有点复杂了,有时候程序员和设计师的角色会由同一个人来担任,而设计师很可能被虚化,由团队所有成员共同来担任,也可能有产品经理,项目经理,或市场经理,甚至是老板自己来担任。这样就会出现一些问题,下面我从程序员和设计师的不同职责,试图来揭示一下程序员和设计师之间的矛盾。
程序员的职责:
1.代码编写者,功能实现的执行者,
2.系统稳定性,安全性,性能优化的责任人
设计师的职责:
1.系统功能的设计者
2.系统是否受用户欢迎的责任人
从中,可以看出,程序员面对的是系统,而设计师面对的是用户。程序员考虑的重点是系统的完善,设计师考虑的是系统的可用性。这似乎并不矛盾。
我们假设,一般人对工作的态度都是趋向于减少工作量的。
那么程序员的目标就是设计一个高效灵活的系统,最好能有效的处理所有可能的情况,能够应付所有的需求变化,并且越稳定越好,越高效越好。也就是说程序员考虑的是建一个全能的平台,让平台来替自己工作。
设计师的目标呢,是设计一个系统,能够最好的现实用户的需求,能够吸引尽可能多的用户。设计师考虑的是,系统能更好的满足用户提出的需求。所以,程序员需要的是一个一劳永逸的系统,而设计师需要的是一个随时变化的系统。程序员考虑,系统能实现什么,系统不能实现什么;而设计师考虑,用户需要什么,用户不需要什么。
程序员喜欢尽可能多的考虑平台功能,其中一个原因是害怕无休止的重复劳动,因为这个功能即使现在是不迫切的,但是,不能保证今后没有这个需求,而如果不预先考虑好的话,一旦提出需求,将来完成需求的人还是自己,而后面添加这个功能所要花费的精力,可能是远远大于当初设计的时候的。因此,程序员会这样想,我先考虑好,做好准备,我可不想推倒重来。
设计师希望系统能够围绕用户需求来做,用户要什么就做什么,用户不要的就不要去做。但需求不是一成不变的,所以设计师会经常修正自己的设计。
程序员埋怨设计师老是改来改去,设计师埋怨程序员总是不能理解用户的需求。
这是一个矛盾。
我觉得
对于程序员来说,考虑系统的扩展性是很正常的想法,但是如果不是做产品的话,却不一定要考虑的那么周到,在以往的项目开发中我发现,初期设计的很多功能最后都是没有用上的。对于web2.0的系统来说,更新更频繁,而系统架构的设计往往取决于现实的软硬件环境,一旦访问量流量发生变化,推倒重新设计是在所难免的。所以,系统的设计应该有一个阶段性的目标,能达到设定的目标就可以了。
一味迁就用户也不是太好的方法,好的系统应该能够引导用户去思考可以做什么。一味的妥协用户是非常吃力的,而且大多数用户是不愿意思考的,所提的观点也是随意的。过多考虑用户提出的功能需求,可能随时打断原有的开发方向和项目进度,引起混乱。所以,对于用户的需求,最好是阶段性的进行一个总结,不要在上一个开发阶段还没有结束的时候,随意的穿插进去。