クリアコードはプログラミングが好きな人を1名募集していますが、採用にあたって、新しく「パッチ採用」という選考プロセスを用いることにしました。
これまでは、面接と社長とのペアプログラミングで選考していましたが、この選考プロセスではクリアコードも応募者もお互いに十分に判断できる情報を得られませんでした。そのため、新しく「パッチ採用」という選考プロセスを考えました。「パッチ採用」はクリアコードがフリーソフトウェアの開発で学んだことを選考プロセスにも活かせないかということから考えられたクリアコードらしい選考プロセスです。「パッチ採用」の説明は採用情報ページにありますが、現時点のものを転載します。「パッチ情報」は今後も改良していく予定なので最新情報は採用情報ページで確認してください。
それでは「パッチ採用」の説明です。
パッチ採用
クリアコードはフリーソフトウェアを活用してソフトウェアを開発しています。
私達クリアコードのメンバーが業務でも使っている開発スタイルはフリーソフトウェアの開発の中で学んできたことです。私達はこの開発スタイルでお客さんの問題を解決するソフトウェアを開発しています。
私達は、クリアコードの開発スタイルを優れたものだと考えており、新しく一緒にソフトウェアを開発する人とも同じ開発スタイルで開発したいと考えています。しかし、これまで行なってきた面接とペアプログラミングによる選考プロセスでは、クリアコードの開発スタイルにあうかどうかを判断することが困難だとわかりました。ここの「判断する」は、私達だけが判断するという意味ではなく、私達と応募者がそれぞれ判断するという意味です。判断することが難しい理由は後述します。
そのため、私達も応募者もクリアコードの開発スタイルで一緒にソフトウェアを開発していけるかどうかを判断できる選考プロセスを考えました。それが「パッチ採用」と呼んでいる選考プロセスです。
注意
選考プロセスを説明する前にあらかじめ注意点に触れておきます。この選考プロセスでは、応募者は従来の就職活動とは違う活動をする必要があります。例えば、面接対策よりもよいコードを書くことや他の開発者との円滑なやりとりに注力する必要があります。これは応募者にとって大きな負担となる可能性があります。
応募する際は本当に就職候補の会社としてクリアコードを検討してもよいのかを十分に考慮してください。
選考プロセス
パッチ採用は以下のような選考プロセスです。
-
応募者: プログラミングが好きであることを再度自分で確認する。
-
応募者: 会社説明会に応募する。
-
クリアコード: 応募者に会社説明をする。
-
応募者: クリアコードに興味があれば、クリアコードのメンバーがコミット権を持っているフリーソフトウェアの開発に参加する。具体的には、パッチを送り、パッチに関してやりとりをする。
-
応募者: 開発に参加した結果、「自分は応募資格(後述)を満たした」と判断する。
-
応募者: クリアコードに応募する。
-
クリアコード: 応募者と面接し、一緒にフリーソフトウェアを開発した経験から、業務でも一緒に楽しく開発していけそうかを話し合う。
-
クリアコード: クリアコードが一緒に楽しく開発できそうだと判断したら応募者に処遇を提示する。
-
応募者: 提示された処遇でクリアコードで一緒に楽しく開発できそうだと判断したら就職する。
「パッチ採用」の名前は、開発に参加するところでパッチを送ることに由来しています。
内定を検討する段階では、応募者が新卒かどうかや、学歴、前職などは重視しません。一緒に開発した経験を重視します。
「応募資格」は以下のいずれかです。
- クリアコードのメンバーからコミット権をもらっていること
- コミット権をもらっていなくても、クリアコードの開発スタイルを実践できていると自己判断していること
どちらのケースも、応募者がクリアコードの開発スタイルを実践できていると認められたかどうかが基準となります。前者はクリアコードのメンバーが認めたケースで、後者は応募者自身で認めたケースです。どちらが認めたケースでも応募可能です。ただし、応募資格を満たしたとしても必ずしも就職できるとは限らないことに注意してください。クリアコードが就職しない方がよいと判断する場合もありますし、応募者が判断する場合もあります。
なお、選考プロセス中で開発した成果はクリアコードに就職するかしないかに関わらず自由に利用可能です。これは開発対象のソフトウェアがフリーソフトウェアだからです。
パッチ採用で開発スタイル全体を確認できるか
パッチ採用は、これまでの選考プロセスでは判断することが難しかった「お互いに開発スタイルを確認する」を実現することが目的です。本当に確認できるのかを検討してみましょう。
これまでの選考プロセスでは社長と応募者でペアプログラミングをしていました。ペアプログラミングの題材はクリアコードが開発に関わっているフリーソフトウェアの中から、クリアコードのメンバーと応募者で相談して選んでいました。ペアプログラミングをすることにより、クリアコード側は「この人はよいコードを書ける人だ」ということがわかります。このことから、「もっと大きな問題でもよいコードを書けるだろう」ということなどを想像できるようになります。しかし、これは開発スタイルの一部しか確認できておらず、他の開発スタイルは想像することになります。応募者は、クリアコードのメンバーが書いたコードを題材にするため、クリアコードのメンバーがどのようなコードを書いていたかがわかります。しかし、どのように開発しているかまではわかりません。
例えば、開発中に使用しているソフトウェアの問題を発見した場合は、そのソフトウェアへ問題を報告し、可能ならパッチを添えるのがクリアコードの開発スタイルです。問題を発見しても、手元で適当に回避しておいて問題を報告しない人とは一緒に開発できません。応募者が入社後に「こんなに徹底していると思わなかった」となるようでは応募する側がちゃんと確認できていなかったといえます。
このように、開発スタイルの一部しか確認できないため、開発スタイルを理解した上でお互いが判断する、ということができません。
一方、フリーソフトウェアを一緒に開発する場合は、開発の一部分を切り取ってペアプログラミングする場合とは違って開発そのものになります。そのため、一部から全体を想像する必要はありません。また、応募者がコードを書くだけではなく、クリアコードのメンバーもコードを書きます。そのため、クリアコードのメンバーが応募者のコードを確認するだけではなく、応募者もクリアコードのメンバーがちゃんとしたコードを書くのかどうかを確認できます。
これにより開発スタイル全体をお互いに確認できるため、適切な判断ができるようになると考えています。
パッチ採用をしたい理由
クリアコードはフリーソフトウェアの開発を大事にしている会社です。そのため、選考プロセスにもフリーソフトウェアの開発に由来する方法を持ち込めないかと考えました。なぜなら、その方法がクリアコードにとって自然だからです。
そう考えたとき、クリアコードのメンバーはパッチをやりとりするなど一緒に開発することで相手のことをわかっていくことを思い出しました。クリアコードで必要としている選考プロセスは相手のことをわかって一緒に開発していきたいかを確認するプロセスです。であれば、一緒に開発する方法を使うことがクリアコードにとって自然でとても大事なことではないかと考えたわけです。そして、フリーソフトウェアの開発では「コミット権」をもらうことが1つの信頼の目安になります。そこで、それを応募条件としました。
参考までに、フリーソフトウェアの開発で「コミット権」とはどういうものかを説明します。
フリーソフトウェアの開発では、その開発コミュニティ内で信頼されると「コミット権」という権利をもらえます。これはソースコードを自分で直接変更してもよいという権利です。フリーソフトウェアではソースコードはとても大事なものなので、これを直接変更してもよいということは、信頼の証となります。
通常、コミット権をもらえるくらい信頼されるには以下のようなプロセスになります。
-
問題を修正するパッチや機能を改良するパッチを送る
-
パッチやパッチが扱う領域について開発者とやりとりをする
-
↑を何度も繰り返す
開発者はパッチ提供者のコードやパッチ提供者のやりとりの中から、「この人はよいコードを書く人だな」、「この人とはコミュニケーションがとりやすいな」などといったことを感じ取っていき、「この人と一緒に開発したい」と思うと「コミット権いりませんか?」と声をかけます。パッチ提供者もこのやりとりの中で「この開発者とはコミュニケーションがとりやすいな」などといったことを感じ取っています。その上で「この開発者と一緒に開発したい」と思えばコミット権を受け取り、より積極的に開発に参加します。
このプロセスの中で、開発者もパッチ提供者もお互いに一緒に開発していけそうかどうかを判断していました。クリアコードでも同じように一緒に開発していけそうかどうかを判断したいと考えています。
まとめ
クリアコードの新しい選考プロセスとして考えた「パッチ採用」について紹介しました。このクリアコードらしい選考プロセスでクリアコードも応募者も納得できる選考ができると期待しています。