我如何在非结构化环境中有效地了解感兴趣的主题?
为什么要独立学习?
我的背景是计算机科学和技术,曾在硅谷的多家新兴公司工作。 在那之前,我是神经科学实验室的研究助理。
在过去的一年中,我开始更加认真地研究自己的兴趣以及追求兴趣的原因。 在过去的五年中,我一直沉浸在技术创业文化中,并且越来越多地出于外部动机而不是经过深思熟虑地进行活动。
有时,感觉像是在我获得报酬完成的工作与激起我自然好奇心的活动之间的鸿沟越来越大。 我希望他们是一样的。 这项练习基于以缩小差距的方式重新调整我的兴趣的想法。
尽管组织学习方式的自由令人满足,但如果没有责任心,仍然很难驾驭。 当生活成为障碍时,让自己的学习目标掉在一边很容易。 考虑到这些潜在的陷阱,我创建了一个框架来最大化我的时间并让自己负责。
这将是有关如何使用学习框架的系列文章中的第一篇。


冲刺概述
我集思广益,深入探讨了以下主题:神经科学,风险投资,人工智能,写作和媒体行业,开源软件,公民创新,中国技术,旅游,加密货币和区块链。
我将领域缩小为五个主题:开源软件,人工智能,中国技术,加密货币和区块链以及公民创新。 我删除了我不认为自己可能在不久的将来做出更大承诺的四个方面。 我们的目标是在两周之内尽可能多地学习我的知识,同时完成一个可选的迷你交付品。 之后,我将能够以所学知识为基础,并朝着引人注目的道路迈出下一步。
在软件产品开发中,通常使用sprint来快速开发功能。 这是一个有时间限制的工作,首先要进行计划以识别要完成的工作,每天进行检入,最后要进行检查以达到功能或产品完成的目的。 这个概念是我如何学习这些主题并记录所学知识的灵感。
对于每个主题,我写下了以下内容:
- 为什么主题让我感兴趣
- 什么是关键组织
- 与谁联系或了解更多信息
- 要回答什么问题
- 如有需要,完成哪些交付项目
- 如何度过我的几周
在概述了冲刺之后,我接下来的两个星期执行了任务,以便能够回答我所解决的关键领域。
冲刺的例子
为了详细说明此过程,我提供了关于开源软件的第一个冲刺示例。
作为软件工程师,我感到有义务学习更多信息并为开源软件做出贡献,因为它对数字基础架构和我的许多项目至关重要。 我之前从未参与过任何开源项目,所以我不确定从哪里开始。
当我以前的公司Stripe主持开放源码务虚会时,我认识了一些被选中在办公室从事自己的开源项目的人。 这些受赠人参与了多个项目,从发展中国家的医疗保健交付平台OpenMRS到React的可配置组件库Belle。
通过回顾与他们的对话,我开始思考如何处理这种冲刺。 我决定将其进行为期一周而不是两周的冲刺,因为我的目标是简单地为一个项目做贡献。
第一步是概述有关开源软件的关键问题。
- 围绕开源的大型组织和会议有哪些?
- Github上的开源项目有哪些流程/管道?
- 如何开始进行开源开发?
- 开源开发的主要项目类别是什么?
- 免费开源软件的概念是如何引入而不是尝试收费的?
- 当前最大的开源项目是什么?
这些是基于我过去几年接触过的最重要的问题。 我希望能够在冲刺结束时回答他们。
接下来,我列出了一些初学者,以了解更多信息。 我通过一些初步研究了解了它们,并随着一周的进行将其添加到列表中。 我的朋友布莱克(Blake)是一位多产的开源开发人员,他也提供了整个星期的指导。
冲刺期间的指南:
- 布莱克(朋友)
遇到或与以下对象进行过对话:
- Xavier(OpenCollective的创始人)
- 帕斯卡(OpenMRS)
个人可了解更多信息:
- 纳迪亚·埃格巴尔(Nadia Eghbal)(在Github上撰写了开源论文)
- Ethan Zuckerman(麻省理工学院公民媒体中心)
- Eric Holscher(Read the Docs的创建者,该文档包含软件文档)
- Andrey Petrov(流行的Python库urllib3的创建者)
- Sayan Chowdhury(入门指南)
- [其他主要的开源贡献者]
我还创建了一个我遇到的关键组织的初始列表。 我并没有最终对所有这些组织进行广泛的研究,但是在我的脑海里藏着它们是一件很不错的事情。
- Linux Foundation的核心基础架构计划
- Mozilla的开源支持(MOSS)程序
- OpenSSL软件基金会(OSF)
- 开源计划
- 开放集体
- 互联网工程任务组
- 万维网联盟
- RubyGems(托管各种Ruby库)
- Ruby Together(旨在帮助支付Ruby基础结构的维护和开发费用的组织)
- 赏金来源(通过金钱奖励找到和发布赏金)
- 红帽(向使用Linux的企业提供服务的开源业务模型)
- Salt(Bountysource的一个平台,专门用于对开源项目进行众筹)
- Patreon和Gratipay(少量的经常性收入)
- 软件自由保护
- Apache软件基金会
最后,我写下了要在最后完成的可交付成果。
- 向开源项目贡献代码
- 写下我所学到的东西
在最初的几天里,我阅读了很多内容,并利用为帮助查找信息而创建的列表进行了阅读。 这与关于OpenCollective,一般的开放源代码社区以及成为开放源代码开发人员的感觉的讨论密不可分。
一些阅读材料,文章和出版物:
- 道路和桥梁:Nadia Eghbal的数字基础设施背后看不见的工作
- 什么是开源? 通过opensource.com和RedHat
- 什么是开源软件,为什么重要? 通过How-to-Geek
在提供有关该领域及其历史的大体概况时,我发现《 道路与桥梁》论文特别有见地。
技术部分包括在Blake的拉取请求中给他遮盖,并让他向我展示Github在不同项目中的应用。 根据OSS Watch的说法,拉取请求是“向开放的开发项目提交文稿的一种方法……当开发人员要求提交承诺要包含在项目主体[代码主体]中的更改时,就会发生拉取请求。”
与布雷克(Blake)等人讨论有关Github管道上的开源,阅读的论文,开源社区,会议,开源状态:
- 第1部分。Github管道
- 第2部分。隐藏请求请求(PR)和共享资源
技术资源和问题/项目列表链接:
- 如何在Github上为开源项目做贡献(肯特·多德(Kent Dodd)的Egghead视频系列)
- 代码分类(可以收到每日未解决的电子邮件以进行修复)
- 首要贡献(指导您完成贡献的教程)
- 非常适合新贡献者(针对初学者友好项目的Github列表)
- 如何在Github上赢得朋友并发出拉取请求(拉取请求指南)
我的贡献和项目:
- Numenta Nupic。 分层时间记忆(HTM)的实现,这是一种基于新皮层神经科学的智力理论
- CodeBuddies。 社区组织的视频群聊以学习编程-使用MeteorJS构建
我发现Egghead系列是对我学习项目贡献过程最有影响力的在线资源。
尽管那里有很多资源,但我发现其中一些资源没有得到持续更新。 经过大量的筛选和浏览Github的网站,才发现一个开放的问题,我觉得我可以相对迅速地解决。 此外,标记未解决问题的标准在各个项目中并不一致-有些标准比其他“初学者”更难解决时,被称为“初学者”。 不过,到了一周结束时,我能够通过参与两个项目来实现自己的目标。
我在这里写了一些关于开源的进一步学习。
关于整体流程和改进的思考
该框架的结构为我的日常学习奠定了坚实的基础。 我可以参考它以查看应该阅读的内容和已经学到的内容。 此外,我现在有一些小成就可以证明其中一些冲刺的结果。
在完善流程方面,重要的是尽早确定优先级。 我会在头几天通读大量的信息。 我需要学习何时停止阅读,因为我可能还需要整整一两周的时间阅读而不是学习。 重要的是要了解到冲刺结束一两天后要完成哪些特定的交付物。
此外,如果可能的话,为冲刺找到一个“指南”非常有帮助。 如上所述,我的朋友布莱克(Blake)帮助指导了我的开源冲刺。 如果他不在那里迅速回答我的一些问题,我的进步将会大大减慢。
尽管在冲刺期间与多个人进行对话可能会很有用,但我发现这没有必要,因为时间很短。 一旦我在该领域有了更多基础,并且可以谈论我所学到的知识,这些对话将变得更加有用。
最后,在冲刺之间留出一定的缓冲时间以反映和重新评估而不是立即跳入另一个冲刺是有帮助的。 可能会出现意料之外的机会或新的方向,因此灵活选择下一步要完成的工作非常重要。
这种类型的快节奏学习对于初步了解似乎难以解决的主题很有用。 冲刺是一个微型实验,旨在朝这个方向迈出更大的一步。 这是一个“便宜的测试”,以找出您是否可以自己做更多的事情,这可能意味着您需要做更大的项目,计划,学习等等。 相反,它总是经过很少的步骤,而且我发现sprints框架帮助我阐明了我的一些兴趣。