Android Performance

程序员的修炼-05-了解你的用户

字数统计: 3.1k阅读时长: 10 min
2018/09/28 Share

本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第五篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。

我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:

  1. 程序员的修炼-01:绝地反击之术
  2. 程序员的修炼-02:编程之道
  3. 程序员的修炼-03:Web 设计原则
  4. 程序员的修炼-04:关于测试的一些思考
  5. 程序员的修炼-05:了解你的用户
  6. 程序员的修炼-06:互联网那些事
  7. 程序员的修炼-07:游戏与编程
  8. 程序员的修炼-08:阅读之美

逻辑人的争议

软件开发者身上的所有的“坏毛病”中,最严重的可能是:我们自以为是典型用户。然而大部分的开发者没有意识到的是,我们其实是异类,我们绝非等闲之辈 — 我们是边缘人。

作者提到了“逻辑人”和“现代智人”的概念

  • 逻辑人:逻辑人渴望控制那些让他们感兴趣的东西,而那些让他们感兴趣的都是些复杂的确定性系统。人是复杂的,但他们不像机器,他们的行为不具有逻辑性和可预见性,最好的机器是数字的,因为这样它就能变得最为复杂、精细,病区能被程序员轻易改变。

  • 现代智人:一般的普通用户,他们只是想简单地使用,而不是去控制。

对于逻辑人来说,控制是他们的目标,而复杂是他们愿意为之付出的代价,对于普通人来说,简单是他们的目标,失去控制权是他们愿意付出的代价。逻辑人被一种对工作原理难以抗拒的认知欲望驱使着,相比之下,现代智人渴望的是成功。

Alan Cooper 列了一些逻辑人的典型特征,你可以对号入座一下:

  1. 不惜牺牲简单以换取控制
  2. 不惜失败以换取认知
  3. 不放过任何一点可能性
  4. 行为像体育特长生

另外一句话软件工程师们需要谨记:任何人都能做出一个没人会用的复杂软件,这其实并不难!把软件做的简单易用才是真本事。你必须停止像逻辑人一样思考,而应该学会像现代智人那样思考。

象牙塔式的开发

象牙塔式的开发指的是:开发团队常年封闭在“高塔”之中,一门心思地做着魔法一般的软件。因为缺乏强有力的证据,开发者都假设其他人都是开发者,这是很危险的。

作者建议:在整个项目周期内,请尽力将你的开发人员暴露在用户面前:参加用户会议,参与可用性测试和验收测试,与用户进行交流,分析用户的数据和行为。

Eric 提出的“互信关系”:当人们从你那里购买软件的时候,他们对眼下和将来有很多期望:

  1. 他们相信,你的产品可以在他们的机器上正常工作
  2. 他们相信,如果他们碰到了问题,你会帮助他们
  3. 他们相信,你会坚持不懈地改进产品
  4. 他们相信,你会一一个公平、合理的价格为他们提供改进后的版本
  5. 他们相信,你的公司不会再短时间内破产

让程序员设计界面的后果

优秀的程序员都有自知之明,知道自己能做什么,不能做什么。他们要么直接拷贝别人的优秀设计;要么本分地只做编码,而把界面设计的工作交给其他专家。

是朋友,就别让你的朋友做出只有程序员才会使用的界面。

保护“中间分子”

专家和小白都只是一小部分人,大部分水平相当的用户都属于“中间分子”,你应该重视这些中间分子,中等水平的用户数量是如此巨大,他们如此具有主导性,以至于你可以放弃新手和专家级别的用户。

为了迎合为数不多的新手和专家,你在软件开发过程中耗费了大量的时间,最终只是让产品变得更差,结果还冷落了核心用户群。

每个用户都会说谎

用户的愿望与现实几乎总是相悖的,我们提倡要观察用户的实际行为,而不是听他们叙述他们的所作所为,其原因就在于这种背离。观察是一种很强大的技能,要学会通过人民的行为来判断,而不是听他们说什么就是什么。

作者提到了“活跃用户的矛盾体”这个概念:活跃用户的矛盾体是一种自相矛盾,因为如果用户对系统多一些了解,从长远来看,是会节省时间的。但现实世界里,人们的行为模式不是那样的。因此,我们不能忍工程师针对理想化的用户开发产品,因为现实中的人是非理性的,我们必须根据用户的实际行为模式来设计产品。

