原文:
www.kdnuggets.com/2022/03/people-fail-learn-programming.html
图片由 Fotis Fotopoulos 提供,来源于 Unsplash
当我第一次想进入数据科学领域时,一个主要的障碍是学习编程。
1. 谷歌网络安全证书 - 快速进入网络安全职业。
2. 谷歌数据分析专业证书 - 提升你的数据分析能力
3. 谷歌 IT 支持专业证书 - 支持你的组织 IT
尽管花了几个小时参加在线编程教程,但当我需要编写自己的程序来从零开始构建项目时,我完全迷失了方向。
在决定职业道路时,我坚决选择了一个不需要编程的领域。我觉得我不适合成为程序员。
然而,当 Covid-19 大流行爆发时,我被困在家里,手上有很多空闲时间。因为没有其他事情可做,我决定给自己另一个学习编程的机会。
这一次,我决定研究一下为什么我发现编程如此困难。是否真的有些人天生比其他人更擅长编程?我是否缺少某种可以让我一夜之间成为更好程序员的秘密成分?
我花了无数小时阅读其他人学习编程的经历。我与高级开发人员和数据科学家进行了交谈。
我花了一些时间,但我意识到是我自己的态度阻碍了我学习编程。
你看,我的问题不是我不够聪明以成为程序员。问题在于我没有拥有正确的心态。
我把编程当作了学校里的其他科目。我试图学习太多,太快。这样做时,我忘记了学习曲线的存在。每当我的代码运行失败时,我很容易感到沮丧。我不断地与其他更有经验的程序员进行比较,而我无法理解他们的代码。
一旦我意识到自己做错了什么,我决定这次以不同的方式做事。我每天编码,并允许自己在过程中犯错误。起初,简单的问题需要我花大约 4–5 小时来解决。随着不断练习,我能够更快地解决更复杂的问题。慢慢地,我发现自己变得更好了。
今天,我绝不是一个熟练的程序员。然而,我能够完成日常工作的任务,执行数据科学工作流,并担任需要编程的自由职业角色。每次解决一个新问题,我的编程技能都会得到提高。
在这篇文章中,我将提供一些关于如何学习编程的建议。这里提供的见解基于我自己的编程经历,以及我多年从有经验的编码者那里收集的建议。
我们几乎都上过编程在线课程。教程是学习编程的一个好方法,因为它们教你基本的编程概念和语法。
然而,大多数人从未停止学习教程。
我跟随了至少 10 个编程 YouTube 视频,并购买了超过 5 个不同语言的在线课程。
我一直这样做,期待每次上不同的在线课程时都能学到新的东西。
不幸的是,我没有。
我上过的每一门课程都教给我我已经知道的相同编程基础知识。
然而,由于我没有将这些概念应用于实践中,我总是无法提出自己的代码来解决问题。
这是一种糟糕的情况。每次上一个新教程时,我感觉自己学到了新的东西。但当我尝试自己创建一个项目时,我根本不知道从哪里开始。
许多程序员称之为 教程陷阱。
如果这种情况对你来说很熟悉,那就该打破它了。
一旦你上过入门课程来学习基本的编程概念,就开始将你的知识付诸实践。
我建议使用编程挑战网站来磨练你的技能。我注册了一个名为 Hackerrank 的平台。他们以各种不同的语言提供编程问题,难度也各不相同。
从最基本的挑战开始,然后逐步攻克更困难的挑战。
起初,我通常需要花费大约 3–4 小时来解决即使是最基本的问题。我会查看其他编码者对这个问题的解决方案,然后将他们的思维过程重新构建成自己的代码。
这样,我逐渐摆脱了仅仅复制粘贴代码的做法。我能够理解不同人的思维过程,并将其重构以匹配自己的思维。
这样做会提升你的编程技能,因为你会意识到有很多不同的方式来解决同一个问题。
学习编程就像骑自行车一样。你需要愿意摔倒多次,才能最终掌握它。
当我刚开始学习编码时,我缺乏耐心。花了几个小时学习一个新的编程概念后,我期待能够成功地将其付诸实践。每次遇到错误时,我都会感到沮丧。我开始失去信心。慢慢地,我放弃了。
我们生活在一个大多数结果都是瞬时的世界中。我们期望快速的成果,而在这个过程中,往往忘记了学习曲线的存在。
我犯的另一个错误是总是拿自己与他人比较。当我阅读其他程序员复杂且难以理解的代码时,我常常觉得自己永远达不到他们的水平。似乎我永远无法像他们那样优秀,这再次降低了我的自信。
我花了一段时间才意识到,没有实践就无法成为一名熟练的编码者。我认识的每一位优秀程序员都有多年的经验。他们每天都在电脑屏幕前待上数小时。
通过与他们交谈,我意识到他们都面临着与我相同的问题。即使在这个领域拥有多年的经验,他们仍然会遇到需要几天甚至几周才能解决的错误。在需要转向不同框架时,他们也会遇到困难,并且在阅读其他人的代码时会感到困惑。
编码并不容易。即使是经验丰富的程序员也会面临看似无法解决的问题。他们在编码时也会感到沮丧。随着经验的增加,他们需要完成的任务的复杂性也会增加。
在解决编码挑战网站上的问题并克服思维障碍后,开始从事你热爱的项目。
构建一个全面的项目是将你学到的所有技能付诸实践的好方法。
我目前的大部分知识来源于我所创建的项目——无论是在工作中还是自己动手做的。
此外,当你创建一个项目时,你超越了在在线课程和教程中学习的工具栈。你需要扩展到不同的框架,甚至可能需要使用多种语言来完成最终产品。
这将大大提升你的编程技能。当你进入行业工作时,即使需要使用不同的工具来解决手头的问题,你也能更快地上手。
如果你想构建你的第一个数据科学项目但没有任何创意,你可以看看我的之前的工作来寻找灵感。
学习编码需要实践、耐心,以及在你变得半途而废之前允许自己失败多次的能力。
最重要的是,这需要巨大的思维方式转变。
许多人期望自己在完成在线课程后成为专家程序员。当他们感到困惑时,他们过早放弃问题,觉得自己不够聪明或准备不足以学习编程。
这种“这实在太难了”的感觉让许多有志的数据科学家放弃了,转而选择了其他职业道路。
为了克服这个问题,你需要理解,没有大量编程时间就无法成为一名体面的程序员。你需要大量练习,还需要学会多次失败。
花时间在编码挑战平台上。如果你感到卡住,查看其他程序员发布的现有解决方案。尝试复制他们的思路。不断重复这个过程,直到你对自己的编码能力充满信心。
最后,从零开始创建自己的实践项目。确保给自己足够的时间去学习、失败和成长。如果你有朋友也在同样的旅程中,可以与他们一起工作。这样,你们可以分享想法,互相激励,一起持续学习。
Natassha Selvaraj 是一位自学成才的数据科学家,热衷于写作。你可以通过LinkedIn与她联系。