大牛说:我的程序员进阶之路

903 阅读7分钟

 本文作者James Long为Netflix公司工程经理。

在React Conf 上,一些人询问我如何才能成为一名更好的程序员。出于一些愿意,很多人觉得我是一名优秀的开发者,并且认为我的建议值得采纳。因此我决定写下这样一篇文章,把我这些年的经验分享给所有人。

关于我:我今年32 岁,有着10 年的编程经验。但是直到最近今年,我才获得了真正的自信。但是直到现在,我还是一直在挑战自己。这种自我怀疑和挑战的感觉永远不会消失,因此你只能努力忽略这种感觉,不断尝试、不断积累经验。

首先我要说明一点,有很多种方式都可以帮你提高编程技巧,你需要找到最适合你的那一种方式。我在这篇文章中所介绍的技巧,只是我觉得有用的方式。

找到那些能启发你的人,但是不要把他们当做偶像

这些年来,我敬仰过很多人,他们让我认识了很多新技术。我完全相信他们的每一句话,研究他们的代码,并且从中获益良多。这些人高效、有才华,而且很会启发别人。你应该找到这样的人,让他们不断启发你、教导你。

然而,你却不能把他们偶像化。如果你看看他们平时的工作和生活,你就会发现他们和你别无二致。其次,不要盲目的笃信他们;如果他们的一些做法或是想法和你不一致,你可以尝试与他进行交流。正是这种不断的交流,才催生了一些高效的对话。

不要菲薄自己的工作

一些新入行的程序员很容易觉得自己的工作做的不够好。一些有经验的程序员也会如此,尤其是那些刚刚进入一个新领域的程序员。在我看来,一些优秀的创意和想法正是那些新程序员所提出的,因为新人更容易发现某种技术的改进空间,而老鸟们早已经习惯了这种技术,而没有改进意愿。

你的每一项工作都有自己的价值。最差的情况下,即使你的想法并不正确,你所在的社区已经你自己也能更好的理解为何你的想法没有成功。

不要害怕休息和调整

每天都会有新的技术出现,你很容易感觉自己一天不学习,就会被淘汰。其实真实情况并非如此。学会休息能让你更好的工作。我发现自己在休息的时候更能获得新的想法。

其实很多新出现的技术都只是在炒冷饭而已。真正革命性的东西只会每几年出现一次。你可以在Hammock Driven Development 上了解那些真正有意义的创新。

学会忽略无用技巧

让自己快速成长的重要方式之一,就是要学会忽略那些对你帮助其实并不大的无用技巧。换句话说,就是要“ 明智的利用时间” 。一天只有那么多时间,如果你把时间浪费在没用的东西上,那你获得成长的时间就会变少。

何为无用技巧?这取决于你的工作性质,在我看来,无用技巧包含:语言句法和library API 等。学些一个新的ES7 JS 句法不能让你成为一名更好的程序员,有那个时间还不如学学编译器的工作方法。虽然这些东西也很重要,但是我推荐你将时间用在深层概念的学习上,这些东西能让你在未来很多年里都能获得更多收益。

我经常问别人一个问题:你是否把大量时间花在让代码更好看上。如果你也是这样,我建议你不要在这方面浪费太多的时间,无论你把代码写的多好看,它未来肯定会被修改许多次。你更应该专注在你想要解决的核心问题上,之后在考虑如何对代码进行抛光。

重温过去的研究

当你对一个想法感到兴奋的时候,你很可能会立刻坐下着手操作。但是在此之前,你更应该看看前人是否已经解决了这个问题,并且弄懂他们的解决方式。很多时候,通过了解前人的解决方式会彻底改变我自己的想法。

你还应该学会阅读学术论文。有很多论文都使用代码代替了数学术语,这些论文读起来都不是太困难。过去30 年间,我们已经积累了大量的计算机学术论文,如果你学会从这些论文中提取知识,很快你就会成为行业内的思想领袖。

如果你想要阅读论文,你可以在GitHub 上找到Papers We Love 这个repo ,这里有很多优秀的计算机专业论文。

挑战大型项目,挑战自己

没有什么东西能和经验相媲美。不是每一个人都坐在能进行实验的职位上,但是如果你有时间的话,可以挑战一些大型的项目。你甚至不需要完成这些项目,只要试着解决一些你以前不熟悉的问题,你就能学到很多宝贵的东西。

老实说,我自己非常不喜欢这种感觉:不知道自己身处何方,不知道何去何从,觉得问题过于复杂,超过了自己的能力。这种感觉非常不舒服。但是一旦克服了这种情绪,让自己坚持下去,我的能力就又提升了一些。

让自己走出舒适圈的最好的方法之一,就是学习一个新的语言。对我来说,年轻时做的最正确的一件事,就是学习了Scheme 。这是一个非常基本的语言,它强迫你用函数式风格解决一切问题,但是它的好处是能让你非常透彻的理解代码的工作方式。学习Scheme 给我带来了巨大的好处,这种好处一直到今天还在发挥作用。

我推荐你去做下面这些事情。它们在我的职业生涯当中都发挥了巨大的作用。学习其他一些东西也能让你成为更好的编程人员,但是我所列举的,都是在我身上验证过的东西。

  •   学习C - 只需要学习基本的知识就好。每个人都在吐槽这种语言,但是没有调查就没有发言权,你应该要理解人们究竟为何吐槽他。
  •   编写编译器 -  最好的让自己走出舒适圈、开始学习的方式。
  •   学习宏指令 -  看看See Scheme 、Lisp 或是Clojure(Script) 。宏指令会改变你对代码的认知。
  •  SICP - SICP  是一本非常古老的书,我觉得它直到今日依然能发挥作用。另一本我推荐的书为《Lisp In Small Pieces 》。
  •   理解continuations - Continuations  是一种低级别的控制流机制。Scheme 是唯一一种使用了这种机制的语言,虽然在实际工作中你可能永远用不上它,但是他们会改变你对控制流的看法。
  •   有时间的话,学一门新的语言 -  无论你的工作是什么,你都应该去了解了解其他的语言。我推荐你学习下面这些语言:Clojure 、Rust 、Elm 、OCaml/Reason 、Go 或是Scheme 。每一种语言都有自己独特的特性,能让你获得一种新的思考方式。

                                                                                             

原    文:SDK.cn
作    者:鲁行云(编译)