给入门程序员的一封信:编程很难,但不要放弃!

216 阅读6分钟

学习做一件新事情是很难的。

无论是像达到新的最佳举重这样的身体壮举,还是像学习一种新的语言这样的精神挑战--都需要几个月的努力,多次挫折,以及投入数百小时的时间。然后你仍然可能只是停留在中级水平。

在最终能够毫不费力地完成之前,花几个小时 一次又一次地失败,是任何初学者的前进路线。

但做不好一件事并不有趣。

,你很难继续做你正在努力做的事情。

,当你觉得你的错误代码没有进展,更糟糕的是,不知道 如何改善你的情况时,你很难继续定期编码。

变得更好的唯一方法是......继续被卡住,只是坚持下去?这听起来并不令人鼓舞。

但这正是你成为伟大人物的必要条件。

我认为学习编码特别难,因为它与大多数其他活动如此不同,有时很难看到你的哪些其他技能可能会转移到编程上。

但是,因为编码是具有挑战性的工作,而且可能是如此令人沮丧,这正是你应该做的原因。

为什么做困难的事情是好事

> 奇怪的是,当你试图让它变得简单时,生活就会变得更难。锻炼可能是困难的,但从不移动使生活变得更难。不舒服的谈话很难,但避免每一次冲突却更难。掌握你的手艺很难,但没有技能就更难。轻松是有代价的。 -詹姆斯-克里尔

我发现,我的性格、技术能力和个人发展的最大飞跃通常来自于我必须面对的一些困难。

在新的开发者中,有这样一个错误的想法,即有经验的开发者一般都知道该做什么,只需 "做 "就行了。

我发现情况完全不是这样。

我已经有4年的编码经验,最近想创建一个自动化的工作,每月运行一个Node脚本。然后在Node脚本运行结束后,它将把所有结果的文件提交到GitHub上的仓库。

我很快就把它连接好了,但好几天都想不明白为什么这个脚本没有向我的仓库提交任何东西。

我想知道是Node脚本没有运行,还是它在运行但没有提交。

我尝试了各种方法。我联系了开发者朋友。但他们也不知道哪里出了问题。

在我的机器上一切都能正常运行,为什么会这么难?

我终于解决了这个问题。运行我的Node脚本的机器与我使用的操作系统不同(它使用Ubuntu),并且是一个区分大小写的shell,而我的shell是不区分大小写的。

因此,尽管它在我的机器上工作,但在另一台机器上却 "爆炸 "了,因为我把文件(我想提交的文件中的所有结果)的大小写搞错了。

我修复它的提交。

在那一刻,我只想修复这个错误。

我很讨厌不能正确地调试这个问题,因为我不能访问运行我的代码的机器。我觉得我是在猜测,因为反馈回路太慢了。

但现在我有了这样做的经验,我知道如何再对这类情况进行最佳的调试。

我唯一想告诉你的是,改进的唯一方法是挣扎和解决事情。不管感觉有多慢。

根据我的经验,我作为一个 "不懂 "的新手程序员所处的状态与我目前所处的状态的唯一区别是,我只是没有放弃。

投资于损失

有一个很好的方法来框定 "变得更好意味着挣扎、坚持和不放弃",叫做投资于损失

如果你想做好一件事,你需要花很多时间去做坏事。将损失_视为一种投资_,而不是要避免的东西

这个概念来自《学习的艺术》一书。

要掌握任何新的技能,你需要经历一个长期的糟糕时期,然后才能成为好的。

软件的每一个新部分都感觉像是一个你没有经验的全新世界:部署、网络、编码、数据结构、文档,不一而足。而且有好几次--即使你有经验了--你也会觉得自己又是个初学者。

很多时候,阻碍我们的是我们对自己_应该达到的_ 目标的期望,以及在我们完成这个过程之前对这个过程失去耐心。

如果你对其他事情很在行,回到初学者的状态是很刺耳的。

但你需要专注于将损失视为一种投资 --不要过早放弃。

不要放弃!

我没有失败过一万次。我没有失败过一次。我已经成功地证明了那一万种方法是不会成功的。当我排除了那些行不通的方法,我就会找到行得通的方法。– 托马斯-爱迪生

总有一些时候要减少你的损失,但是如果编程是你真诚地想要提高的东西,无论是为了新的职业还是为了乐趣--不要放弃。

当我第一次开始学习JavaScript时,我花了很多时间在Eclipse 代码编辑器中编码,因为我认为Java是JavaScript的缩写名称。

如果你不知道,它们是不一样的,而且那个编辑器不(原生)适用于JavaScript!

在我还是个新手的时候,有无数次我经历了面试,感觉自己完全失败了,只是后来得到了工作机会,我才感到惊讶。

记住你最初开始学习的原因,只要坚持下去。任何进步,无论多么微小,都是有价值的。

结语

我清楚地记得几年前,有一次我在freeCodeCamp上编码,对自己在某个问题上的困顿感到非常沮丧。

,我读到了篇文章,它是形成我对这个话题的看法的众多文章之一,激励我继续前进,并在这篇文章中写下我的想法。

如果你是一个新手开发者,我在这里写了我作为一个开发人员所采取的改进步骤,并在这里维护一个高质量的编码资源列表。

如果你想阅读我更多的文章,我在这里推送了我的文章。


Kealan Parr

Kealan Parr

软件工程师和首席架构师 @ kealanparr.com