当前位置: 首页 > 科技观察

如何成为更好的程序员?我总结了7条建议

时间:2023-03-14 17:48:53 科技观察

想成为一名优秀的程序员吗?本文作者结合自己十多年的经验,提出了七点建议和具体措施。在React大会上,有几个人问了我一个问题——如何成为更好的程序员。人们认为我是一位非常有经验的程序员,因此值得听取我的建议。我觉得可以分享一下我这些年编程的“心路历程”。自我介绍:我叫JamesLong,今年32岁,有超过10年的扎实工作经验。不过,直到最近几年,我才对自己的工作更有信心。即使是现在,我仍然怀疑自己。重点是这种感觉不会消失,所以尽量忽略它,继续钻研技术知识,继续积累经验。再次提醒您,这些只是提高您技能的一些建议。最终,您需要弄清楚什么是适合您的。1.寻找激励你的人,但不要崇拜他们。多年来,我钦佩了许多人,并通过他们了解了新技术。我相信他们是对的,并通过深入研究他们的所作所为学到了很多东西。这些人往往非常有效、有才华和鼓舞人心。你必须尽一切可能找到他们,让他们激励和指导你。不过,不要崇拜他们。如果您只看推特帖子,它们似乎遥不可及。但是,如果你走近他们的真实作品,你会发现你和他们并无二致。只是摸索和尝试,我们都只是在试验。最后,不要盲目相信他们。如果您有分歧,请让他们参与进来,并从冲突中吸取教训。我的一些最有成效的对话就是这样发生的。曾几何时,我的Emacs配置一团糟。出于某种原因,我的OCaml自动完成不起作用(它已经坏了一个多月)。我不会自动执行操作,有时不得不在shell历史记录中查找所需的命令。为了解决问题,我从编写最丑陋的代码开始。我把东西写成全局对象,直到最后才明白我到底在做什么。最有经验的程序员总是在黑客和钻孔;最重要的是你能完成任务并达到目标。2.不要贬低你的工作。程序员往往认为他们的工作没有什么价值,因为他们是新手。或者你可能是一位经验丰富的程序员,但在一个新领域工作会让你感到不舒服。但在我看来,最好的想法往往来自新程序员,他们可以看到现有技术的改进,而根深蒂固的思想却看不到。无论哪种方式,您的工作都是值得的。最坏的情况是,即使您的想法没有成功,社区也可以从中了解到为什么该方法不起作用。(给社区的提示:这取决于我们如何做,让新人更容易融入。)3.不要因为害怕落后而停止工作,你可能会觉得跟不上世界。这不是真的。事实上,如果你停止你经常做的事情,你会做得更好,因为你会有新的想法。我发现当我不工作时,我总是充满新想法。事实上,网络上每天发布的内容大多是“新瓶装旧酒”,真正具有革命性的技术,每隔几年才会出现一次。关于这个问题,大家可以看看这个视频——HammockDrivenDevelopment。https://www.youtube.com/watch?v=f84n5oFoZBc4。忽略错误客观地说,您可以更快进步的主要方法之一是忽略不会提高您技能的“错误”。换句话说,“明智地利用你的时间”。一天的时间有限,需要花时间去钻研更深层次的东西。随着时间的推移,你会发现自己进步了很多。那么什么是“绒毛”呢?这取决于你自己的具体情况。然而,我可以给你一些我认为“无足轻重”的例子:语言语法、库API和配置构建工具。例如,学习新的ES7JS语法并不能使你成为更好的程序员,就像学习编译器的工作原理一样。此外,采用实现相同想法但使用新API的新库也没有多大意义。当然,这些东西很重要,但我建议你花更多的时间学习更深层次的概念。这些概念可以在您的一生中为您提供良好的服务。我有一个问题要问你:你是否花了很多时间让你的代码看起来好看?如果是这样,我建议你不要太关注这样的事情。但是,随着时间的推移,您的代码会发生很大变化。最好专注于您要解决的核心问题,例如仔细考虑您的抽象层。完成所有这些工作后,您可以花一些时间来改进代码。这也适用于DRY原则(Don'tRepeatYourself,不要写重复的代码)。不过不用担心,可以随意复制粘贴。5.深入挖掘过去的研究成果。当你有一个新的想法时,你会感到非常兴奋,以至于你会情不自禁地想坐下来立即行动。但是,你不应该这样做,你应该先粗略地研究一下,看看以前是如何解决的。当我们遇到这样的情况时,花几天时间观察它最终可以完全改变我们解决问题的方式。学习阅读学术论文是一项非常宝贵的技能。我对指称,操作等语义一无所知,所以我看不到很多论文。不过,有很多论文是用代码代替数学公式来解释问题的,所以读起来也不是太难。在过去的30年里,大量的知识通过论文发表。如果你善于获取这些信息,你很快就能成为思想领袖。Prettier就是一个很好的例子。我知道我想要什么,但不知道如何实现它。经过一番研究,我找到了这篇论文,几天后,我就知道该怎么做了。我在一周内完成了主体工作。如果我忽略别人的研究结果,我会花更长的时间。http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf如果您正在寻找论文,建议使用GitHub存储库PapersWeLove。https://github.com/papers-we-love/papers-we-love6。参与一些大项目的经历,比什么都宝贵。不是每个人都有机会尝试的,但是如果你有时间,你可以尝试做一些大项目。你甚至不需要完成它们。在最初的几周里,仅仅尝试编写一个编译器或其他东西就可以教给你很多东西。老实说,我讨厌那种不知道如何解决复杂问题的感觉。好痛。在找到解决方案之前,我必须做大量的研究和研究。经过这样痛苦的经历,我总能得到提升,成为更好的程序员。从学习一门新语言开始。这是帮助您摆脱当前习惯并从新角度看待事物的最有效方法。对我来说,当我还是一个年轻的程序员时,我做过的最好的事情就是学习Scheme。这是一种非常简单的语言,它迫使您以函数式方式做所有事情,并真正理解代码工作原理的基础知识。我在Scheme上花了很多年,直到今天仍然从中受益。此外,我对代码的看法也发生了根本性的变化。7.建议做的六件事我推荐做一些对我的程序员职业生涯有重大影响的事情。而且,他们中的许多人仍然以微妙的方式影响着我,帮助我分析新想法。你不必为了成为一名优秀的程序员而做完全相同的事情,你可以学习许多其他的东西来提高自己。学习C-如果还没有,只需学习基础知识。试着想想为什么每个人都在抱怨它,这东西很有价值。写一个编译器——这可能会让你生气,看看超小的编译器项目。了解宏-请参阅Scheme、Lisp或Clojure(脚本)。宏确实可以改变您对代码的看法。SICP-SICP是一本我认为今天仍然相关的旧书(有些人可能不同意)。只要您具有最少的编程知识,它就会一直指导您实现元循环求值器和编译器。另一本我喜欢并且对编译器进行了深入研究的书是LispInSmallPieces。了解Continuations:Continuations是一种低级控制流机制。Scheme是唯一实现它的语言。虽然您永远不会在生产中使用它们,但它们会改变您对控制流的看法。我写了一篇博文试图解释它们。如果可能,尝试一门新语言:无论你做什么,你都应该真正探索其他语言。我推荐以下任何一种:Clojure、Rust、Elm、OCaml/Reason、Go或Scheme都可以。他们都有自己的特点,可以驱使你学习一种新的思维方式。