opensource, engineer,

一分钟读论文:《玩转 GitHub 开源软件社区的必备技能树》

Unbug By Unbug Follow May 23, 2023 · 1 min read
一分钟读论文:《玩转 GitHub 开源软件社区的必备技能树》
Share this

你的 GitHub Repo 为什么攒不到🌟?华盛顿大学和微软研究院合著的论文《Understanding skills for OSS communities on GitHub》基于对455名 OSS 贡献者的在线调查数据进行分析,开发了一个 OSS 技能模型,包含 9 类 45 种技能:技术技能、工作风格、问题解决、贡献类型、项目特定技能、人际技能、外部关系、管理和特征。能指导 OSS 贡献者显著提高技能,同时发现与他人分享技能有很多好处,比如可用于招聘

技能模型

OSS 中的技能包括硬技能和软技能的组合。 技能的主要类别是技术技能、工作方式、解决问题、贡献类型、项目特定技能、人际交往能力、外部关系、管理和特征。

  • 技术技能(technical skills):包括编程语言、框架、工具、测试、调试、版本控制、持续集成/部署、安全性、性能优化等。
  • 工作风格(working styles):包括沟通、协作、反馈、学习、适应性、自我管理等。
  • 问题解决(problem solving):包括分析、创新、逻辑、批判性思维等。
  • 贡献类型(contribution types):包括代码贡献(如添加功能或修复错误)、文档贡献(如编写或更新文档)、报告错误或建议改进(如提交问题或请求)、审查代码或文档(如提供意见或批准更改)、参与讨论或社区活动(如回答问题或分享经验)等。
  • 项目特定技能(project-specific skills):包括项目背景知识(如项目的目标和历史)、项目规范知识(如项目的结构和风格)、项目工具知识(如项目使用的特定工具和平台)等。
  • 人际技能(interpersonal skills):包括礼貌和尊重他人的观点和经验,同理心和理解他人的需求和情感,信任和建立良好的关系,冲突管理和妥善处理分歧等。
  • 外部关系(external relations):包括推广和宣传OSS项目,协调和合作OSS项目之外的人或组织,寻找并利用外部资源,保护OSS项目的利益等。
  • 管理(management):包括决策和制定OSS项目的目标和计划,组织和分配OSS项目的任务和角色,监督和评估OSS项目的进度和质量,激励和培养OSS项目的贡献者等。
  • 特征(characteristics):包括热情和对OSS项目有兴趣和动力,自信和对自己有信心并敢于尝试新事物,耐心和对OSS项目有长期的承诺并能够忍受不确定性等。

提升技能

贡献者通过阅读博客、在社交媒体和会议上关注 OSS 人物、向同行学习以及为 OSS 项目做出贡献来提高技能。 技能的增长受到贡献者兴趣、OSS 团队的需求、可用资源和确定的改进领域的影响。 大多数贡献者都在积极采取措施提高他们的技能,并根据他们必须提供的技能加入项目。

OSS 贡献者有以下几种提高技能的动机和方式:

  • 学习新知识:OSS贡献者通过参与不同的项目和任务来学习新的技术、工具、框架、语言等。
  • 解决问题:OSS贡献者通过解决自己或他人遇到的问题来提高自己的技能,比如修复bug、优化性能、增加功能等。
  • 参与社区活动:OSS贡献者通过参与社区的各种活动来提高自己的技能,比如讨论、协作、评审、培训等。

OSS 贡献者是如何评估自己的技能水平和进步的:

  • 反馈:OSS贡献者通过收到其他人的反馈来评估自己的技能,比如代码审查、问题评论、合并请求等。
  • 成果:OSS贡献者通过观察自己的成果来评估自己的技能,比如完成任务、解决问题、提高质量等。
  • 比较:OSS贡献者通过与其他人或自己过去的水平进行比较来评估自己的技能,比如参考优秀代码、学习先进技术、回顾历史记录等。

OSS 贡献者提升技能遇到的几种挑战:

  • 时间:OSS贡献者往往缺乏足够的时间来提升自己的技能,因为他们需要平衡工作、生活和其他责任。
  • 资源:OSS贡献者往往缺乏合适的资源来提升自己的技能,比如文档、教程、指导等。
  • 信心:OSS贡献者往往缺乏信心来提升自己的技能,因为他们可能觉得自己不够好、不被欢迎或不被认可。

展示技能

贡献者展示他们的技能,维护者评估 GitHub 上的潜在贡献者。 贡献者分享技能以改善职业前景并展示专业知识。 贡献者发现技能可用于招聘、评估贡献、引导新人加入社区以及寻找专家。

OSS 贡献者有以下几种展示技能的方式:

  • 贡献:OSS贡献者通过参与不同类型和规模的项目来展示自己的技能,比如编写代码、修复错误、撰写文档等。
  • 交流:OSS贡献者通过与其他人沟通和协作来展示自己的技能,比如提问、回答、评论、建议等。
  • 展示:OSS贡献者通过使用可视化和元数据来展示自己的技能,比如徽章、标签、图表、简历等。