クリアコードではプログラミングを楽しむソフトウェア開発者を1名募集しています。採用にあたって「パッチ採用」という選考プロセスを用います。
パッチ採用
クリアコードはフリーソフトウェアを活用してソフトウェアを開発しています。
私達クリアコードのメンバーが業務でも使っている開発スタイルはフリーソフトウェアの開発の中で学んできたことです。私達はこの開発スタイルでお客さんの問題を解決するソフトウェアを開発しています。
私達は、クリアコードの開発スタイルを優れたものだと考えており、新しく一緒にソフトウェアを開発する人とも同じ開発スタイルで開発したいと考えています。しかし、これまで行なってきた面接とペアプログラミングによる選考プロセスでは、クリアコードの開発スタイルにあうかどうかを判断することが困難だとわかりました。ここの「判断する」は、私達だけが判断するという意味ではなく、私達と応募者がそれぞれ判断するという意味です。判断することが難しい理由は後述します。
そのため、私達も応募者もクリアコードの開発スタイルで一緒にソフトウェアを開発していけるかどうかを判断できる選考プロセスを考えました。それが「パッチ採用」と呼んでいる選考プロセスです。
注意
選考プロセスを説明する前にあらかじめ注意点に触れておきます。この選考プロセスでは、応募者は従来の就職活動とは違う活動をする必要があります。例えば、面接対策よりもよいコードを書くことや他の開発者との円滑なやりとりに注力する必要があります。これは応募者にとって大きな負担となる可能性があります。
応募する際は本当に就職候補の会社としてクリアコードを検討してもよいのかを十分に考慮してください。
選考プロセス
パッチ採用は以下のような選考プロセスです。
- 応募者: プログラミングが楽しいことを再度自分で確認する。
- 応募者: 会社説明会に応募する。
- クリアコード: 応募者に会社説明をする。
- 応募者: クリアコードに興味があれば、クリアコードのメンバーがコミット権を持っているフリーソフトウェアの開発に参加する。具体的には、パッチを送り、パッチに関してやりとりをする。
- 応募者: 開発に参加した結果、「自分は応募資格(後述)を満たした」と判断する。
- 応募者: クリアコードに応募する。
- クリアコード: 応募者と面接し、一緒にフリーソフトウェアを開発した経験から、業務でも一緒に楽しく開発していけそうかを話し合う。
- クリアコード: クリアコードが一緒に楽しく開発できそうだと判断したら応募者に処遇を提示する。
- 応募者: 提示された処遇でクリアコードで一緒に楽しく開発できそうだと判断したら就職する。
「パッチ採用」の名前は、開発に参加するところでパッチを送ることに由来しています。
内定を検討する段階では、応募者が新卒かどうかや、学歴、前職などは重視しません。一緒に開発した経験を重視します。
「応募資格」は以下のいずれかです。
- クリアコードのメンバーからコミット権をもらっていること
- コミット権をもらっていなくても、クリアコードの開発スタイルを実践できていると自己判断していること
どちらのケースも、応募者がクリアコードの開発スタイルを実践できていると認められたかどうかが基準となります。前者はクリアコードのメンバーが認めたケースで、後者は応募者自身で認めたケースです。どちらが認めたケースでも応募可能です。ただし、応募資格を満たしたとしても必ずしも就職できるとは限らないことに注意してください。クリアコードが就職しない方がよいと判断する場合もありますし、応募者が判断する場合もあります。
なお、選考プロセス中で開発した成果はクリアコードに就職するかしないかに関わらず自由に利用可能です。これは開発対象のソフトウェアがフリーソフトウェアだからです。
パッチ採用で開発スタイル全体を確認できるか
パッチ採用は、これまでの選考プロセスでは判断することが難しかった「お互いに開発スタイルを確認する」を実現することが目的です。本当に確認できるのかを検討してみましょう。
これまでの選考プロセスでは社長と応募者でペアプログラミングをしていました。ペアプログラミングの題材はクリアコードが開発に関わっているフリーソフトウェアの中から、クリアコードのメンバーと応募者で相談して選んでいました。ペアプログラミングをすることにより、クリアコード側は「この人はよいコードを書ける人だ」ということがわかります。このことから、「もっと大きな問題でもよいコードを書けるだろう」ということなどを想像できるようになります。しかし、これは開発スタイルの一部しか確認できておらず、他の開発スタイルは想像することになります。応募者は、クリアコードのメンバーが書いたコードを題材にするため、クリアコードのメンバーがどのようなコードを書いていたかがわかります。しかし、どのように開発しているかまではわかりません。
例えば、開発中に使用しているソフトウェアの問題を発見した場合は、そのソフトウェアへ問題を報告し、可能ならパッチを添えるのがクリアコードの開発スタイルです。問題を発見しても、手元で適当に回避しておいて問題を報告しない人とは一緒に開発できません。応募者が入社後に「こんなに徹底していると思わなかった」となるようでは応募する側がちゃんと確認できていなかったといえます。
このように、開発スタイルの一部しか確認できないため、開発スタイルを理解した上でお互いが判断する、ということができません。
一方、フリーソフトウェアを一緒に開発する場合は、開発の一部分を切り取ってペアプログラミングする場合とは違って開発そのものになります。そのため、一部から全体を想像する必要はありません。また、応募者がコードを書くだけではなく、クリアコードのメンバーもコードを書きます。そのため、クリアコードのメンバーが応募者のコードを確認するだけではなく、応募者もクリアコードのメンバーがちゃんとしたコードを書くのかどうかを確認できます。
これにより開発スタイル全体をお互いに確認できるため、適切な判断ができるようになると考えています。
パッチ採用をしたい理由
クリアコードはフリーソフトウェアの開発を大事にしている会社です。そのため、選考プロセスにもフリーソフトウェアの開発に由来する方法を持ち込めないかと考えました。なぜなら、その方法がクリアコードにとって自然だからです。
そう考えたとき、クリアコードのメンバーはパッチをやりとりするなど一緒に開発することで相手のことをわかっていくことを思い出しました。クリアコードで必要としている選考プロセスは相手のことをわかって一緒に開発していきたいかを確認するプロセスです。であれば、一緒に開発する方法を使うことがクリアコードにとって自然でとても大事なことではないかと考えたわけです。そして、フリーソフトウェアの開発では「コミット権」をもらうことが1つの信頼の目安になります。そこで、それを応募条件としました。
参考までに、フリーソフトウェアの開発で「コミット権」とはどういうものかを説明します。
フリーソフトウェアの開発では、その開発コミュニティ内で信頼されると「コミット権」という権利をもらえます。これはソースコードを自分で直接変更してもよいという権利です。フリーソフトウェアではソースコードはとても大事なものなので、これを直接変更してもよいということは、信頼の証となります。
通常、コミット権をもらえるくらい信頼されるには以下のようなプロセスになります。
- 問題を修正するパッチや機能を改良するパッチを送る
- パッチやパッチが扱う領域について開発者とやりとりをする
- ↑を何度も繰り返す
開発者はパッチ提供者のコードやパッチ提供者のやりとりの中から、「この人はよいコードを書く人だな」、「この人とはコミュニケーションがとりやすいな」などといったことを感じ取っていき、「この人と一緒に開発したい」と思うと「コミット権いりませんか?」と声をかけます。パッチ提供者もこのやりとりの中で「この開発者とはコミュニケーションがとりやすいな」などといったことを感じ取っています。その上で「この開発者と一緒に開発したい」と思えばコミット権を受け取り、より積極的に開発に参加します。
このプロセスの中で、開発者もパッチ提供者もお互いに一緒に開発していけそうかどうかを判断していました。クリアコードでも同じように一緒に開発していけそうかどうかを判断したいと考えています。
募集要項
- 募集人数
- 1名
- 職種
- ソフトウェア開発者(正社員)
- 応募資格
-
- プログラミングが楽しいこと。
- クリアコードの開発スタイルを実践できること。詳細は「パッチ採用」の説明を参照。
※新卒、中途は問いません。
- 待遇
- 経験・能力などを考慮し優遇
- 勤務地
- 東京都文京区
- 福利厚生
-
- 各種社会保険完備
- 退職金制度
- 社宅制度
- 従業員持株制度
- 社内食事会(毎月肉の日)
- 社員旅行、開発合宿
応募方法
まずは会社説明会をお申し込みください。
申込みにあたっては以下のような内容のメールを須藤(kou@clear-code.com)に送信してください。
To: kou@clear-code.com Subject: 会社説明会参加希望 名前: ○○×× 備考: (希望日時などがあれば)
業務内容
クリアコードでは主にフリーソフトウェアを活用したソフトウェア開発を行っています。現在の主な業務は以下のとおりです。
- Webブラウザベースのデジタルサイネージシステムの開発。OSはLinuxで、ブラウザはWebKitをベースにしています。
- 全文検索エンジンgroongaおよび関連ソフトウェアの開発。
- groongaを使った検索システムの開発。
- Mozilla Firefox、Thunderbirdの企業導入、アドオン開発。
- milter managerおよびmilterの開発。
業務の特徴
開発では、有用な技術を幅広く活用することが多くあります。例えば、Ruby on RailsだけでRubyを活用するのではなく、手早く実用的なテストを開発するためにRubyを活用したり、アプリケーションにRubyを組み込んで柔軟性を実現したりします。流行の技術を追いかけるだけではなく、しっかりとした技術を身につけ、応用・活用したい方にはやりがいのある業務です。
また、クリアコードは成果をオープンにすることに積極的です。業務時間内に既存のフリーソフトウェアに開発成果をフィードバックしたり、業務で開発したソフトウェアをフリーソフトウェアとして公開することもあります。またブログでは業務を通じて得たノウハウなどを公開しています。