怎样成为一名更优秀的程序员?我总结出7条建议

时间:2022-10-10 19:04:50 | 浏览:1467

有几个人在 React 大会上向我请教一个问题——如何成为一名更优秀的程序员。人们将我视为一名非常资深的程序员,因此值得听听我的建议。我觉得可以分享一下,自己多年来在编程方面的“思维模式”。先简要自我介绍一下:我叫 James Long,今

有几个人在 React 大会上向我请教一个问题——如何成为一名更优秀的程序员。人们将我视为一名非常资深的程序员,因此值得听听我的建议。我觉得可以分享一下,自己多年来在编程方面的“思维模式”。

先简要自我介绍一下:我叫 James Long,今年 32 岁,有超过 10 年的丰富工作经验。不过,直到近几年,我才对自己的工作越来越有信心。即使现在,我还是不断怀疑自己。关键是这种感觉不会消失,所以试着忽略它,继续深究技术知识,继续积累经验。

我再次提醒一下,这些只是提高你技能的几点建议。最终,你需要弄清楚自己适合的方式是什么。

找到能激励你的人,但不要崇拜他们

过去许多年,我仰慕过许多人,并且通过他们关注新技术。我相信他们是正确的,并且对他们所做的事情深入研究,因此学到很多。

这些人往往非常高效、才华横溢,并且能鼓舞人心。你要想尽办法找到他们,让他们激励和指导你。

不过,别崇拜他们。如果仅看 twitter 上的贴子,你会觉得他们遥不可及。但是,如果走近他们的真实工作中,你会发现自己与他们相比没什么不同。只不过在到处摸索尝试而已,我们都只是在进行试验。

最后,不要盲目地相信他们。如果你有不同意见,就请他们参与进来,并从观点碰撞的过程中汲取经验。

我的一些最有成效的对话就是这样发生的。曾经,我的 Emacs 配置一团糟。不知道为什么,我的 OCaml autocompletion 不能用了(它坏了一个多月)。我没有自动化的东西,有时必须在 shell 历史中寻找所需的命令。为修复问题,我一开始写 ugliest 代码。我将东西写成全局对象,直到最后才明白我到底做了什么。

最有经验的程序员一直在破解和钻研;最重要的是,你能完成任务,达成目标。

不要贬低自己的工作

程序员小白往往认为他们的工作价值不大,因为他们是新手。或者你可能是一名有经验的程序员,但是在一个新领域工作,这会让你感到不爽。但在我看来,最好的想法往往来自于新程序员,他们可以看到现有技术的改进点,而思维固化的人却看不见。

不管怎样,你的工作都是值得的。最坏的情况是,即使你的想法没有成功,社区也可以从中了解到为什么这种方法行不通。

(给社区的一个提示:这要取决于我们是怎么做的,并让新人很容易融入进来。)

不要因为害怕落伍而不停工作

每天都会有新技术问世,如果你一晚上不碰技术,可能就会感觉跟不上这个世界。这不是真的。事实上,如果经常放下手头工作,你会做得更好,因为你会有新想法。

我发现,当不工作的时候,我总会有新想法不断产生。

实际上,网络上每天发布的内容大多是“新瓶装旧酒”,真正具有革命性的技术每隔几年才会出现一次。关于这个问题,你可以看看这个视频—— Hammock Driven Development 。

忽略 fluff

客观上说,你能取得更快进步的主要方法之一是忽略那些并不能提高技能的“fluff”。换句话说,要“聪明的利用时间”。一天的时间有限,你需要将时间花在钻研更深层次的事情上。随着时间的发展,你会发现自己有很大进步。

那什么是“fluff”?这取决于你自身的具体情况。但是,我可以给你一些我认为是“fluff" 的例子:语言语法、库 API 和配置构建工具。例如,学习一个新的 ES7 JS 语法并不会让你成为一个更好的程序员,这就像学习编译器是如何工作的一样。同样,采用一个实现相同想法却使用新 API 的新库也没多大意义。当然,这些事情很重要,但我建议你花更多时间学习更深层次的概念。这些概念可以让你终生受益匪浅。

