源代码有那么重要吗?
很多人在一个新产品发布的时候,往往会非常关心这个产品是否发布了相应的源代码。然而,对开发者来说,这毫无疑问是一种本末倒置的关注。
源代码能告诉我们的事情是,一件事情是"如何"去做的,而不是"为什么"要那样做。这事就有点像填写报税的表格,那个表格会告诉你在第1行到第20行每行填写什么数字,然后从第几行到第几行的数字相加,减去第几行到第几行的数字之后写到第几行。而当你想要知道为什么要这样做的时候,税表会告诉你"详见税法某某条"或"详见某说明",而提供了源代码的产品就不一样了,因为那些说明,往往要么是一些公司的内部机密文档,要么干脆没有。
没有文档是一件很糟糕的事情,但是很多人却会认为,代码可以取代文档。虽然我自己也不太愿意写文档,但是我完全无法认同这种观点。代码可以告诉你"我做了什么",但是却很难告诉你"当时我是怎么考虑的",而文档则相反。维护旧的代码,在缺少文档的情况下是代价很高的一件事,因为开发人员在撰写代码的时候认为显而易见的事情,往往在其他人看来并不那么明显,甚至,这些被认为是对的东西很可能其实是错的。显然,代码的同僚复审并不能完全消灭这样的问题,因为很可能两个人水平接近,而撰写文档的过程则会帮助开发人员重新整理思路和思考其中的错误。
我相信,随着不提供文档,但源代码公开的软件的越来越多,明白每一件事在计算机里面到底是如何发生、以及为什么会这样发生的人会越来越少。不重视文档,却单单重视代码,总有一天会酿成为我们这个行业的悲剧。