11 年编码经验为初学者和初级开发人员提供的经验教训
我最初在 Reddit 上为初学者和初级开发者编写了这篇文章,结果它获得了超过 50 个奖项。因此,我决定根据大家的反馈对其中的部分内容进行升级。
我希望在成为一名软件开发人员之初就知道其中的一些事情,这样我就可以减轻压力。
让我们开始吧。
并非所有教程都是平等的。
想象自己是一只实验室老鼠。
在学习和实验的过程中,要注意哪些教程对你有用。很多教程可能对你没用。没关系。事实上,在找到解决方案之前,实验就是这样进行的。
但是一旦你发现了金子,就坚持下去,贪婪地消耗它,然后找到类似的教程来继续快速成长。
照片由Christopher Gower在Unsplash上拍摄
刚开始学习的时候,我常常会把《Head First Java》这本书当成头疼书。但学了好几个小时,就是一无所获。然而,网上每个人都说这是有史以来最好的编程书籍。TheNewBoston的YouTube 教程当时给了我很大的帮助,尽管现在大家都不推荐他了。
我希望我能说这种情况在我第一年后就停止了。
两年后,我开始学习算法,我所遵循的所有博客教程都没有意义,直到我观看了有关匈牙利民间舞蹈教学算法的 Youtube 视频。
然后一切就都明白了。
从那时起,我的学习方法是从多个地方学习同样的东西,直到找到适合我的老师和风格。
如果你没有用项目来练习,那么什么都不会进入长期记忆
你会忘记很多事情。
深刻理解这一点将会改变你的学习方式。
我已经记不清有多少次在 Udacity、Coursera 等网站上学习过Python 编程入门课程,但最终还是忘记了所有内容。
太烦人了。
但我后来发现,你会忘记在孤立练习中学到的任何东西,因为它们被储存在短期记忆中。神经科学研究表明,大脑就是这样运作的。
如果你不想忘记,可以用间隔重复来测试你的知识。为此,可以构建项目。
我给你举个具体的例子:len(myList)会在 Python 中返回列表的长度。你可以在 Udacity 的入门课程中学习这个。
一个月后回来,您可能不记得它是len、length() 还是 myList.size()。
但如果在项目中进行间隔重复,结果就会有所不同。例如,你为新程序员开发了一个为期两个月的 Django 应用,需要多次统计用户数量、完成的练习次数、聊天次数等等。想象一下,在整个项目过程中,也就是两个月里,你都会反复进行这样的操作。你很难忘记 len() 函数的作用。
这是一个简单的例子,但希望您能明白。
新的学习者可以从简单、孤立的例子开始。
但是,如果你没有在一个让你运用和重复使用所学知识的项目范围内进行练习,那么你学到的知识就不会进入你的长期记忆;它们都是短期记忆。你会忘记的。
在恐惧中努力工作,而不是对抗它。
我承认:这说起来容易做起来难。
但如果你想长久的话,你必须掌握这一点。
你可能会想先克服恐惧,然后再继续学习。不幸的是,这行不通。
事实上,你会花很多时间试图消除恐惧,但这只会让你的焦虑加倍。你必须找到一种方法——你自己的方法——承认你害怕,并且坦白地说,你会在很长一段时间内继续害怕,然后在这个认识下努力。无需强求。
有时,随着你变得更加熟练,这种恐惧就会消失。
其他时候,它会消失一段时间,当你进入一个新环境、与智能软件开发人员一起工作或转移到一个全新的堆栈时,它就会回来。
没关系。
如果你想成为一名软件开发人员,你必须记住:
这就是生活。
它就像一道正弦波——无休止地起伏。别太认真,否则你会迷失自我。
坚持>努力。
一致性是王道。
当你开始学习时,你会建立神经通路,使检索信息变得更容易。根据神经科学的研究,这些通路只有通过频繁使用才能变得强大,而不仅仅是强度。
这意味着,每周 5 天,每天 30 分钟比每周仅一次,每天 2.5 小时要好得多。
同样的时间;不同的影响。
不要只是努力工作,还要运用智慧。
天赋=隐藏的练习。
人们很容易将进步视为天赋。
我的第一堂编程课是 C++,我的同学们都不相信我以前从未编写过代码,因为我太有天赋了。
但他们同样无法接受的是,下课后,我会花五个小时输入cout <<“这是我的第一个程序”,然后意识到它没有运行,因为我忘记了一个分号;重新输入它,然后意识到它没有在新行上打印出我的语句,因为我没有添加 endl。
这种刻意的练习培养了人们所认为的天赋。
天赋比拼命更有吸引力,所以没人想听你靠努力才走到今天。直接告诉我你天生如此就好——这样更可信。
但成为一名熟练的软件开发人员就像演奏乐器一样。
只有极少数人天生有天赋。
大多数人的成绩取决于他们投入的练习量。而且,当学生坐在键盘前的那一刻,你就能立刻看出他们没有练习过。
你会遇见混蛋!
每个领域都有一些可怕的人。
无疑。
但我不确定软件开发到底有什么吸引大批混蛋的地方。也许是因为编程给人一种拥有超能力或稀缺技能的感觉。如果你是个新手,你会遇到一些编程多年的人,觉得其他人都不应该来。
只会 Windows 开发?你会遇到 Linux 狂热粉,觉得你很平庸。
如果你是女性,你会因为性别原因立即被解雇。多年来,我从同事们的经历中了解到这一点。
如果你是少数群体,你会遇到一些人,他们认为你只应该去拿咖啡,而不是去写代码。
如果您来自其他领域(特别是非 STEM),您会遇到一些自动将自己视为编程社区守门人的人。
“我们这里不需要社会科学家;我们是纯粹主义者!”
他们在线。
在上班。
有时,你的家人也会感到悲伤。
问题不在于你是否会遇见他们,而在于何时遇见他们。
学会继续前进。
情况正在好转,但在教育人们方面仍有许多工作要做。
但不要因此而却步。要增强你的韧性,这样你就不会在遇到这些人之后就放弃。
当你到达顶峰时,不要成为一个混蛋!
掌握一件事。
新开发人员往往会四处学习很多东西。
好吧,这不仅仅是新的开发人员;还有经验丰富的人。
你学习了 React 一周。
然后学习了两周的 JavaScript。
Laravel 有三个版本。
停止。
你需要醒悟过来,认识到残酷的事实是,你只是在延长真正学习任何东西所需的时间。
“如果一个人精通一件事,并且很好地理解了一件事,那么他同时就能洞察和理解很多事情。” ——文森特·梵高
选择一件事。
坚持几个月——最好是 6 到 12 个月,然后再转向其他事情。
这有两个好处:
- 您将深入研究并达到临界点,从而迈向精通。
- 掌握一个领域后,你可以将知识迁移到另一个领域。学习 Flask,你可以轻松入门 Django。深入学习 React,你可以在几天内快速识别 Laravel 的优缺点。
这并不意味着只学习 HTML 六个月,然后只学习 CSS 一年;而是意味着不要将学习 Django、Express、React、一些游戏开发和 iOS 混在一起。
您可能会在短时间内完成很多事情。
但你什么也不会掌握!
软件开发是一个不断发展的领域。
这令人兴奋,
也令人沮丧,
也令人恐惧。
但如果必须的话,我会再做一遍。
感谢您的阅读——请传播!
呼!经过深思熟虑,花了很多时间才把这个整理好。
如果你喜欢这篇文章,并且你在推特上,请点赞并转发,帮助传播它。虽然听起来很琐碎,但确实很有帮助。
查看LifeTechPsych 上的其他文章– 您可能会发现其他您喜欢的内容。
下一步是什么?
我正在尝试一项新举措,帮助新程序员和初级开发人员减少压力,管理冒名顶替综合症并更聪明地学习。
说实话,我还不确定整个流程是什么样的。但我会顺势而为,根据大家最需要帮助的方面,整理资源和文章。
如果你感兴趣,可以在 Twitter 上告诉我。如果你更喜欢直接留言,我的私信是开放的。
注意——我喜欢研究,所以我倾向于用行为心理学和神经科学的概念来支持我的建议和方法。
文章来源:https://dev.to/lifetechpsych/lessons-for-beginners-and-junior-developers-after-11-years-of-coding-mej