OSSへのコントリビュートは業界への貢献であり、また個人の挑戦にもなるためオススメです。
実益もあり、よく言われるものとしては以下のようなものがあります。
- 他人のコードを読むことで、自身の引出しにない設計・実装に触れられ、技術力が向上する。
- 個人の技術力を示す実績としてアピールできる
私は一時期よくOSSへのコントリビュートをしていました。その時これらのメリットを感じつつも、別の大きなメリットも体感しました。
それは『プロジェクト・コードのコンテキストを読む力』、そして『理解しやすいコンテキストを作る志向性』が身についたことです。これらの力についてはあまり語られることはありませんが、個人的には”技術力”の要素の中でも重要な要素だと感じています。
今日はOSSコントリビュートでそれらスキルが身につく背景について説明します。
==================
『コンテキストを読む力』は『空気を読む力』とも言いかえられます。
OSSは国も文化も全く違う人間が集まって作っているものです。またコントリビュータになりたい人とOSSの作者とでは、そのプロジェクトの対象領域に対する前提知識の深さが大きく異なります。
さらにOSSでは普段の業務と違い、気軽に対面で質問することはできません。大抵はPR・Issueベースでの質問になり回答に数日かかるか、あるいはチャットがあったとしてもOSS作者は忙しいので満足な回答はすぐには来ないでしょう。
そんな何もかもの前提が普段のプロジェクトとは違う中、空気を読みつつ適切なコード修正を行う必要があるのがOSSコントリビュートです。
色々な人がコントリビュートしているようなプロジェクトでは、そういったコントリビュータと作者との前提の違いを埋めるため様々な工夫がなされています。ソフトウェアの動作についてのドキュメントの用意、コントリビュータ向けにコントリビュート指針を文章として公開、分割されたモジュール、テスタブルな設計、適切な粒度のコードコメントなど、工夫は様々です。
こういった属人性を排除するための工夫が、OSSでは普段業務で作るソフトウェア以上に強く意識されているでしょう。なぜなら属人性が高いOSSはコントリビュータが集まらないからです。
私は色々なOSSにコントリビュートしていたおかげで、自然とコンテキストを読む力がつきました。おかげで初めて読むコードベースを抵抗なく読めるようになりました。こういったスキルは自分が利用しているライブラリを深く理解できたり、新しく参加したプロジェクトにおいて早期に活躍できることにつながります。これらのスキルは自身が今いる職場ではひょっとすると役に立たないかもしれませんが、「どこででも誰とでも働けるスキル」という意味で、社外に出ても通用するスキルになります。
またコンテキストを読みやすくする様々な工夫に触れることで、普段の業務でもコンテキストの読みやすさに対して敏感になりました。新しくチームに入った人がすぐにコントリビュート(活躍)しやすいようなコード・ドキュメントはどういうものだろうという思考が強く働くようになりました。
また属人性の排除は、他人に対してだけではなく未来の自分にも有益なので(人間は数ヶ月経つと忘れる生き物なので)、コンテキストを読みやすくすることはチームのみならず自分自身の生産性の向上につながります。そのためコードのみならずあらゆるものをキレイに整理するメンタリティが身につきました(以下記事でも少し紹介しています)。
==================
以上、OSSのにコントリビュートしたことで身についた力についての記事でした。
まぁ何が言いたいかというと、OSSコントリビュートにチャレンジしたことない人は、チャレンジオススメです!!!