学习新技术的七个层次
学习新技术一开始可能感觉很容易,但你越深入,就越容易感到困惑和沮丧。经过这么多努力,你完成了教程,开始觉得自己理解了。
现在你看了一些教程,复制了一些代码,令人惊讶的是,一些例子确实有效。
然后你打开一个空白项目,突然不知道从哪里开始。
这是当今学习技术最大的问题之一。我们经常把识别信息和理解信息混为一谈。
你可以看十个小时的教程,仍然难以自己构建东西。
以下是七个层次,可以帮助你更深入地学习几乎任何技术。
1. 从真实任务开始
你完成了一小时的教程,做了笔记;现在不要试图学习一切。
从你真正想构建的东西开始。从小处着手,但这会帮助你更容易地理解事物。
例如,如果你正在学习Docker,不要花几天时间记忆Docker命令。构建一个小应用程序并尝试在容器中运行它。
你会自然地遇到问题:
- 我如何创建镜像?
- 什么是容器?
- 我如何暴露端口?
- 我的文件应该放在哪里?
- 我如何传递环境变量?
现在每个概念都有其存在的原因。
真实任务给你的学习一个目标。从小处着手。一个简单的项目就足够了。
2. 建立心理地图
一旦你对这项技术有了一些了解,停下来理解各个部分如何连接。
你不需要知道每一个细节;相反,你需要一个基本的地图。
例如,当你学习一个Web框架时,你的心理地图可能看起来像这样:
现在,当你看到一个新功能时,你就有了放置它的地方。
这比记住孤立的命令要好得多。
问问自己:
- 主要部分是什么?
- 每个部分做什么?
- 它们如何通信?
- 从开始到结束发生了什么?
- 这个新概念适合放在哪里?
心理地图使文档更容易理解,因为新信息有了去处。
3. 不看教程构建
这是你发现自己是否真正学到东西的时候。
关闭教程,打开一个空白项目;尝试自己构建相同类型的东西。
你可能会忘记命令;别担心,这是正常的。
在需要时搜索特定信息。阅读文档。尝试不同的方法。
重要的是你在做决定。
例如,在学习REST API后,尝试在不复制教程的情况下创建一个小API。
创建:
GET /users
POST /users
GET /users/:id
DELETE /users/:id
如果你能在偶尔的帮助下构建它,你的理解正在变得更加强大。
4. 尝试破坏它
我向你挑战:这是学习任何事物最强大的方法之一。
不要只是构建。尝试破坏你构建的东西。
当某样东西失败时,你会了解它是如何工作的。因为构建一个能工作的东西只是工作的一半;理解它为什么失败才是关键。
现在尝试通过给它错误的输入、移除必需的值来让它失败。
使用错误的数据类型、发送太多请求、停止必需的服务。
删除一个配置值。看看会发生什么。
例如,假设你构建了一个登录系统。
尝试:
错误密码
空电子邮件
无效电子邮件
缺失令牌
过期令牌
未知用户
你开始学习教程通常教得不好的东西:技术在意外条件下的行为。
这也是你发现其局限性的地方。
当你不仅知道什么使技术工作,还知道什么使它失败时,技术就变得容易理解得多。
5. 不猜测地调试
这是最重要的层次之一。
当某样东西坏了时,不要随意更改东西直到它工作。
相反,找到证据。
假设你的应用程序返回:
500 Internal Server Error
不要立即更改五个文件。
问:
- 到底什么失败了?
- 在哪里失败的?
- 错误消息说什么?
- 错误发生前应用程序在做什么?
- 我能重现这个问题吗?
- 最近有什么变化?
然后一次测试一种可能性。
例如:
好的调试不是猜测得更快。
它是关于缩小问题范围直到原因变得清晰。
如果你能解释为什么某样东西失败了,你学到的东西比简单修复它的人要多得多。
6. 与替代方案比较
不要孤立地学习技术。
一旦你理解了基础,将其与其他解决方案进行比较。
如果你正在学习Docker,将其与直接在机器上运行应用程序进行比较。
如果你正在学习PostgreSQL,将其与MongoDB进行比较。
如果你正在学习React,将其方法与其他前端框架进行比较。
例如,你可能会了解到关系数据库在应用程序数据之间有强关系且需要事务时很有用。
这比简单地知道SQL语法更有用。
比较帮助你理解为什么技术存在。
7. 决定何时使用它
你也遇到过这种情况吗?
当我开始学习时,我经常和朋友及前辈讨论我学到的一切。他们的下一个问题通常是:"如果XYZ坏了怎么办?你怎么修复它?"
那时我会一片空白,因为我只了解技术——我并不真正知道如何使用或修复它。
但如果有人今天问我同样的问题,我可以更有信心地回答。
因为现在,我不仅了解这项技术。我知道何时使用它,以及当事情出错时如何修复它。
这是更高层次的理解。
想象一下你已经学习了Docker、Kubernetes和无服务器平台。
了解每个平台如何工作是有用的。
但真正的工程决策需要其他东西。
你需要决定:
哪一个适合这个问题?
对于一个小型个人应用程序,简单的部署可能就足够了。
对于有许多服务的更大系统,容器和编排可能更有意义。
对于需要自动扩展的短期工作负载,无服务器可能更合适。答案取决于问题。
在这个层次上,你不再是收集技术。你在学习做出技术决策。
8、这些层次相互构建
你可以这样思考这七个层次:
早期的层次帮助你使用一项技术。
后期的层次帮助你理解它。
这就是为什么完成课程并不一定意味着你已经学会了某项技术。
真正的考验是当教程消失时会发生什么。
如果你觉得这篇文章有用,请考虑在Medium上关注我。我经常用真实的例子和初学者友好的解释来写关于Linux、Docker、Kubernetes、DevOps、AI、云计算和其他基础设施主题的文章。
如果你有任何问题、建议,或者希望我接下来涵盖的主题,请随时发表评论。我会阅读每一条回复并感谢你的反馈。
原文链接: The 7 Levels of Learning a New Technology
汇智网翻译整理,转载需注明出处。