给新开发人员的 25 条建议:来自一位(主要)自学成才的软件工程师的建议

2025-05-24

给新开发人员的 25 条建议:来自一位(主要)自学成才的软件工程师的建议

我从博客读者那里听到的最常见的问题是“您对新程序员有什么建议?”所以,我认为是时候写下我的想法了。

我以后会把我的故事写完整,但我在大学里选修了两门计算机科学课程。之后不久,我得到了一份软件工程实习机会。我开始从事Web开发工作,最初是后端,后来是前端。我的大学里根本没有教Web开发,更不用说最初的几门计算机科学课程了,所以我自学了。

我认为我的故事并非个例——所有程序员在某种程度上都是自学成才的,无论是完全自学还是拥有计算机科学硕士学位,但他们都自学了正则表达式。事实上,自学可能是作为一名开发人员最重要的技能之一。

除了我自己的经验之外,我还以教人们编码为主要工作,并为我志愿服务的组织提供编码服务 —— 因此本文也借鉴了这些经验。

本文的其余部分将介绍我的入门技巧。

给新程序员的建议

1. 有你的理由,并记住它

如果你想开始编程,就必须有个理由。无论是因为你喜欢写代码,还是想拥有一份更赚钱的职业,又或者因为你正在处理大量的Excel工作,想要提高效率。记住这个理由;编程很难,有时你会感到沮丧。牢记这个理由,坚持下去至关重要。你可以在电脑上贴一张便利贴,在主屏幕上贴一张,或者(像我一样)用白板笔写在镜子上。

2. 打下坚实的基础

这或许是一条很独特的建议,但我认为它真的很有用。如果你有一段时间没接触过数学了,在开始写代码之前,我建议你重温一下代数1中的概念。大部分编程都是建立在代数1的数学基础之上的——也就是函数和变量。在编程之外理解这些概念在未来会非常有价值。我推荐可汗学院的代数1课程!

3. 寻找社区

另一件非常有帮助的事情是找到一个社区,在你开始编写代码时为你提供支持。这个社区很有价值,因为其他人会和你处于同样的境地,提供对他们有帮助的资源,并给予鼓励。我建议在你所在地区寻找一个聚会是最好的解决方案,即使是小城市也往往在附近有一个小组。如果没有,我推荐dev.to和 CodeNewbie 社区,它们是两个不错的选择。CodeNewbie 有每周一次的 Twitter 聊天、一个 Slack 群组和播客可以收听。Dev.to 有很多博客文章和一个 #discuss 标签,你可以在其中发布你的问题!

4. 将问题分解成更小的问题

编程最重要的部分之一是将一个大问题分解成越来越小的部分,直到这些部分可以解决。如果你正对着空白的文本编辑器不知从何下手,那可能是因为你对问题的分解还不够!

5.伪代码

与上一点相关,很多时候,在尝试编写代码之前,用通俗易懂的语言详细地写下你想要做的事情会很有帮助。这个过程被称为伪编码,它可以采用任何你想要的形式。此外,先在纸上慢慢地解决问题,思考甚至写下你为解决这个问题所采取的各个步骤,也会很有帮助。

6. 拥抱学习循环

如果你正在学习编程作为第二职业,尤其是你已经离开课堂一段时间了,那么学习如何学习将会是你学习过程中很重要的一部分。这其中会有很多起伏,这很正常!我建议你在开始之前做好心理准备,迎接这种跌宕起伏。

7. 从免费资源开始

学习编程的资源数不胜数,有些是免费的,有些是付费的。我建议先从免费资源开始,确保你喜欢写代码,之后再考虑付费资源,甚至是参加编程训练营。我有一篇关于我最喜欢的免费编程学习资源的文章,可以在这里找到。

8. 找到你的利基市场

编程领域有很多领域,找到一个你热爱的领域并专注于此。与其努力学习 8 种编程语言、前端和后端、编译型和解释型语言、各种文本编辑器和开发工具等等,不如找到一些你真正感兴趣的东西,并精通它们。

9. 擅长模式识别

识别代码中的模式是你能掌握的最重要的技能之一。人们说要写“DRY”(即“不要重复自己”)代码,其实就是在说如何减少代码中的模式。我推荐一款名为“Set”的游戏来练习模式识别——你甚至可以每天在《纽约时报》的网站上在线玩!

10.尽早养成良好习惯

如果你早点养成习惯,以后写出干净的代码会更容易。坏习惯很难改掉。以下是我编写更干净代码的技巧。如果你从事 Web 开发,在代码上运行HTMLCSS验证器可以准确地告诉你需要修复哪些地方!

11. 确定你的学习风格

每个人的学习方式都不同——无论你是视觉学习者、喜欢视频、需要别人督促,还是喜欢文档,你的学习效果都会与你身边的人不同。找到你最擅长的学习方式,并参考适合你的学习方式的资源。例如,我最擅长阅读文档以及文档中的代码示例,而我很容易在教程中分心。

12. 奋斗,但不要太过

学习过程中遇到一些困难非常重要,这样你才能自己解决问题,并利用现有的资源找到答案。话虽如此,长时间地纠结于一个问题可能会变得毫无成效,令人沮丧。几个小时后,向别人寻求帮助吧!

13. 坦然面对失败

