减少错误,逆向思考的工作方法
不知道目的地的情况下走路,谁也不愿全力前进。
我们从亚马逊的内部新闻稿开始,聊聊为什么要写README文档,它的意义何在。
亚马逊的内部新闻稿
亚马逊有一个传统,如果员工想给贝佐斯或高管提议做一件事,首先要写一篇关于这件事的新闻稿,因为是你要将一个新东西带到这个世界,你要全面思考它的未来。
写内部新闻稿实质就是基于户需求开发,它也是推动亚马逊成长的强大力量。在亚马逊工作3年多时间的布朗回忆说:
那是给我留下深刻印象的事情之一。 如果某人提出一个有趣的想法,如果他们说「哇,我会发现这是有用的」,然后紧跟着的问题就是「会有客户发现这是有用的吗?」
通过写新闻稿,让项目发起人以终为始,逆向推理——从客户和市场开始,以结果为导向思考整件事。如果不能想清楚产品卖点,为用户解决什么问题,提供什么价值,通常新闻稿也会写的很艰难。
我们习惯的思维方式是正向的,从现在到未来,自内向外,由我及他——我有什么优势,我能提供什么资源。不习惯从用户需求角度思考,对方需要什么,我要解决什么问题。
关于怎样写内部新闻稿,下方参考资料中有一篇文章,感兴趣可以看看。今天我介绍的重点是相同原理的方法——工程师为开发程序模块而创作的 README(自述)文档。你可以将README文档理解成工程师写给其他工程师的新闻稿。
README 的由来
README(读我)最早可追溯到1970年前,那时的打孔卡片上的便签纸上就写着“READ ME!”。
一位网友认为“README”可能来自《爱丽丝漫游仙境》,因为其中一瓶药水和一个月饼上分别贴着“DRINK ME”(喝我)和“EAT ME”(吃我)的标签。
README 自出现就全部大写,大写目的是醒目,提醒关注。让使用者注意——看我,看我,这是下一步行动前要知道的重要信息。这份至关重要的文档要实现什么功能及遵循哪些原则呢?
README 为谁而写
README文档的第一读者是创作者自己,然后才是使用者与项目合作者,对创作者有更重要意义。
创作者:全面思考
自述文档首先是备忘,如果没有它,创作者过段时间看那些功能代码,自己也会觉得陌生。
其次,它帮助完成信息闭环,在撰写自述文档时,你会思考整个项目的来龙去脉,尽早发现可能出现的错误。
所以,README文档在动手写代码前就应形成一个初始版本,为未来的工作一个参照。当你想增加新东西时,先 Read README,避免为错误的,没人使用的功能而劳作。
使用者:了解功能
如果你的工作有一份清晰的自述文档,其他要调用你模块的工程师,就不需要阅读你的源代码也能立即抓住你的精妙想法。
自述文档就是一份简历,优秀的简历能增加模块的使用率,帮助使用者快速上手,让你的工作发挥更大的价值。
合作者:有效协作
如果你跟其他人一同工作,提前让他们知道你要实现的功能和提供的接口,他们就不需要等你实现后才能开展工作,你们可以并行工作。
如果没有说明文档,你们还会对同一问题反复讨论而没有结果。当每个人都有一个写出来的想法时,大家可以在一起交流与迭代。
README创作原则
基于上面说明,一份自述文档要做的是:
告诉他们这是什么 (使用场景)
告诉他们在实际使用中是什么样子
告诉他们使用的方法
告诉他们其它相关的细节
在创作你的README文档时,下面原则是有指导意义的:
1.保持简短、直观
没有人会读长长的自述文档,要尽可能的简短,细节在单独的页面补充。除了简短还要直观。为了让读者更容易阅读,你可以用图片,功能截图,Gif 动画,文字等多种格式。
2.借鉴优秀的做法
所有的坏东西各有各的坏,所有的好东西都有相同的特点,以史为鉴,学习别人的格式,让你少走弯路。
3.符合认知漏斗
自述文档应该符合「认知漏斗」——立起来的上宽下小的漏斗。最前面的信息最宽泛——用一句话介绍功能亮点。
越往下越具体,只有非常感兴趣的人才会关注下面的内容,要将细节放在下方,这样也为其他人节省时间。
小结
芒格在不同场合多次强调反过来想,总是反过来想,我们就能减少很多不必要的错误。养成反过来想的习惯,能让我们抓住重点而解决问题。
当我们做一件事时,不妨想象已经实现,创作README文档,从后往前推,这一思考习惯让我们少犯错误,少做无用功。
相关文章
参考资料:
亚马逊内部新闻稿
https://www.huxiu.com/article/113502.html
README 驱动开发
https://tom.preston-werner.com/2010/08/23/readme-driven-development.html
README的艺术
https://github.com/noffle/art-of-readme#readme