掌握聚合最新动态了解行业最新趋势
API接口,开发服务,免费咨询服务

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

 本文作者James LongNetflix公司工程经理。

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

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

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

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

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

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

不要菲薄自己的工作

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

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

不要害怕休息和调整

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

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

学会忽略无用技巧

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

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

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

重温过去的研究

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

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

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

挑战大型项目,挑战自己

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

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

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

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

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

                                                                                              qrcode_for_gh_9de197bcc61b_258.jpg

原文来自:SDK.cn

声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com

  • 全球天气预报

    支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等

    支持全球约2.4万个城市地区天气查询,如:天气实况、逐日天气预报、24小时历史天气等

  • 购物小票识别

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

    支持识别各类商场、超市及药店的购物小票,包括店名、单号、总金额、消费时间、明细商品名称、单价、数量、金额等信息,可用于商品售卖信息统计、购物中心用户积分兑换及企业内部报销等场景

  • 涉农贷款地址识别

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

    涉农贷款地址识别,支持对私和对公两种方式。输入地址的行政区划越完整,识别准确度越高。

  • 人脸四要素

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

    根据给定的手机号、姓名、身份证、人像图片核验是否一致

  • 个人/企业涉诉查询

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

    通过企业关键词查询企业涉讼详情,如裁判文书、开庭公告、执行公告、失信公告、案件流程等等。

0512-88869195
数 据 驱 动 未 来
Data Drives The Future