每个用户都会说谎,预期询问用户是否喜欢你的软件–他们当然会说喜欢,因为当面说你的软件有多么糟糕头型是多么的无理 – 你应该效仿 Gregory House : 去观察他们是否使用了你的软件,以及他们是怎么使用的。基于行为数据去设计你的软件,而不要靠用户说的“谎言”(不管那些谎言带有多大的善意)

别把产品发布当目标

衡量程序员是否成功,有个标准是看他发布了多少代码,但是仅仅发布是不够的,有多少用户正在使用你的软件,这才是衡量成功的终极目标

聪明的软件开发者知道,他们的工作远远不止编写代码和发布产品;他们的工作是开发出人民真正想要的使用的软件。这当然包括编码,但还有大量的全局性的其他的事情,比如撰写技术文档、交互设计、培养社区用户、乃至产品愿景,这些对于软件的全面成功都是至关重要的。如果连这一点都没有搞明白,那么你写了什么样的代码就无关紧要了。

别问,需观察

用户口述他们想做的事情,与他们实际的所作所为相比,往往天差地别。从可用性的角度来看,询问用户他们想要什么是徒劳的,原因就在这里 – 你必须观察他们正在做了些什么。在可用性方面,你不能猜测行事,你必须去观察用户如何使用你的软件,除此之外别无他法。

在做设计的时候,如果能基于用户对你的软件的实际使用方式来做决定,岂不是更合理?不管你是在“低保真的可用性测试”转几篇每个观察用户,还是收集用户行为数据、然后在无形之中观察用户,宗旨是一样的:别问,须观察。

功能越多越好吗

软件依靠新功能来推动销售,但久而久之,那些新增的功能恰恰是使得软件越变越糟的罪魁祸首 。那种正在慢慢滋生的微妙的“功能癖” — 他会摧毁人们最喜爱的软件。

一个不好的趋势是:软件公司把现有软件修复 bug 的优先级设得比较低,而把为接下来的版本开发新功能这事看的特别重要。导致的结果就是,软件的质量每况愈下。(就像 Flyme 和 MIUI)

我们也许不该在盲目地把软件当成一堆功能来衡量 – 人们总有“食量”限制,就像在吃自助餐时,那么多事物你吃得完么?我们应该以结果为导向,衡量软件在帮助我们完成任务时的生产力或效力。

生物会为所欲为

作者认为,社会工程充其量是一种不精确的科学,即使在网络空间原型里也是这样。有人曾经说过,“在最精心准备的实验中”,即使条件收到最严格的控制,生物也将为所欲为

在构造社会性软件时,人是所有问题的根源,但解决问题最终还得靠那些人

为了一点绶带

作者总结了自己在 Stack Exchange 的工作内容:我所做的是、我最擅长的是、我最最热爱并且胜过世界上任何其他事情的是,为喜欢相互写几段文字的人们设计大型多人游戏。我吧他们的痴迷,引导到某种积极的事情上面;他们可以从中学习,还可以为整个世界创造一些可以重复利用的美妙作品 — 这依然是我所欲之事,因为我还保留有源源不断的痴迷。

为反社会人群构建社交软件

作者提出了 “10个可怕的想法”:

  1. 从根本降低参与的门槛
  2. 信任用户
  3. 生活就是世界上最大型的多人在线角色扮演游戏
  4. 总有坏事发生
  5. 喜好胜过金钱
  6. 规则可以很有趣,并且具有社交性
  7. 所有的现代网站都按游戏的方式来设计
  8. 考虑周到的游戏设计促成可持续发展的社区
  9. 社区的观点不一定是对的
  10. 需要一定的调解

如果你想在网上学点东西,你必须好好设计你的软件,引导人们与生俱来的社会群体冲动,并使他们重新聚焦在有价值的事情上。


《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣

Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣

《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣

CATALOG
  1. 1. 逻辑人的争议
  2. 2. 象牙塔式的开发
  3. 3. 让程序员设计界面的后果
  4. 4. 保护“中间分子”
  5. 5. 每个用户都会说谎
  6. 6. 别把产品发布当目标
  7. 7. 别问,需观察
  8. 8. 功能越多越好吗
  9. 9. 生物会为所欲为
  10. 10. 为了一点绶带
  11. 11. 为反社会人群构建社交软件