英文原文:You Can't Sit on the Sidelines and Become a Philosopher
某些时候每一个有能力的开发者在他或她意识到所有东西基本上被破坏的时候,会出现一闪而过的洞察:工具,语言,方法论。这种破碎感——谁能够说清楚呢——不是重要的部分。麻烦的是,在此刻明白之后,在揭露了软件的丑恶现实之后,接下来会发生什么。
你可以视而不见,因为本身就是这样的。不管你被强迫使用什么,你仍然要付出代价。
你可以追求完美,甚至带着对于上世纪 70、80 年代那些曾经有希望的、但如今失去的思想做漫长的考古探索,去尝试所有新奇的语言。当心你可能再也无法自拔了。
你能够按照自己的想象重新发明计算机,从一门新语言开始。还有,新的操作系统—等等,嗯—一种新的处理器架构。这可能要花些时间,最终你将被考古探索的人们所瞻仰。
正确的答案混合了所有这些因素。你不得不忽略一些因素,因为在它们把你逼疯的时候,不是每个人都同样认为的;你已经建立了一种敏感度(sensitivity)。你能够尝试新工具和语言,尽管如此,你或许不得不把它们的一些概念带到未来项目中,而不是语言本身。你能够修复问题,尤其是某些具体的问题,你对其有深入的理解,很可能不是做为整体的技术世界。
只要你最终坚持下去,你将好转起来。
还有另一个选择:你可以放弃。你能够停止创造,而成为一名评论员,让人们知道软件开发是如何混乱。你能够成为一名哲学家,大谈特谈抽象、完美的宏伟画面,而根本不用基于这些思想发布产品。你能够成为“美好”的倡议者,“糟糕”的严厉批评家。或许你认为,你正在建造稳健和希望的灯塔,但是你正慢慢地失去、成为一名开发者所必需的、实实在在的思考过程和技能。
同时,还没明白过来的其他人正在使用你认为破碎的技术,无论你为了让他们坚信这是行不通所做的一切……他们还是成功了。
我通过编写一个 iPhone 游戏来阐述我的建议。它没有用新奇的函数式语言,只是很多C++、一些 Objective-C,和脚本用到的一点点解释器。还有部分代码是以纯粹的函数式风格编写的,一些离线工具用到了 Erlang。它从来没有定位成赚钱的项目,它更像是重获联系(get-back-in-touch)的项目。如今它已经相当成功了。