结束语|如何成为一个编程好手?

从刚开始准备这个专栏的时候算起,到这一篇文章和大家见面,已经有十个月的时间了。

这个专栏设立的愿景,是想要传达编写优秀代码的理念,帮助软件工程师快速成长并且保持长久的竞争力。但是,四十多篇文章,显然不是通天的秘籍。一个软件工程师的修炼,主要还是靠日积月累的积累和精进。而且,这个修炼还包括编码之外的功夫。

了解问题的领域

我们编写代码的目的,是要解决具体的问题,而不是为了写出好看的代码。这就需要我们至少了解两样东西:编码的工具和具体的问题。无论是编码工具,还是具体的问题,都需要专业知识。一般来说,一个优秀的程序员,这两样东西都要学,都要会,而且还能把它们结合起来。

世界上的编程语言屈指可数,如果只会几门编程语言,不管你多么精通这门语言,都很难保持长久的竞争力。这主要是因为,编程语言的门槛很低,掌握编程语言的人太多。这也就意味着,在市场竞争中,你要超越的人会有很多。

而具体的问题领域,则是一个多姿多彩的世界。证券交易、银行结算、商品流通、教育培训、安全防护等,各有各的道理,各有各的规则。

作为一个软件工程师,如果你熟悉银行结算的专业知识,你就成为了懂得编码和银行结算的复合型人才。你可以在编码工具的领域出类拔萃,也可以在银行结算领域出类拔萃。但是,市场分工已经不需要你在这两个领域都是顶尖高手了。只要在这个结合部位,是个顶尖高手就可以了。而这个结合部位的竞争者的数量,就没有那么大的基数了。

所以对于软件工程师来说,特别是那些年轻的软件工程师,我们不要把自己局限代码的编写者这个角色上。我们需要把自己的角色拓展成问题的解决者。

定位成代码的编写者,你的目标可能就是写好代码,学好工具。定位成问题的解决者,你的目标可能就变成使用代码,解决好问题。

问题解决者这一定位,会让你更有好奇心去了解问题的来龙去脉,去发掘问题背后更多的东西。这样,你就能自己推动自己,成为该问题领域的专业人士,然后成为这个结合部的复合型人才。

扩大“无用”的见识

编写代码,本身是一个创造性的过程。在这个过程里,很多过去看起来没有多大用处的见识,可能就会派上用场。而这些“无用”的见识,如果过去你没有认识,没有积累,它们一定不会在你需要的时候让你灵光乍现,也不会在你需要坚持的时候给你力量。所谓的灵光乍现,其实都是埋在你脑海深处的见识。

我们前面讨论过不少编码的原则,比如说“简单直观”和“最小授权”。直觉上,这些虚无缥缈的东西和编码本身没有直接的联系。可是,这些小小的原则往往决定着产品的市场成败。你怎么抵御住复杂性、丰富性以及代码权力的诱惑?说实话,如果没有很坚定的理由和开阔的视野,我们很难抵御住这些诱惑。而见识和信念,来源于你对于生活的理解,包括对人的理解。

所以,除了技术之外,我希望你有时间、有精力、有能力去做其他的事情。读书、旅游、做饭、遛娃、种地、修车,各种爱好,都是积累,都是人生百态。

平衡安身的生活

当我准备这篇文章的时候,996.ICU的讨论真是一浪高过一浪。希望普遍的996只是一个特殊时段的特殊产物。

长期超负荷的工作时间能不能换来超额的工作产出,这是一个很大的疑问。不过,我可以确定的是,每个人一天都只有24小时,我们有限的精力只能在这24小时内腾挪。在一段时间里,我们做了这件事情,就丧失了做另外一件事情的机会。获得了这件事的好处,就丧失了另一件事的好处。这还有一个专业的名词,叫“机会成本”。

996的安排,让我们付出了多大的代价,丧失了多少机会?对于具体的每个人,答案也许有所不同。但是对于整个群体和大部分人,这代价也许会超出我们的想象。它所造成的长期的社会问题和个人问题,也许要很多年后才会显现。

希望955早日正常化,这需要大家的共同努力。

即使正常的工作时间只是一种奢望,我希望你还能够谈恋爱、陪家人。

谢谢你陪我一起走过了这个45期的专栏!