我有个问题想问你:你是否花费大把时间让代码看起来很漂亮?如果是这样,我建议你不要太关注这样的事。不管怎样,随着时间发展,你的代码会有很多改变。

最好将注意力集中在你试图解决的核心问题上,比如仔细考虑一下你的抽象层。在完成所有这些工作后,你可以花点时间来改进代码。这也适用于 DRY 原则(Don’t Repeat Yourself,不要写重复的代码)。不过别那么担心,随意复制粘贴吧。

深入学习过去的研究成果

如果你有一个新想法,就会感到很兴奋,情不自禁地想坐下来马上行动。但是,你不应该这样做,你应该先做一些粗略研究,了解前人是如何解决它的。碰到类似情况时,先花几天时间研究一下,最终会彻底改变我们解决问题的方式。

学会阅读学术论文是一项很宝贵的技能。我对 denotational、operational 等语义一无所知,所以我看不懂很多论文。但是,有很多论文使用代码而不是数学公式来阐述问题,因此并不会太难读。过去 30 年来,有大量的知识通过论文发表出来。如果你善于获取这些信息,你很快就会成为思想领袖。

Prettier 是一个佳例。我知道自己想要的是什么,但不知道如何实现它。做过一些研究后,我发现这篇论文,再过几天后,我就知道怎么做了。我在一周内就把主体工作全完成了。如果忽略别人的研究成果,那我就要花更长时间。

如果你想寻找论文的话,GitHub 库 Papers We Love 是一个推荐。

去参与一些大项目

经验比任何东西都宝贵。不是每个人都有机会去尝试,但如果有时间,你可以试着去做一些大项目。你甚至不需要去完成它们。仅仅是尝试写一个编译器之类的东西,这就能在开始几周教你很多东西。

说实话,我很讨厌那种我不知道如何解决复杂问题的感觉。这让人很痛苦。在接近解决方案前,我必须做大量的研究和学习。有过这样的痛苦经历后,我总是可以得到提升,成为更优秀的程序员。

从学习一门新语言开始。这是帮你摆脱当前习惯和从新角度看问题的最有效方法。

对我来说,当我还是一个年轻的程序员时,我做的最好事情就是学习 Scheme 。这是一门非常简单的语言,它会强迫你以函数式的方式完成所有事情,并真正了解代码工作的基本原理。我在 Scheme 上花费数年时间,直到今天仍然受益。并且,我对代码的看法发生根本性改变。

建议做的六件事

我推荐做几件事,这些都我的程序员生涯产生重大影响。并且,他们中的许多事直到现在还以微妙的方式影响我,帮我对新想法进行分析。为了成为一名优秀的程序员,你无需做完全相同的事,你可以学习很多其他东西提高自己。

1. 学习 C 语言——如果你没学过,学一些基本的就够了。试着去想想,为什么每个人都抱怨它,这件事非常有价值。

2. 写一个编译器——这可能让你很不爽,可以看看 super tiny compiler 项目。

3. 学习宏——请参考 Scheme、Lisp 或 Clojure(脚本)。宏会真正改变你对代码的看法。

4.SICP—— SICP 是一本旧书,我认为直到今天仍然很有价值(有些人或许不赞成这个观点)。只要你有很少的编程知识,它就可以引导你一直实现 a meta-circular evaluator 和 compiler。另一本,我很喜欢并在编译器方面做过深入研究的书是 Lisp In Small Pieces 。

5. 了解 Continuations: Continuations 是一种低级的控制流机制。Scheme 是唯一实现它的语言。虽然你永远不会在生产环境中使用它们,但它们会改变你对控制流的看法。我写过一篇试着解释它们的博文。

6. 如果有可能的话,试着使用一种新语言:不管你做什么,你真的应该探索其他语言。我推荐以下任何一个:Clojure、Rust、Elm、OCaml/Reason、Go 或 Scheme 都可以。它们都有自己的特点,可以驱使你学习一种新的思维方式。

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书!

相关资讯

经验之谈:程序员行业有哪些越早知道越好的道理?

