对于一个公正的软件制造者,一个很难接受的事实就是——一些花费了很多心力去设计的精美软件竟然会被弃之不用。相反,一些拙劣的软件——粗糙的设计、遍布 bug 的代码——却大受欢迎。让人心塞的是,这似乎已经成为了软件行业的一个基本现状。
怎么样的才是拙劣的软件?
这些拙劣的软件之所以会成功的第一原因也是最重要的原因就是我们对于这个“拙劣”的定义并没有达成共识。对那些声称可以备份计算机但是却在随机破坏存储数据的软件,以及表面上数据已经备份成功但实际上数据依然丢失的软件,大家都会认同是“拙劣”的软件,这是毋庸置疑的。但是,还是有很多处于中间地带的软件,该如何定义尚不能达成共识。比方说,对于下面这些软件,你是怎么看的?
- 如果一个软件,基础用户使用的时候工作良好,但要当需要扩展、改变或者再次开发就特别麻烦?
- 如果一个软件,用户服务目的明确,但是需要经过长时间的培训之后,用户才能高效使用它?
- 如果一个软件,工作原理不错,了解起来也比较直观,但是执行预期操作的时候要命的慢?
- 如果一个软件,虽然能工作,但是界面实在是丑陋不堪?
- 或者这个软件 95% 的时间能正常工作然后剩下的时候就会系统崩溃并死机?
上面这些例子就足以说明我们对于软件的“拙劣”是有分歧的。比如说,你觉得用户界面丑就说明软件不好,但是我觉得那些不能实现预先功能的软件才是拙劣的。所以如果拿出来一个企业依赖度非常高的 Swing(Java)应用,我们之间的看法可能就会截然不同。
当拙劣的软件贴上 GOOD 的标签
知道了这个原因我们就能明白为什么拙劣的软件也会成功了。企业人士侧重的要点可能和开发人员的不同。而最终用户的侧重点又与企业和开发人员的不同。所以可能这一个认为“一级棒”,另一个则只是觉得“差强人意”,但是到了还有一个眼里就是“太烂了”。而这,就是问题的根源。
大多数开发人员第一次接触 WordPress 的时候都会认为不好。作为一个开发平台,充其量最多只能说有点标新立异。代码是很久以前的老代码,设计还是十年前的那个模样。由于平台着重于用户的易用性和连贯性,到现在它依然运行在 PHP 5.2(已经好几年没有安全更新过了)上面,而且所有的旧模版和插件仍然可以在最新的版本上良好地运行。
我们可以认为 WordPress 这个软件实在是差得不可救药,但是却不得不承认,它有大量的用户(甚至还在不断增加中),因为使用过 WordPress,用户大多会被它的简单舒适以及强大的功能所折服,大概就是俗话说的,谁用谁知道吧。
为什么拙劣的软件也并不是万能的?
从根本上来说,之所以这些“拙劣”的软件也会收到欢迎,是因为不同结构层次的人他们的决策优先方向不一样。
也就是说,整洁、测试良好、文档记录明确、易于理解的代码是开发人员关注的重点;而企业只注重它是否能带来价值是否能赚很多钱;至于管理员则希望软件正常使用时间能达到 5 个9——99.999%;但是最终用户关注的则是软件是否讨人喜欢是否易学易用。总而言之,这些利益相关者的目标虽然都很容易实现,但是却会不可避免地发生碰撞。
制作软件就像是平衡这些利益相关者之间的利益一样,因为我们需要权衡软件的制作工艺、敏捷实践、TDD,以及其他很多很多问题。想让每一个人满意那是不可能的事情。哪怕甚至于所有的利益相关者的目标和关注重点等条件都一致,还是会有很多人觉得他们面对的是“拙劣”的软件。