新しい製品やサービスを開発し、世の中で使われること。エンジニアであれば一度は思い描く夢の一つではないでしょうか。一方で、こうした新規の取り組みはすぐに会社でやらせてもらえるものではなく、会社を辞めてまで行なうにはコストとリスクの負荷が比重かかってくるものとなります。また、多くのサービスは、新しいものを作ることを前提に生まれたものよりもサイドプロジェクトから生まれたものの方が多いです。今回は、jQueryの開発者であるジョン・レシグのブログを参考に、エンジニアが新しいプロダクトを生んでいくコツを紹介していきます。
サイドプロジェクトは続けるのが難しい
サイドプロジェクトとしてjQueryの開発をはじめたジョン・レシグは、非営利活動法人であるKhan Academyに勤務していて、忙殺されるあまりなかなかサイドプロジェクトに集中することができずにいました。
レシグが取り組んでいたサイドプロジェクトの進め方には幾つか問題がありました。たいていサイドプロジェクトを進めるのは、週末あるいは平日の夜です。この限られた時間しか使えないのは極めて非効率なことでした。毎回週末が空いているというわけでもないし、1日中プログラムを書き続けるというのも好ましいことではありませんでした。
「コードを書く」という行為にはかなりの時間を要してしまうことになります。ある一定の時間が取ることができなければ、プロジェクトを進めることはできません。一回の週末をミスしてしまえば、2週間何もしないなんてこともあり、コードを忘れてしまうことは容易く、これはプロジェクトにとって致命的なことに他なりません。
ジョン・レシグが定めた4つのルール
レシグはこのサイドプロジェクトが続かない問題に対して、幾つかのルールを設定することを決めました。
1.毎日コードを書くこと。必ず書いたコードを加えて、ブログやドキュメント投稿を行なうようにする。
2.書くコードは、”有効な”コードを書くこと。インデントの微調整や、コードの再フォーマットなどはコードを書くことには含まないことにする。
3.書くコードは深夜前までに書き上げなければならない。
4.書いたコードはオープンソースとして、Github上にコミットする。
ルールの中には必須でなく任意のものもありましたが、コードは深夜までに出す必要はなかったのですが、遅すぎる時間まで起きていることは生産性を下げるので、ルールに定めました。また、オープンソースと定めたことは他の人のことを考え作ることで、精度を上げていくことに注力しました。
GitHubを振り返ってみると、ほぼ毎日コミットしていることに成功しており、コードを日々書くことが日課になっていったのです。
ルールを定めて変わったプログラミング
実行可能な最小限のコード
1日に少なくとも30分以上はコードを書く必要がありました。前日にやっていたことを切り替えて、有用なコードを書くのは非常にしんどいことでした。週に数日(通常1時間以内)、週末は1日中働くようにしました。
コードの習慣化
まず、Githubにあげるにしても外見についてはあまり気にする必要はありません。あくまで自分のために自分がコードを書くように、習慣化していくことが大事です。
不安と戦うこと
「十分な」作業が完了せず、不完全な仕事が続いているようで不安を感じることがあります。しかし、この作業は何かを達成するのが目的ではなく「進める」ことが目的なのです!これに気づいてからは不安がどんどん解消されていきました。
週末の過ごし方
週末に家族との予定や、友人との約束を犠牲にして仕事を前のめりに突き進むことが必ずしも良いこととは限りません。サイドプロジェクトを続けるには人生の普通なことも拾っておく必要があります。
コードを考えていない時も考える
サイドプロジェクトを書いているのは楽しくなってくると、だんだん別のことをしているとバックグランド処理のようにサイドプロジェクトのことを考えるようになります。これが習慣化していくと、サイドプロジェクトをやらないというだけで不安に変わっていくのです。
スイッチが入りやすい
一週間に一度、週末だけコードを書いていると「サイドプロジェクトモード」に入るまで時間がかかります。しかし、毎日書いていることですぐにサイドプロジェクトへ頭を移行させることができるようになります。
ワークライフバランス
仕事とサイドプロジェクト、そしてプライベートなこと全てを欲張る必要があります。仕事が多いとわかっている時は、なるべく早めにサイドプロジェクトを終わらせたり、量を減らしたりするなど、いろいろとお互いの状況を考えながら作業を進めていくことが大切です。
周りの人たちにサイドプロジェクトがあることを伝える
外部にきちんとサイドプロジェクトの存在を伝えておくことは非常に大切なことです。例えば、パートナーに伝えておくと「映画を見に行った後はコーディングしなきゃいけないんだよね。」と理解してもらえるようになります。
気づいたら、レシグは数ヶ月間で信じられないほどコードを書いていました。あまりに多くのことを書きすぎていて何を自分が書いたかも忘れてしまうほどです。
新しく何かを始めるすべての人へ
何か新しいことを始めようと考えている人たちすべてに伝えたいことは、「この日から始めよう!」と意気込むのではなく、自分の習慣に取り入れられるくらい小さなことから始めて、それを必ず続けることと、続ける仕組み(ルール)を自分のなかで設けることになります。
サイドプロジェクトを始めるなら、フリーエンジニアになって時間を確保してみてはいかがでしょうか?
安定した仕事を得られるフリーエンジニアに興味がある方は「フリーエンジニアなび」に応募してみましょう。