阅读时长 3 分钟

在 scikit-learn 做实习生的感受

我叫 Stefanie Senger,最近结束了一个为期五个月的导师制实习,该实习由 NumFocus 资助,作为一项小型开发补助金,重点关注开源项目的多样性。将补助金与导师制相结合的想法可以追溯到 Maren Westermann 的倡议。她设想了一条通过实习和支持将更多女性程序员融入 scikit-learn 的途径。scikit-learn 将从新的视角和一些颠覆中获益。正如 Maren 后来告诉我的那样,我是一个初始实验的“小白鼠”。

开始实习

作为一个从非技术背景转向编码的人,在 scikit-learn 上工作对我来说是一件大事。我曾参加过数据科学训练营并担任过讲师,一直在努力寻找该领域的第一份工作。我从未怀疑过自己能够随着时间的推移应对更困难的技术挑战,但我明白还有很多东西要学。scikit-learn 对我来说有一种浓厚的科技光环,当我发现实习广告时,我只是想:就是它了。不过,当我被选中担任这个职位时,我真的感到震惊。毕竟,还有很多经验丰富的人在寻找这样的机会。

当我更深入地了解我的两位导师 Adrin Jalali 和 Guillaume Lemaitre 时,我很快意识到,只需要付出努力,我可以在任何时候向他们提出任何问题。在 GitHub 上与其他人的互动中,我也感受到了社区的欢迎。

我的工作内容

我从编写文档和示例开始,例如“多类 AdaBoosted 决策树”,以使这些内容更全面,并对用户更有帮助。然后,我做了一些代码维护工作,这些工作是重复性的,这样我就可以从其他贡献者的拉取请求中了解该怎么做。Guillaume 发现一种 AdaBoost 算法需要弃用,而我负责执行这项工作。我从未见过如此庞大的代码库,它有如此多的抽象层,我不得不学习更多 Python 才能继续前进。我甚至有机会在欧洲科学 Python 大会 EuroSciPy 上举办“scikit-learn 入门”研讨会,该大会在巴塞尔举行,在那里我还认识了许多其他贡献者和来自 Inria 的 scikit-learn 团队成员。

Adrin 向我介绍了实现元数据路由新功能的挑战性任务,该功能由 scikit-learn 社区多年来开发。它允许用户在元估计器中设置元数据,例如样本权重,这些元数据可以路由到子估计器和其他能够使用它的算法。这在一定程度上是未知领域,意味着在没有预定义路径的情况下寻找解决方案,并调整测试以匹配预期行为。在我的实习最后两个月,我在一些元估计器中实现了元数据路由,这非常困难,但一旦完成,就增强了我的职业信心。

导师制在行动

让我描述一下导师制是如何运作的,因为 Guillaume 和 Adrin 的支持是无价的。当我有问题时,他们都会毫不犹豫地放下自己的工作,并立即给我指明方向。我每周与 Adrin 会面两次,我们会在工作时,我会向他提出问题。Guillaume 远程提供帮助,我知道当需要帮助时,他会立即与我进行视频通话。他们都优先审查我的 PR,我定期收到关于我工作的反馈。

拥有导师向我表明学习是正常的,并向我提出任务,这一点至关重要。如果我独自参与这个项目,我可能会犹豫是否要承担我最终完成的大部分问题,因为我担心自己的技能不足,会阻碍项目的进展,而不是帮助它。导师制环境给了我尝试一些我不确定自己是否能做到的东西的理由。

成为社区成员

展望未来,我将继续为 scikit-learn 做贡献。由于我已认识了许多其他贡献者,我现在感觉自己已成为社区的一部分。我知道他们关心我所共有的开放性和多样性等价值观,并且在承认代码库的复杂性的同时,我知道我可以从承担问题中学习什么,以及将我的解决方案合并到主分支时获得的成就感。而且我喜欢为有意义的事情做出贡献,这是我一直追求的目标。