互联网作为现在行业中的领头羊,一直吸引着源源不断的人才,但是在真正入行成为程序员之前,很多小伙伴就会产生一种疑问:入行前提早知道什么能够大范围的规避一些问题呢?知乎提问“程序员行业有哪些越早知道越好的道理”冲入热榜,刚好适合解答新人小白的疑

程序员级别排布,你在哪一级?

程序员这个“物种”自诞生以来,便有了森严的等级制度,划分标准十分复杂却又有规律可循。经常在网上的论坛里看到大家讨论程序员的级别,由于级别不同,薪水也是有着天壤之别。“码农”和“程序员”虽说是调侃,但实质上还是有差别之处的。下面,黑马君就来说

“35岁才是一个程序员成熟的开始!”

作者 | 王晓波,同程旅行机票事业群CTO【写在前面】不就是比尔盖茨吗?我从初中就开始接触编程了。那个时候正好处在世纪之交,所有人的思想都很活跃,我父母在那个年代觉得未来的世界肯定是科技的,虽然他们不懂什么是电脑,但还是花大价钱给我买了一台

九零后程序员心塞:“30岁,月薪还没过万,是我的问题吗”

2020年有职场专家指出:四千元的月薪,在国内算是中等的薪资水平。每个月能赚到四千块,就打败了一半的国人;如果每个月能赚8000~10000,那你就能跑赢90%的国人。这几个数字是怎么得出来的?我们可以从两个方面加以推测和论证。第一,全国最

一篇文章搞懂高级程序员、架构师、技术总监、CTO薪资到技能区别

点击上方关注,每天学习进步一点“我希望用一篇文章完全让大家正确的理解从程序员到架构师、技术经理、技术总监、CTO的完整区别以及进阶要领。只有客观去认识,才会更加合理的找到自己的擅长点,从而更好的发展自己。上图是典型的薪资结构图,我们先从高级

程序员吐槽:我现在副业200万,主业40万,工作的意义是什么?

这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时间挣钱,这是最最最笨的一种方式。在我看来在公司打工是一种时间不可复用,且技能又不断重复的苦力活。比如很多程序员就搞起了副业,有些副业收入

做程序员的这五年

到昨天为止,做程序员,已经整整五年。最近半年来,我时常思考我走过这五年,反思我的职业工作,反思我的生活,我选择错了很多,也做错了很多。有些道理,到最近才幡然醒悟,遂决定谈谈我个人对软件工作的看法,以及一些生活的感悟。苦苦攒钱的年轻人我还在苦

程序员的五层境界,你在哪一层?最后一层的,都是人生赢家

在我的很多文章下面,都会有一些小伙伴,留言说他迷茫,不知道后面该怎么走。刚入门的,觉得自学怎么这么难,怎么完全没有方向。工作几年的,自以为自己什么都懂了,不知道接下来应该怎么办。其实,在各个阶段,每个人都会有迷茫期。今天我们就来聊聊,一个菜

程序员如何保护视力?医生推荐了这7个方法,看到就幸运

众所周知,与其他职业的人来相比,程序员使用电脑的时间更长更多。因此,更应该注意保护自己的眼睛,避免近视、眼睛干涩、慢性结膜炎等眼部疾病。那么,保护眼睛视力,应该怎么做呢? 广州军区广州总医院眼科主任邹玉平主任医师建议: 1、眼睛与电脑屏幕的

友情链接

SEO域名抢注宝宝起名网妈妈知道币圈天津旅游网羊驼宠物网刘三姐故里景区黄河壶口瀑布伦敦旅游网漳州新闻头条网欣灵电气股票浙江旅游网陨石资讯网街舞培训网今日咸阳古井贡酒股票网西藏藏红花网海口新闻头条网象鼻山旅游攻略
Java编程学习网-java零基础自学、java新手入门菜鸟必学、电脑编程入门自学、java安装教程详细、java新手编程入门、前端刷题网站、java开发工程师、前端刷题小程序、java入门基础知识、java新手代码大全、编程题库网站、java程序员刷题软件、编程入门自学网站、java题库网站、java新手刷题网站。
Java编程学习网 yaliandai.cn ©2022-2028版权所有