本文是从 The Singular Secret of the Rockstar Programmer 这篇文章翻译而来。
别以为是那些软件开发定律,别以为是开发出那些特殊用途的软件,别以为是软件设计技术本身。只有一条真理决定了一个软件程序员的成功还是失败。由于坚持这个真理,一个资深的程序员能在一天的时间里学会一门新的编程语言,而由于不坚持这条真理,一个初级的程序员用十年时间也只能挣到一份糊口的钱、永远是来实现别人的设计、永远不够优秀而得不到晋升的机会。这条真理让你看清了差的程序员和好的程序员的不同之处,好的程序员和伟大的程序员的不同之处,伟大的程序员和能通过自己的技术创造出一个亿万美元价值的程序帝国的超级程序员的不同之处。
不是什么复杂的道理,不是什么难懂的理论。不是具有什么天赋或“编程超能力“才能做到的事情。最终成为的是一个优秀的程序员还是一个很烂的程序员,这跟你的出身一点关系都没有。
而真正的原因只有一个,唯一的一个:
对所做的事情的理解越深,你就会做的越好。
超级程序员跟那些平庸的、一般的程序员比起来,对自己要做的事情的理解要深的多的多。这就是原因。
要想成为一名出色的程序员,你所要做的就是完全的理解要在做的事情。
有人会说,该知道的我都知道了。而对说这话的人的验证就是看他们能有应用他们知道的知识的能力。是否他能够构造出完美的系统架构,让人们能轻松的维护?是否他能在不皱眉头的情况下把一个普通程序员毫无可能解决的问题轻松解决掉?是否他能在被询问时能用最简单的概念把任何问题都阐述明白?如果能够,那他就是一个杰出的程序员,他能很好的理解了他在做的事情。
然而,尽管这些人看起来已经“无所不知”,很多的程序员(包括我)都感觉他们仍然在知识的海洋里奋斗不已。有如此多的东西需要去学习,一个人几乎要花费他毕生的心力去学习,但仍然很难说能掌握计算机知识的90%。
而这场持久战中的秘密武器、战胜计算机知识的亚瑟王的神剑,就是透彻理解。对你的领域里的基础知识理解的越好,你就越容易提升到更高的层次。你对这一层次的知识理解的越好,你就更容易掌握下一层次,以此类推。一旦你从最简单最基础的知识走到最高级最复杂的理论,你可以从头再过一遍,此时你会惊奇的发现,在最低最底的底层,竟然还有那么多知识需要学习。
看起来这个道理实在是太简单,难以受到重视,但事实就是这样。通往杰出的程序员的道路就是完全的深入的理解,从掌握精通最基本的知识开始,从而逐渐牢固掌握更高级的知识。
我不想骗你—这是一个很长的路程。但你是值得去做的。在路的尽头,你会突然发现,自己神奇的成为了一位资深的程序员,受到所有人的尊敬。你能成为一位神奇的程序员,任何事情都难不倒的程序员,让其他程序员都羡慕的程序员。谁能预料到呢?我不能告诉你你该做什么或能成为什么。但我可以告诉你我发现一些真实的道理和有价值的东西。怎么去做全在于自己。