编程很难,找到正确答案并非易事。我编程生涯中最关键的时刻之一,就是编写数独解题程序失败了。适应无法立即完成所有操作并看到那些错误信息确实很困难,但这却是编程的重要组成部分。这也与冒名顶替综合症有关,我对此有整整一篇文章的论述。

14. 喜欢你的错误信息

错误信息非常有用,但刚开始的时候,红色的错误信息可能会吓到你!你需要做的一个关键步骤是通读这些错误信息,理解它们,然后利用它们来解决问题。事实上,你会发现,一个默默无闻的程序错误远比一个有用的错误信息更让人恼火!

15. 有些编程语言比其他语言更容易

对于应该先学哪种编程语言,并没有一个标准的答案;不过,有些语言确实更容易上手。我的首选是 Python、Ruby 和 JavaScript,因为这三种语言背后都有庞大的社区,语法更直接,而且都是解释型的,所以你不需要经过编译过程。

16. 你不需要知道一切

完全掌握编程的方方面面是绝对不可能的。没有人精通每一种编程语言、每一种方法、每一个库和框架,或者找到所有问题的完美解决方案。不必担心学习所有东西,只需专注于你已掌握的知识并加以拓展即可。

17.深度胜过广度

深入学习一件事胜过对很多事情一知半解,尤其是在刚开始的时候。深入的知识会延续下去,让学习下一个知识变得更容易。戴上眼罩,这样你就不会轻易放弃正在学习的知识,转而学习新的东西。

18. 首先关注基本面

编程基础知识非常宝贵,无论你最终从事什么编程工作,都会用到它们。在学习那个大家都在谈论的优秀库之前,先要扎实掌握循环、条件语句、函数、数据类型以及(大多数语言的)面向对象编程。一旦你真正掌握了基础知识,学习那个库就会容易得多。这些基础知识还可以跨语言移植,所以你只需要真正学习一次——之后就只是语法了!

19. 善于解决问题

解决问题是编程的基础!提升解决问题的能力至关重要。解答谜题、在纸上写代码以及分解问题,都能真正帮助解决问题。我有时会看到一些新开发者把编程当成一个研究问题而不是一个解决问题的项目——如果他们能熟练地用谷歌搜索某个问题,就能找到解决方案。没错,谷歌和 Stack Overflow 非常有帮助,但有时也要依靠自己。在研究某个问题之前,先尝试几种不同的方法。或者,研究问题的细微之处,而不是问题本身——例如,“将 JavaScript 中的字符串转换为数组”而不是“将 JavaScript 中的字符串反转”。

20. 善于研究

要学习的最重要的事情之一是如何找到问题的正确答案,或者学习你所用语言或库的新功能。使用 Google 很重要,加入社区和订阅资源也很重要。我通常使用的 Google 模板是“问题语言/框架/库”,尽量简洁,不加任何填充词。例如,“JavaScript 数组排序”、“CSS 旋转元素”或“Vue 创建路由器”。

21. 构建你喜欢的项目

在学习的过程中,你会构建各种各样的项目来练习(并展示)你的技能。选择你感兴趣的项目创意;这样你更有可能完成它们,并愿意投入其中。相关的,完成这些项目。几个真正优秀的成品项目比一堆半成品更令人印象深刻!

22. 只和自己比较

有很多人在学习编程。不要拿自己的进步和别人比较,而要和之前的自己比较,专注于自身的成长。

23. 完成一系列代码挑战

做快速编程挑战真的有助于巩固基础知识。它们非常适合解决问题和练习面试。如果你想让别人帮忙解答,我每天都会在推特上发布一个,标签是#CodingPuzzle !

24.庆祝你的胜利

学习编程可能是一个非常艰难的过程,所以当你完成一些事情时,即使只是很小的事情,也要庆祝一下!我会在Google Keep上记录我的成功,这样,如果我哪天过得不顺,我就可以回顾这些成功,记住它们!

25.编程真棒

编程真的很酷,因为你可以创造一些东西。我总是想起 Sandi Metz 的这句名言:

我们这些以编写软件为生的人无比幸运。编写软件是一种无负担的快乐,因为我们可以运用自己的创造力来完成工作。我们的生活安排得井井有条;我们可以享受纯粹的编程过程,并且确信自己编写的代码终将派上用场。我们创造的东西意义非凡。我们是现代工匠,建造着构成当今现实的建筑物,与砌砖工或桥梁建造者一样,我们理所当然地为自己的成就感到自豪。

所有程序员,无论是最热情的新手,还是显然疲惫不堪的资深人士,无论是在规模最小的互联网初创公司工作,还是在最稳重、历史最悠久的企业工作,都拥有同样的使命。我们渴望尽心尽力地工作。我们希望自己的工作有意义。我们希望一路享受乐趣。

桑迪·梅茨

保持联系!

如果你喜欢这篇文章,还有很多其他精彩内容!我每周都会发送一篇新闻简报,其中包含我最喜欢的链接以及我当周撰写的文章。你也可以在 Twitter 上关注我,随时查看我的新文章!

这篇文章的姊妹篇是关于我最喜欢的新程序员资源的,就在这里

文章来源:https://dev.to/aspittel/25-tips-for-new-developers-advice-from-a-mostly-self-taught-software-engineer-1ff1
PREV
Dev.to 初学者指南
NEXT
参与科技社区的 11 种方式