精选留言

  • Linuxer

    2019-04-17 08:21:05

    感谢!从这里大开了眼界
  • hua168

    2019-04-17 11:55:44

    现在我们学编程和运维的,IT技术不断的更新,为了不被社会淘汰,我们不断的学习,发现都根本没有太多的时间做其它的事,年纪大了突然又有危机,怕要是失业了,整个行业不要了,自己还会什么?
    作者回复

    如果只学工具(编程语言、运维工具),的确是一个很大的问题。 可是,我认识的大部分程序员,中年过了很多年,也很少担心失业的。因为语言工具只是他们的工具,解决问题的能力是需要年头积攒的。我们必须把技术工具和现实的问题连接起来。 会编程的人很多,能真正看出问题、解决问题并且快速解决问题的人并不多。而解决问题的能力大都是跨行业的。

    年轻的时候,使劲学习,多知道些技术、技巧;这就是积累量的阶段。过上几年,有足够的知识量,要专注于琢磨现实的问题。银行的app怎么改进会更好用,有没有办法让网约车更安全,怎么让快递员的收入每年递增,怎么办才能让买车的人安心?这些东西,都可以让你从一个程序员的角色,转变成一个问题解决者的角色,技术只是你的手段。 而问题,永远存在,而且越来越多!

    2019-04-17 22:17:26

  • FengX

    2019-04-17 10:08:38

    谢谢老师!订阅专栏前都没想到写代码会有这么多的清单列表检查项,受教了。
    作者回复

    你也要慢慢丰富自己的清单,然后再简化成少数的原理和原则。

    2019-04-17 22:21:43

  • 街角·陌路△

    2019-04-20 11:38:17

    首选感谢老师,分享了这么多。一口气刷完了老师的专栏,就如同看了本精致的小说,老师文字的精进程度不亚于老师代码的精进程度。老师最后的内容让我想起了《黑客与画家》这本书,一个编程高手不是只会编程。再次感谢老师。
    祝顺利
    作者回复

    没想到还有人夸文字的。希望你学到了东西。

    2019-04-21 07:42:19

  • Demon.Lee

    2019-04-17 10:17:38

    感恩!追完了,道理可能明白,但是实践还得漫漫长路,改了一些写代码的陋习。学习过程中,顺道看了《代码整洁之道》,《effective java》之类的书(没完全看完),发现跟专栏很多东西都是相通的,不明白的地方还得重新再看!最后谢谢老师把自己几十年的经验分享出来,专栏值!
    作者回复

    Effective Java找找国内有没有第三版的,作者加了不少东西。

    2019-04-17 22:20:16

  • 彩色的沙漠

    2019-06-13 09:51:08

    感觉老师的分享,把自己定位成一个问题的解决者,而不是代码的编写者。学习本专栏的最大感悟就是意识的转变,大部分问题只是意识和见识的问题,所以自己要使劲学习知识,拓展知识面,积聚力量。遇见问题不要视而不见,要多想多思。
    作者回复

    祝越来越好!

    2019-06-15 07:06:03

  • Y024

    2019-04-20 07:57:42

    乔布斯说:“You can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something—your gut, destiny, life, karma, whatever. Because believing that these dots would connect down the road, would give you the confidence to follow your heart, even when it leads you off the well-worn path, and that will make all the difference.”

    功利的社会让我们不由自主的要求学什么都要立竿见影,但正如乔布斯所言,有些东西可能现在还不知道有什么用,但早已润物细无声,某天回首,你定会恍然大悟。感谢范老师的辛苦付出,给我们开辟了关于编码的新认知。
    作者回复

    谢谢引用了乔布斯的言论。专栏里的提到的很多原则,比如简约,乔布斯使用的彻底干净,神啊!

    2019-04-21 07:45:02

  • liu

    2019-04-18 22:46:13

    专栏的可动手性强。如果能够跟下来,必受益匪多
  • gtp

    2021-04-02 11:00:45

    即使正常的工作时间只是一种奢望,我希望你还能够谈恋爱、陪家人。老师真好!
  • 底层小学生

    2021-02-15 21:39:21

    做一个问题的解决者,而不只是代码的creator
  • track6688

    2020-04-16 00:58:00

    看完了。看得出来,老师是一个高手。梦想是能达到这种水平
  • 旅途

    2019-12-19 23:42:46

    完结打卡 从前几章 的一些代码开发 怎么空格 是怎么分行感觉没什么东西 逐渐往后看越来越感觉精彩 感谢老师的经验分享 收获很大!
  • 母鸡啊

    2019-08-07 17:46:27

    这个栏目是我在极客时间第一个完完整整看完的栏目,虽然大多囫囵吞枣,有的看了也是处于半懵逼状态,但还是收获良多,有很多多西没有涉及到就不了解其中真正的内容,以后我也会经常回来重刷栏目,毕竟随着经验的增长,对很多内容的理解也是越来越深的
  • 蔡奎

    2019-04-27 08:34:50

    谢谢老师,特别是安全模块,给我打开了新的门!看完了整个专栏,发现硬核知识都是开放性和探索性的。需要不断根据前人总结的经验和现在出现的新情况结合基本原理创造出合适当前的解决方案。没有一次性的方案,只有原理指导。软件设计就是平衡利弊。受益匪浅,谢谢老师!
  • 笨笨

    2019-04-23 07:48:23

    感谢范老师,To be a hacker,forever.
  • Fergus

    2019-04-21 22:58:57

    感谢范老师。

    能编写代码,本就只是一个很低的门槛;
    成为问题的解决者,才能不断的推动自己前进。

    同样希望996只是社会发展到某个阶段的产物,人生除了工作以外,还有很多诸如老师提到的读书、恋爱、溜娃、发呆等等事需要去做,只有独立且健全的人格才能组成社会长久发展的引擎,其带来的影响需要多年以后才能显现。

    因为没用,所以没用;
    所以会在工作中不断翻出老师的清单查阅,以此,不辜负自己和老师的期许。

    祝好。
  • Sebastian

    2022-08-08 10:41:01

    看过密码学,希望尽快看到下一篇课!一定第一时间支持。
    可以来点非代码的、讲讲前辈经历过的有意思的故事!
    作者回复

    谢谢支持!

    2022-08-09 23:29:41

  • ifelse

    2022-08-05 11:31:32

    所谓的灵光乍现,其实都是埋在你脑海深处的见识。--记下来
  • ifelse

    2022-08-05 11:22:28

    看完了,感谢老师,收货很多。
  • ifelse

    2022-08-05 11:22:07

    希望 955 早日正常化!