如何快速学习复杂的东西:指南

2021-04-09 00:00:36

在我20多年的软件工程师中,我经常被要求或预计学习复杂的东西。在他的书中深入工作时,在谈论知识经济时,作者纽波特写道,“如果你无法学习,你不能茁壮成长。”启动了新的语言和平台,项目获得新的要求,库和框架发布了新版本的软件,唯一的常量是更改。最近开始新角色的朋友问“有任何提示来帮助我快速了解这个新的景观吗?”当我送他一些非常艰难的想法时,他说他们是“金”,并鼓励我向世界发布他们看看⁠-我希望其他人能找到他们甚至有点有用。

免责声明⁠-我是一个广度第一,体验学习者。我尝试的东西,当它不起作用时,我尝试别的东西,一旦它的工作就会进入下一步。“这有助于我创建一个更清晰的心理模型,每次迭代都会创建一个更清晰的心理模型。这对我有用,但我认识到有很多学习风格,它可能无法为您批发工作。

休息一下你想要学习用案例的东西。从咬得大小的块开始,需要几分钟,并逐步构建它们。 “学习Python”太广泛了。安装Python,打印Hello World,安装和使用依赖关系,从文件中读取等更明确,并且更容易知道您完成后,因此有助于加强进度。

考虑您需要学习每个人的需求。铲斗进入"需要了解更多"和#34;跳过现在的细节"可以有用。例如,我不知道Python依赖管理如何工作,但我可以依靠它工作并在没有这种知识的情况下取得进展。

首先尝试的东西。你可能会害怕你会搞砸一些东西,但在我的经验中,电脑很难打破。使用您已经必须猜出的精神模型。如果没有,那么您可以响应错误消息。

休息一下。如果你在凹槽和巡航,一定是⁠ - 保持在流动。但是,如果你发现你会失去蒸汽,侧身或翻新老地面,请给你的大脑休息一下。如果您以小增量定义了您的目标,则应该能够走开感觉,就像您取得一些进展,并为您的大脑时间处理您所学到的内容。

得到主人。如果您正在使用已发布文档的内容,请阅读介绍,每个部分/章节的第一个和最后一段,以及每个段落的第一个句子以及任何提供的代码样本。如果您发现自己困惑,请备份一点并根据需要进行更深。

注意到了标注。标注和提示可能真的很有帮助。他们经常在斑点中提供,易于犯错误。

创建“阅读稍后”列表。我经常发现自己对系统的相关部分有效的好奇,但除非我需要知道要完成我专注的用例,否则我推迟了。我在我的Todo应用程序中保留一张阅读列表,但那里有很多解决方案。

使用'入门'指南。这是我对“只是撇去它”规则的例外。入门指南通常旨在刚刚开始学习旅程的人,旨在为您提供足够的信息来完成单一用例。不要浏览它们⁠-阅读整个事情并随着所提供的例子而遵循。检查GitHub用于样板项目。

不仅仅是文档。视频,播客和LivestReams可以是传达信息的有价值的方法,如果存在。用不同的媒体进行实验,并找到适合您的工作。按照2x速度观看/聆听您的方式,但为有趣的部分慢下来。

所以你可以相信你的本能并刚开始,但你立即遇到了一个障碍。也许它是未找到的命令,nullpointerexception或网页上的404。您如何从系统中获取更多信息?

CLI帮助。大多数命令行接口(CLIS)将返回一些内容以获取帮助, - help或-h。可能有关于参数的线索及其可能有用的顺序。

进入日志。大多数系统将在控制台上的标准输出或磁盘上的某处来记录一些输出。阅读日志可能就像阅读系统正在尝试的故事。

曲柄渐变。如果您读取了日志,并且不确定在侧面的情况下,请尝试增加输出/日志的详细程度。您通常可以找到有用的线索和新领域来调查,这将有助于让您更接近问题。

搜索错误消息。其他人可能遇到同一问题,您可能会在Q&amp上找到一个领域;一个网站,如堆栈溢出,讨论或支持论坛,或在Github中打开问题。确保您引用错误消息,然后尝试删除特定于您的用例的零件更常见。

阅读源代码。如果您可以访问系统的源代码,请阅读它可以帮助您了解系统如何对待您的用例。不要试图了解每一行,但使用类和方法名称作为系统名词和动词的信号。对于没有良好日志记录,文档或帮助的内部工具,这可能是唯一的选项。不确定代码是否是开源?尝试在您的语言包管理器(NPMJS.ORG for Node.js,Python等)中搜索库中的库或在您最喜欢的搜索引擎中尝试“Github {编程语言} {package name}”。

提示:给自己一个时刻箱,以避免将您的调查转化为永无止境的剥皮游览。随着系统获得舒适度,降低了时箱的大小。如果你是全新的东西,请给自己几个小时。如果您已经在系统中生活了几个月,请拨打到15分钟。

您的作业首先 - 机会是否有人遇到过这个问题,特别是如果您是全新的问题。在寻找答案时,以下所有内容都是您的良好资源:通过记录问题和一些相关上下文,使其他人能够轻松帮助。总结并分享您所学的内容 - 对所有知识工作者来说都是一个很好的习惯

您在哪里花时间没有帮助您更接近您的目标?

您可以修复它们(内部或开源)或建议更改,以使未来的学习者更容易吗?

学习是一个迭代过程。 首先定义你的目标,并将它们分成咬合大小的块。 通过读取任何文件可用的任何内容,但不要试图在一口中摘要它们。 不要害怕尝试从系统中获取更多信息。 当你耗尽预算时,请求帮助,但非常清楚你要问的东西。 创建反馈循环,以改善您的学习过程和未来学习者的反馈措施。 有兴趣与团队合作,' s的投资和伴随着您的学习和增长吗? 查看我们的开放位置并申请。 在这里注册和我们' LL请您通过Hubspot的最新产品,UX和工程更新。 从Hubspot产品博客中返回最新的工程,UX和产品新闻,直接到您的收件箱。