• 如何才能使自己成为更优秀的程序员?
  • 发布于 1周前
  • 52 热度
    0 评论
同事们很多人都让我莫名的认为我是一名非常资深厉害的程序员。我觉得可以分享一下,自己多年如一日的编程“思维”。不过,至到去年以来,进入了当下这家+1+2领导都很认可我的市场化国企,我才对自己的工作越来越有信心。即使现在,我还是会不断怀疑自己。关键是这种感觉不会消失,所以试着忽略它,继续深究技术知识,继续积累经验。

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

一. 找到能激励你的人,但别崇拜
这么多年,我仰慕过许多人,并通过他们关注新技术。我相信他们是正确的,并对他们所做的事情深入研究,一路学到很多。这些人至少看着:
.博客输出高效
.才华至少当时比我多
.且能鼓舞人心
你要想尽办法找到这种人,让他们激励指导你。不过,别崇拜!若仅看贴子,你会觉得他们遥不可及。但走近他们真实工作,你会发现自己与他们没啥不同,都是在摸索尝试,我们都只是在试验各种解决方案。不要盲目相信他们,若你有不同意见,就请他们参与进来,并从观点碰撞的过程中汲取经验。

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

二. 别贬低自身工作
程序员小白往往认为他们工作价值不大,因为他们是新手,肯定都是最简单活儿。或者你可能是一名有经验程序员,但在一个新领域工作,离开了舒适区,你就不爽。但我觉得,最好的想法往往来自新程序员,他们能看到现有技术改进点,而思维固化的人看不见。所以,业务新人别怕请教别人,你多咨询产品,咨询领导,咨询有经验的同事,还能有啥坏处吗?

不管咋,你的工作都值得。最坏的是,即使你的想法没成功,社区也能从中了解到为啥这种方法行不通。这也给社区一个提示:这要取决于我们是怎么做的,并让新人很容易融入进来。

三.不要因害怕落伍,而不停工作
每天都有新技术问世,尤其现在令人焦虑的 AI 梦幻时代。若你一天不碰技术,可能就感觉跟不上世界了。但这不是真的。事实上,若经常放下手头工作,你会做得更好,因为你有时间诞生新想法了。我发现,当我不工作时,我总有新想法不断产生。实际上,网络内容大多“新瓶装旧酒”,真正革命性技术每隔几年才会出现一次。你看那些 AI 套壳应用,有啥创新吗?大部分都是基于已有方案去细分优化,

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

四. 忽略fluff
客观地说,你能取得更快进步的主要方法之一:忽略那些并不能提高技能的“fluff”。换句话说,要“聪明利用时间”。一天精力有限,越大越感觉没多少时间脑子还清醒,你需要将时间花在钻研更深层的事情,而不是天天焦虑一些没几把用的。随时间发展,你会发现自己有很大进步。

啥是“fluff”?
这取决于你自身具体情况。给你一些我认为是“fluff" 的例子::
语言语法
库API

配置构建工具


如学习一个新的 ES、JS 语法,不会让你成为更好程序员,这就像学习编译器咋工作一样。同样,采用一个实现相同想法却使用新 API 的新库也没意义。当然,这些事情很重要,但建议你花更多时间学习更深层概念。这些概念可让你终生受益。你是否花大时间让代码看起来漂亮?真的建议别太关注这种鸡毛蒜皮的事。不管咋样,随时间发展,你的代码都会各种原因变成shit mountain。

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

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

五.深入学习过去的研究成果
若你有一个新想法,就会感到兴奋,情不自禁想坐下来马上行动。但你不该这样做,你应该先做一些粗略研究,了解前人咋解决的。碰到类似情况,先花几天时间研究一下,最终会彻底改变我们解决问题的方式。学会阅读论文是很宝贵技能。我对denotational、operational 等语义一无所知,所以我看不懂很多论文。但很多论文使用代码而非数学公式阐述问题,因此并不会太难读。过去 30 年,有大量知识通过论文发表。如你善于获取这些信息,你很快就会成为思想领袖。

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

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

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

说实话,我很讨厌那种我不知道如何解决复杂问题的感觉。这让人很痛苦。在接近解决方案前,我必须做大量的研究和学习。有过这样的痛苦经历后,我总是可以得到提升,成为更优秀的程序员。从学习一门新语言开始。这是帮你摆脱当前习惯和从新角度看问题的最有效方法。

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

七. 建议做的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。它们都有自己的特点,可以驱使你学习一种新思维

用户评论