学习2个月从入门到放弃 是什么注定了我的失败?
mental_context_switches
这是丹·巴德(Dan Bader)先生写的一封电子邮件,现在翻译如下:
嘿,你好。
当我15岁的时候,我决心成为世界上最伟大的吉他手。
当时我已经是一个书呆子了——所以,在一个美丽的周日早上,我坐下来呆了几个小时,为这个目标制定了一个学习计划。我把自己变成一名吉他手的巧妙计划是这样的:
“这里有一叠我喜欢的乐队的光盘。我打算每天轮流看这五种不同的流派,练习几个小时。这将会给我最大限度的表演,我将能够起劲地跳舞了。”
周一,我去买了一大堆练习书和杂志课,为我喜欢的前20首布鲁斯、爵士乐和金属歌曲做准备。
我很确定我也投了大约16分钟的平克·弗洛伊德独唱……
我拖着沉重的脚步回家——甚至不知道如何进行基本的机械和弦伴奏加花,我就潜心学习这些迥然不同的风格。
猜猜发生了什么……
两个月后,我取得了完全为零的进步,并准备完全放弃吉他。哎哟。
回首往事,我现在知道是什么注定了我的“巧妙”计划失败:
同时练习所有这些不同风格的音乐,混淆了我的大脑和肌肉记忆。
所有这些“心理环境转换”都没有帮助。它只是增加了负担,确保我漫无目的地转动轮子。
这就是为什么我要告诉你这些:
学习python很容易犯同样的错误。
毫无疑问,现代软件开发非常复杂。
随着时间的推移,事情变得越来越复杂……
从外部看,一个相对清晰的技能集,一旦你仔细观察,就会变成一个分形主题:
建立开发环境,掌握语言的基本语法,了解标准数据结构和算法,以及何时应用它们,理解Git和源代码控制,TDD(Test Driven Development 测试驱动开发)和编写自动化测试,设计可维护性程序,……
(在这里深呼吸。)
……学习如何组织源代码、错误处理、使用什么框架以及何时使用、与PostgreSQL和MySQL数据库交互、面向对象编程、静态代码分析、Django、Flask、web应用程序、APIs、设计模式、过梁、代码覆盖、持续集成,……
伙计。
你只需要拿许多东西——如果你试图同时把它们都涵盖进去,事情会变得更加困难。
如果你发现自己处于这种情况,我的建议是,将“心理环境转换”保持在最低限度。
不要试图同时学习布鲁斯、爵士乐和金属音乐,来重复我的错误。
这样很容易疲惫不堪并且失去动力。这会让你的学习进度停滞不前。相反,我发现故意限制你的选择是有帮助的。设置一些限制,将有助于增强你的创造力和注意力:
专注于精通一种编程语言(例如Python)。
了解如何只设置和使用一个数据库(例如PostgreSQL)。
了解如何使用一个网络框架(例如Django)。
使用一个源代码管理工具(例如Git)。
等等。
在一段时间内专注于你添加到技能集中的每样东西。用你已经知道的工具和技术解决问题。
在你开始学习一项新技能之前,让一些事情解决一点点。这很难,但我知道你能看明白并且成功。
祝你好运,还有……学习python快乐!
-丹·巴德(Dan Bader)