如何成为优秀程序员?

2024-05-25 14:40:46 浏览数 (2)

如何成为一名更优秀的程序员

同事和粉丝们很多人都让我莫名的认为我是一名非常资深厉害的程序员。我觉得可以分享一下,自己多年如一日的编程“思维”。

我有 8 年Java经验了:

不过,直到去年以来,进入了当下这家 1 2领导都很认可我的市场化国企,我才对自己的工作越来越有信心。即使现在,我还是会不断怀疑自己。关键是这种感觉不会消失,所以试着忽略它,继续深究技术知识,继续积累经验。

注意,这些只是提高你技能的建议。最终,你要弄清楚适合自己的方式。兼听则明,偏信则暗!

1 找到能激励你的人,但别崇拜

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

这些人至少看着:

  • 博客输出高效
  • 才华至少当时比我多
  • 且能鼓舞人心

你要想尽办法找到这种人,让他们激励指导你。

不过,别崇拜!若仅看贴子,你会觉得他们遥不可及。但走近他们真实工作,你会发现自己与他们没啥不同,都是在摸索尝试,我们都只是在试验各种解决方案。

不要盲目相信他们

若你有不同意见,就请他们参与进来,并从观点碰撞的过程中汲取经验。

我的一些最有成效对话就这样发生的。最有经验的程序员一直在破解和钻研;最重要的是,你能完成任务,达成目标,解决掉问题!

2 别贬低自身工作

程序员小白往往认为他们工作价值不大,因为他们是新手,肯定都是最简单活儿。或者你可能是一名有经验程序员,但在一个新领域工作,离开了舒适区,你就不爽。

但我觉得,最好的想法往往来自新程序员,他们能看到现有技术改进点,而思维固化的人看不见。所以,业务新人别怕请教别人,你多咨询产品,咨询领导,咨询有经验的同事,还能有啥坏处吗?

不管咋,你的工作都值得。最坏的是,即使你的想法没成功,社区也能从中了解到为啥这种方法行不通。

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

3 不要因害怕落伍,而不停工作

每天都有新技术问世,尤其现在令人焦虑的 AI 梦幻时代。若你一天不碰技术,可能就感觉跟不上世界了。但这不是真的。事实上,若经常放下手头工作,你会做得更好,因为你有时间诞生新想法了。

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

实际上,网络内容大多“新瓶装旧酒”,真正革命性技术每隔几年才会出现一次。你看那些 AI 套壳应用,有啥创新吗?大部分都是基于已有方案去细分优化,

关于这个问题,也可看看这个视频—— Hammock Driven Development 。

4 忽略fluff

客观地说,你能取得更快进步的主要方法之一:忽略那些并不能提高技能的“fluff”。

换句话说,要“聪明利用时间”。一天精力有限,越大越感觉没多少时间脑子还清醒,你需要将时间花在钻研更深层的事情,而不是天天焦虑一些没几把用的。随时间发展,你会发现自己有很大进步。

啥是“fluff”?

这取决于你自身具体情况。给你一些我认为是“fluff" 的例子::

  • 语言语法
  • 库API
  • 配置构建工具

如学习一个新的 ES、JS 语法,不会让你成为更好程序员,这就像学习编译器咋工作一样。同样,采用一个实现相同想法却使用新 API 的新库也没意义。当然,这些事情很重要,但建议你花更多时间学习更深层概念。这些概念可让你终生受益。

你是否花大时间让代码看起来漂亮?真的建议别太关注这种鸡毛蒜皮的事。不管咋样,随时间发展,你的代码都会各种原因变成shit mountain。

最好将注意力集中在你试图解决的核心问题,如设计你的抽象层。在完成所有这些工作后,花一点点时间改进代码,更别说现在 AI 辅助重构代码,自己重构更没意义了。

至于什么DRY原则,别担心,尽情地享受复制粘贴的快感吧!领导听完你的业务架构设计后,只关心系统是不是按既定设计做出来了,tmd 不会看你的代码的,也不会为此理由而给你发更多年终奖!

5 深入学习过去的研究成果

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

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

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

想寻找论文,GitHub 库Papers We Love 推荐。

5 参与一些大项目

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

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

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

学习Scheme,非常简单的语言,它会强迫你以函数式的方式完成所有事情,并真正了解代码工作的基本原理。让我对代码的看法发生根本性改变。

7 建议做的6大事

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

  • 学 C 语言——如果你没学过,学一些基本的就够了。试着去想想,为什么每个人都抱怨它?
  • 写个编译器——可能你很不爽,可看看super tiny compiler项目
  • 学习宏——参考 Scheme、Lisp 或 Clojure(脚本)。宏会真正改变你对代码的看法
  • SICP——一本旧书,我认为直到今天仍然很有价值(有些人或许不赞成这个观点)。只要你有很少的编程知识,它就可以引导你一直实现 a meta-circular evaluator和 compiler。编译器方面做过深入研究的书是 Lisp In Small Pieces
  • 了解 Continuations:一种低级的控制流机制。Scheme 是唯一实现它的语言。虽然你永远不会在生产环境中使用它们,但它们会改变你对控制流的看法
  • 可能的话,使用一种新语言:不管你做什么,你真的应该探索其他语言。推荐任何一个:Clojure、Rust、Elm、OCaml/Reason、Go 或 Scheme。它们都有自己的特点,可以驱使你学习一种新思维

0 人点赞