ACM(美国计算机协会)的旗舰杂志《Communications of the ACM(CACM)》最近刊发了一篇跟「开源」有关的文章,题目是“为什么计算机专业学生应该向开源项目贡献代码?”
此文的作者是一名软件工程教授,他认为,在 21 世纪,编程能力本身既不能代表市场对计算机专业毕业生的技能要求,也不能提供像过去那样被认可的职业资格。因此,他建议计算机专业的学生通过他们的课程活动为开源软件项目贡献代码,并表示自己已经在软件工程课程中实践这种方法超过 15 年。
文章指出,软件工程的最佳实践与大型成功的开源项目所遵循的实践已经趋同。企业已经吸收并贡献了许多开源开发实践。这使得相应的知识和技能在开源项目和企业项目之间具有可移植性。通过对开源项目的贡献,学生在实践中获得了一系列有实际意义的技能、知识和经验,使他们能够成为现代全面发展的开发者,而不是像好莱坞所描绘的“独狼式”程序员。最重要的是获得传统编程教育无法提供的社交和组织技能。
- 培养对项目的背景意识:了解开发工作如何嵌入到项目的范围、任务、共同开发者者团队和新的领导形式中
- 与项目的全球多元化社区互动
- 协商功能要求、需求和实现方案的选择
- 处理沟通问题,例如无人响应,这在由志愿者运营的开源项目中很常见
- 通过分类 issue 和制定发布计划等实践将软件视为产品
- 接收、讨论和处理代码审查意见
对于学生如何选择要贡献的开源项目,教授总结了如下的建议:
- 选择有多个活跃贡献者的项目,这样就会有一个社区来指导并回答你的问题。
- 选择一个相对流行的项目(如 GitHub 上 star 数较高的项目),确认它提供了有用的功能并且以相对合理的方式进行开发(避免上传到 GitHub 的废弃论文项目)。
- 避免选择非常受欢迎的项目,这样你的贡献就不会被淹没在竞争、噪音和官僚主义中(尽管如此,但还是会有特例,有的学生也在为非常流行的开源项目贡献代码,例如 Tensorflow 和 Visual Studio Code)
- 确认是否可以在自己的计算机上构建和运行该项目。
- 确保该项目定期接受来自外部的 PR,这样你贡献的代码才有机会被合并。
- 尝试提供一个微不足道的修复作为热身练习,以作为测试遵循项目工作流程能力的一种方式。
- 查找标记为 "Good first issue" 的项目 issue,这表明该项目对新手贡献者是开放的。
暂无回复。