为何优秀如程序员,也会构建 Bug 满格的软件?(11)

“用户对很难在政府网站上查找到信息而感到恼火”:是一个问题。

“作为数字政府蓝图的一部分,我们需要重建我们的网站以符合新的设计服务标准”:不是问题。

如果我们的最终目标是让公民的生活更美好,那么我们就需要清楚地了解他们生活中的困难。

明确的问题陈述可以让你通过实验来测试不同解决方案的可行性,因为你很难仅通过理论确定解决方案。与聊天机器人交谈的难度可能超过了浏览网站,用户可能不想在他们的手机上多装一个应用,无论该软件对于国家的安全有多么重要。在开发软件的时候,显而易见的解决方案通常都带有致命的缺陷,但只有投入实际使用你才能发现。所以,你的目标不是构建最终产品,而是首先通过快速且廉价的渠道找到这些问题。你可以利用非功能性的模型来测试界面设计,利用半工作的模型尝试不同的功能,快速编写原型代码更快地获得反馈。这个阶段创建的所有东西都是一次性的。这个过程所需的输出不是编写的代码,而是更清楚地了解哪些才是应该构建的功能。

在对正确的解决方案有了充分的理解之后,你可以开始构建实际产品。这时,你应该停止探索新想法并设法缩小范围,以确定有待实现的特定问题。你可以从少数测试人员开始,他们很快就会发现需要修复的明显错误。随着一个个问题得到解决,你可以逐步扩大范围,让他们发现更多深奥的问题。

推荐阅读