高效能程序员的修炼-入门

编程只是整个解决方案中极其微小的一部分
软件开发的整个历程,就是程序员们耗尽毕生精力去编写代码,以便其他人能从代码编写工作中解脱出来,从而可以很方便地使用计算机来做他们真正要做的事情的一个过程。因此,宣扬“每个人都需要知道如何去编程”,我认为是一种倒退。

生命中最困难的,是想清楚你真正想要做的事情,而不是学上一堆假设将来会有用的东西。

我想要你告诉我,不,是全班同学,你究竟想过怎样的生活?
程序员的 8 种境界

  1. 不朽的程序员。虽然人已经离开了这个世界,但是他们的代码依然活着。Dijkstra、Knuth、Kay。
  2. 成功的程序员。有广泛的知名度,运营着不错的公司。比尔盖茨、Carmack、DHH
  3. 知名程序员。知名大型技术公司工作,其他程序员听说过,对自己所在的领域有着积极的影响。
  4. 胜任的程序员。工作种游刃有余,不愁得到一份满意的工作,每一家你曾经工作过的公司都因你的加盟而在某些方面得到了提升。
  5. 普通程序员。能应付一般的编程工作,天资有限,很难成为杰出的程序员。
  6. 业余程序员。热衷编码,开发好玩的应用,有想法,充满激情。
  7. 低调的程序员。坊间流传,有能力没有瞩目的成就。写代码仅是工作,并非生活的全部。
  8. 烂程序员。没有金刚钻,却偏偏揽了瓷器活。他们所作的任何事情都会给他们的同事带来痛苦和灾难。

杰出的程序员跟勉强过得去得程序员之间的差别,不在于他们掌握了多少种编程语言,也不在于他们谁更擅长 Python 或 Java。真正的关键是,他们能不能把他们的想法表达清楚。杰出的程序员通过说服别人来达成写作。通过清晰的注释和技术文档,他们让其他程序员能够读懂他们的代码,这也意味着其他程序员能够重用他们的代码,而不必重新去写。要不然,他们所写的代码价值就大打折扣了。

每个人都应该大量地写作,不管是撰写博客、写书、回复 Stack Overflow 上地问题、写电子邮件,还是写其他的什么东西。写下来,然后回过头去斟酌以下。依我的经验,这种书面沟通有助于理清我们的思路。当你要想其他人详细解释某些东西的时候,你会惊讶的发现你自己有多无知。于是,你不得不开始一个全新的探索过程。