免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

记住:你在为谁设计软件?!

  • 2007-04-22
  • 本文字数:1198 字

    阅读完需:约 4 分钟

作为 Rolling Thunder Computing 的主席和计算机课程的教师,David S. Platt 在最近的 SD West(软件开发大会) 的活动上发表了题为“为什么软件如此糟糕?”的讲演。FTPonline 对 Platt 在讲演中所强调部分着重进行了报道,即:作为软件设计者常犯的错误“忽视用户并按照开发者的喜好进行设计”。

除非你在为少数的极客 (骨灰级程序员) 写软件,否则请牢记:你的用户不是你……。这个观点很难出现在开发者的头脑中,他们普遍认为他们所欣赏的用户也一定会欣赏……。再强调一次,你的用户不是你。

Platt 力劝他的听众在设计软件的过程中要更多地关注用户而不是开发者的需要,这一点听起来再明显不过了,他当场使用了几个小问题来引出他的观点:在场的听众所设计软件的用户并非软件开发者。例如,通过听众举手统计, 在场的大多数人都驾驶手动档汽车,这通常比自动挡要难于掌握,难于使用,但是可以使你更好地操纵汽车。很明显,对于大多的开发者而言,他们认为如果能换来更好的操纵感,花一点代价是值得的。而 Platt 指出,在美国销售的汽车中只有百分之 12 到 14 有手动档!很明显,在汽车设计决策方面他的意见不能代表大多数的用户。

为什么大多数的人不喜欢驾驶手动档的汽车?因为他们所关注的不是驾驶本身。他们所关注是可以到达目的地。[听众大笑]

这是一个很重要的分别。你认为用户会按照你希望的方式使用软件,但是他们通常并不认同“你”的方式,他们希望你的软件和他们过去用过的软件在可用性上相似,这样他们就无需改变已经熟悉的工作方式。

用户有自己的工作,有需要达到的目标,有需要联系的人,要完成的使命,软件的正常运转仅仅是这个过程的附属品。当它时时出现问题,或者强迫用户改变自然的工作流程时,它就是用户最大的障碍了。最典型的例子是微软 Office 软件的剪切板功能(最终被从 Office 中去除了),软件可用性方面很小的缺陷都会引起很大的负面体验。在开发过程中遵循简单原则是非常重要的,Platt 建议我们需要做的是“仅仅让它运转起来”,并且提供了作为开发者需要注意的 5 点:

  1. 将一个新人放入设计团队中——所谓新人是指完全不懂得编写软件的人。
  2. 在需要的时候,不要顾忌已有的习惯——老套的方法并不一定正确。
  3. 避免愚蠢的功能——所谓愚蠢是指不要让不确定的功能混入那些确定的功能中。
  4. 小心修改你的软件——发现“大多数沉默的人”是如何想的是件困难的事情,在这种情况下,可用性测试可以提供可信的数据来帮助我们作出决策。
  5. 多想想设计方面的决策是否背离了简单原则。

记住——所谓“恰好工作”是从用户的角度思考,开发者并不使用你的软件。- - - - - -

译者简介:胡凯,2006 年加入 ThoughtWorks ,通过在 ThoughtWorks 多个国家和多个项目的敏捷实践,坚定地站在了敏捷阵营中,目前在进行 CruiseControl 相关的敏捷开源项目。他和许多敏捷开发者一样活跃在敏捷中国 CruiseControl-China 社区中。为 InfoQ 中文站贡献内容,请邮件至 china-editorial@infoq.com

2007-04-22 00:32685

评论

发布
暂无评论
发现更多内容

架构师训练营第 1 期 week2

张建亮

极客大学架构师训练营

Week 3 Assignment

Yinan

架构师训练营第二周总结

xs-geek

设计模式第三周总结「架构师训练营第 1 期」

天天向善

spring-boot-route(二)读取配置文件的几种方式

Java旅途

Java Spring Boot

区块链3.0时代:大规模商业应用开发即将实现

CECBC

区块链 数字金融

Linux忘记root密码怎么办

MySQL从删库到跑路

Linux 服务器 root密码 root

Mongodb异常关闭,再次启动报错

MySQL从删库到跑路

mongodb

最完整的PyTorch数据科学家指南(2)

计算机与AI

学习 PyTorch

第三周作业

极客大学架构师训练营

架构师训练营第三周学习总结

成长者

极客大学架构师训练营

集中日志系统ELK

Java个体户

ELK

第三周作业

icydolphin

极客大学架构师训练营

week03

……

为什么Rust的println!不会发生所有权转移?

袁承兴

rust 元编程

当区块链遇见共享经济,会碰撞出怎样的火花?

CECBC

区块链

架構師訓練營第 1 期 - 第 02 周作業

Panda

架構師訓練營第 1 期

架构师训练营第二周作业

xs-geek

架构师训练营 Week3 代码重构 - 学习总结 设计模式

spring 设计模式 JUnit

第三周-代码重构-学习总结

刘希文

区块链可以为物联网做些什么?

CECBC

区块链 物联网

架构师训练营第三周命题作业

成长者

极客大学架构师训练营

架构师训练营第 1 期 week2 总结

张建亮

极客大学架构师训练营

设计模式第三周作业「架构师训练营第 1 期」

天天向善

单例模式 组合模式

Golang单例模式手写稿

Jacky.Chen

Springboot 邮件任务

hepingfly

springboot 发送邮件

分布式系统的核心:共识问题

多颗糖

分布式计算 计算机基础 分布式系统 架构师

vagrant 开发环境配置

孙志平

LeetCode题解:242. 有效的字母异位词,数组计数,JavaScript,详细注释

Lee Chen

大前端 LeetCode

[Python3]三子棋游戏!祝大家中国71周年国庆节快乐!

MengZian

Python

JD-GUI反编译jar包为Java源代码

MySQL从删库到跑路

Java jar 程序员 Spring Boot jar包的小秘密

记住:你在为谁设计软件?!_研发效能_Deborah Hartmann Preuss_InfoQ精选文章