ChuckJazdzewski给程序新手们提出了一些慈父般的忠告(原文标题为“Fatherly Advice To NewProgrammers”),其中有这么一段:
ChuckJazdzewski曾在Borland公司担任Delphi首席架构师、首席科学家,与Delphi兼.NET之父Anders Hejlsberg并肩作战。他于2004年从Borland公司离职之后加入微软。——译者注
编程很有趣。那是探索的喜悦。那是创造的喜悦。那是成就的喜悦。那是学习的喜悦。看到自己亲手做的东西显示在屏幕上很有趣。有同事为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该是有趣的,如若不然,那就找出导致编程无趣的问题,然后把它解决掉。可是,发布产品并无乐趣可言。我经常说起,发布一款产品感觉不错,就似某人停下来不再追打你了。你的工作就是完成产品,修复bug,然后发布。如果需要修复bug,那就去修复。如果需要写文档,那就去写。如果需要测试代码,那就去测试。所有这一切都是为了发布产品。老板花钱雇用你不是为了编程,而是为了发布产品。请做好你的工作!
说得不错!衡量程序员是否成功,有个标准就是看他发布了多少代码。但是,仅仅发布是不够的。另一种更有意义的衡量方法是,问一问你自己,有多少代码发布到了现实世界里活生生的用户的手中。不过,用户量也不见得就等于使用量。
问题是,有多少用户在真正使用你的软件?这才是衡量成功的终极标准。
当开始计算的时候,你就有点胆战心惊了。Rich Skrenta解释道:
在这个团队里,我只是一名工程师。我们的产品在市场上的反馈被逐步传递回来。我发现,我费尽心力做出来的东西却没被任何人使用。那东西还是挺挑战智力的……就像是玩纵横字谜之类的游戏。但它没有给世界带来任何价值。
我开始环顾四周,然后发现其他团队也有很多这样的例子:他们在做一些没人会用或无人关注的东西,比如移动IP倡议、孜孜不倦地制定着一些无人关注的标准、在实验室里做一些不可能得到实际应用或引用的研究。
哎……
我曾经做过一些东西,人们也确确实实使用了。不过那是以前的事了。感觉很不错!我做了一个网络新闻阅读器,它有几十万用户。我还运营过一个在线游戏(只是作为业余爱好兼职做的),它有几百个付费用户。我自觉很满足。我的业余项目居然比我的本职工作服务的客户还多。
于是,我做了一个简单的决定。我打算去做人们真正愿意使用的东西。
这听起来算不了什么。但如果你去了解一下太阳公司、美国在线、惠普、IBM、思科、Siebel、甲骨文、任何大学、很多初创公司、甚至谷歌和雅虎,你就会发现人们都在做一些不会被发布的东西。或者即使发布了,那些产品也不会引起别人的注意,或者产生的影响微乎其微。真是悲剧啊!就好似你辛辛苦苦写了一篇博客,结果没有一个人去读。人们会嘲笑那些写了博客但“只有他们的妈妈才会看”的博主。但对于众多的程序员呢——他们用代码筑路,却始终无人问津?
正是基于这个原因,我常常感到困惑:对于软件开发者来说,写代码真的是他们利用时间最有效的方式吗?软件开发者不写代码——你觉得有悖天理,对吧?
但是,请等一等。如果早知道所写的代码没人会看、没人会用、最终也没有任何人从中受益,聪明的软件开发者就不会愿意写那些代码。为什么要去建造一栋永远没人住的空房子呢?
聪明的软件开发者知道,他们的工作远远不止编写代码和发布产品;他们的工作是开发出人们真正想要使用的软件。这当然包括编码,但还有大量全局性的其他事情,比如撰写技术文档、交互设计、培养用户社区、乃至产品愿景,这些对于软件的全面成功都至关重要。如果你连这一点都没有搞明白,那么你写了什么样的代码也就无关紧要了。
参见前一篇博文:“如何写技术文档”。
像Rich Skrenta那样,如果你想开发人们想用的软件,请记住,你有职责让你的软件值得人们去用。