多くのプログラマーのプロジェクトはしばしば中途半端に終わってしまう。彼らにはたくさんの良いアイデアがあるが、その多くは空想に終わっている。ほとんどすべてのソフトウェア開発者には、未完のプロジェクトがたくさん入ったフォルダがあり、そのプログラムの中には、生まれた当初は本当に素晴らしいアイデアだったものも少なくない。彼らと同じように、私にも多くの良いアイデアがあり、中には今まさに一部の企業が使っているものもある。例えば、eBayで電子商取引をして利益を得るかAmazonで得るかを決めること、業務ベースのソーシャルネットワーク(配管業、電子業界、ソフトウェア開発など)を作ること、ビットコイン検索エンジン、Bootstrapに取って代わるCSSフレームワークの開発、Instagramから最も魅力のな人々を見つけ出すこと、リアルタイムアクセス統計エンジンの開発など、例を挙げればきりがない。ほとんどすべてのプロジェクトに着手したが、完成したものは一つもない。この話題を同僚や友人と話すと、彼らもまた同じだと言う。たくさんの良いアイデアが彼らのフォルダの中で頓挫している。なぜこうなるのか?

成功しているからこそモチベーションが不足する

まず、私たちの職業について話そう。うらやましくなるような高い雇用率を誇っている。事実を挙げると、全国の失業率は約6.7%であるのに対し、WEB開発者の失業率は1%にも満たない。また、私たちの給与水準も平均より高い。2012年にはソフトウェア開発者の平均年収はすでに9万ドルを超えていた。もちろん、今では十分に優秀であれば、この数字をはるかに超えることもできる。私について学んでいる初心者がエントリーレベルのプログラマーになるのを見ると、大きな個人的な達成感がある。そしてこの職業の報酬も彼らを十分に満足させている。初任給は4万5千ドルから7万ドルだ。

だからこそ、他の多くの人々、特に職場で何もせず、その日をやり過ごすだけの人や、給与が低いからといって転職を繰り返す人たちと比べると、ソフトウェア開発者は比較的成功している。ここで僭越ながら一つ概括させていただく。偶然の一致はご容赦願いたい。つまり、異業種からプログラマーになった人たちは、こうした人たちより比較的成功していると言える。そして、この成功による優越感が私たちの神経を麻痺させ、目標を達成するための動機を失わせているのだ。

知識の範囲が異なる

私たちは知識が広い。いくつかの都市間を旅行するのにどう便利かを、滔々と語ることができる。複雑な問題を小さなサブ問題に分解して一つずつ解決する方法を知っている。私たちは真の「世界通」だ。なぜなら、あらゆる言語で「Hello World」と言えるし、何千、何万もの計算が必要でも、再帰的方法を知っているので眉をひそめることもない。私たちは多くのことを知っているが、それは十分に多いのだろうか? 偉大な科学者アインシュタインはかつてこう言った。

浅学は人を誤らせるので危険であり、博学はうぬぼれを生むのでさらに危険である。

ニュートンは、ご存じのとおり、その時代で最も賢い人物の一人と称され、私たちから数百万キロメートル離れた天体の動きを正確に予測できた。彼は、巨人の肩の上に立つことでより遠くを見ることができたと言った。そして物理学は彼の唯一の関心ではなく、彼は微分積分学など貴重な知識の財産も私たちに残してくれた。それならば、彼は資本や市場の仕組みにも詳しいのだろうか?

1418612268741261

ははっ、それなら大間違いだ!1720年の南海泡沫事件のピーク時に、彼が投じた全財産は無に帰し、破産してしまった。彼は市場を理解していなかったので、どれだけ知識が深くても、彼の助けにはならなかった。彼の知識の領域は独立したもので、互いに関連がなかった――彼は物体の運動の法則を発見したが、その法則は投資家の心理をを握するのには全く役立たなかった。私たちも同じような状況だ。アルゴリズムの説明やデータ構造の研究には一日中時間を費やせるが、ユーザーが何を望んでいるかは分からない。Twitterが登場したばかりの頃、私はそれが一時の流行に過ぎないと当然のように思っていた。実際、私は間違っていた。問題を解決するとき、私たちは解決策が魅力のかどうかだけを追求しがちで、その問題に関わる世間一般の見方を無視している。

転職を繰り返す

他のどの主要都市でも同じだと断言できるが、ここでは、私自身と同僚・友人のニューヨークでの勤務経験を代表して話したい。私たちは転職を繰り返している。しかし、全員がそうというわけではない。ネット上の記事のコメントで、同じ職に19年間就いている人を見かけたこともある。また、他のプロジェクトに惹かれやすい人は、同じ職場に長く留まらない傾向があることにも気づいた。そのために多くのプロジェクトが中断を余儀なくされているのだ。

プロジェクトを中断する理由はたくさんある。例えば、新しい仕事に就いたばかりで、そちらのプロジェクトに専念する必要があるため、元のものをいったん脇に置かざるを得ない場合もある。また、やっているプロジェクトが以前やったものと似ているため、急に興味を失ってしまうこともある。距離も理由の一つだ。特に、数年ごとに転職するならば、継続はますます難しくなる。ここで言っておきたいのは、考え方を変えることが重要だということだ。もし3年後に辞めるつもりなら、どうして3か月でプロジェクトを片付けられないのか? その情熱を保つことができれば、プロジェクトで行き詰まったときに、ひらめきが湧き、良いアイデアが浮かぶものだ。

頓挫したプロジェクトに新生を与える

様々な理由で、私は自分の良いアイデアを「世に送り出す」ことができなかった。まずこの事実を認め、次に原因を突き止めた。さて、第三段階はそれらを修復することだ。これは一朝一夕にできることではなく、私の多くのプロジェクトが依然として半死半生の状態にあるかもしれない。長い間考えた末、これらのプロジェクトが永遠にフォルダの中の飾り物になるのを防ぐためのいくつかのステップを考案した。

あなたは最高だ

まず、どのプロジェクトも、あなたを少し――あるいは場合によっては大幅に――より優れた開発者へと成長させてくれることを理解しよう。技術は時間の積み重ねが必要なので、開発するプロジェクトが多ければ多いほど、あなたはより優れた開発者になる。新しい技術、新しいプログラミング言語、新しいフレームワークを学ぶことをモチベーションにしてプロジェクトに取り組めば、例え完成できなくても、多くの知識を学べる。そして、他にやるべき重要なことがあれば、このプロジェクトをすぐに中断しても構わない。

プロジェクトのコンポーネントを構築する

多くのプロジェクトを開発して、ますます熟練してきたあなたは、この小さなコツを知っているだろうか――コードの再利用だ。毎回必要になるたびに書き直すのではなく、モジュールやライブラリを構築しよう。今やっているプロジェクトが最後のプロジェクトではないなら、そのプロジェクトにしか使えないコードを書くのではなく、プロジェクトのコンポーネントをいくつか構築することを勧める。ドキュメントに自分用のコメントを残しておくと、次に別のプロジェクトで使うときに便利だ。

みんなと協力する

さあ、これで頓挫したプロジェクトを再生させる良い方法が手に入った。もううずうずして試したくなっているだろう? あなたのアイデアは、まるで自分の子供のように大切で、数十億ドルの価値があるかもしれない。しかし現時点では――それは一文の価値もない。あなたは他の人とアイデアを共有する必要がある。そして多ければ多いほど良い。その自然な興奮が、このプロジェクトに継続的に取り組み、前進させる原動力になる。さらに、オープンソースにして、みんなに参加を呼びかけることもできる。このような相互協力の方法は、使命感を与え、それに集中し、簡単には諦めないようにしてくれる。

手元の問題を解決する

高望みをせず、大風呂敷を広げずに、自分にとって本当に役立つものを作ってみよう。あなたがプログラマーなら、プログラムの問題を解決する。会社で働いているなら、その会社が使うプログラムなどを作る。個人的なことであっても、技術で解決できる問題は必ずあるはずだ。それなら、どうして先手を打たないのか? 問題が溜まってから解決するのではなく、一歩一歩進めていけば、同時に役立つプログラムなども得られる。やらない手はないだろう?

小さなことを軽んじるな

ことわざにあるように、完成まで8か月かかる会社を興そうと考えず、4週間以内、あるいはそれ以下でやり遂げられることに時間を使いなさい。どんなに簡単でも、毎月決まった日に最新の成果を公開しよう。そうすれば強い心理的暗示が働き、仕事への励みになる。逆に、ノートパソコンの前で8か月も悪戦苦闘して、何か大きなことを成し遂げようとしたのに、何の進展もなければ、どんなに落胆するかは想像に難くない。量の変化は質の変化をもたらし、小さなことを一つ一つやり遂げれば、大きな成功を収めることもあるかもしれない。人生の旅はマラソンであって、短距離走ではないのだ。

ほら吹きも技術がいる

社会のプレッシャーは現実に存在する。こそこそと作業するよりも、みんなに自分の仕事の内容を話そう。得られるフィードバックは製品の改善に役立つかもしれない。もしかしたら、他の人にアイデアを横取りされるのを心配しているかもしれないが、保証する。そんなことは絶対に起こらない。なぜなら、たとえ非常に単純なアイデアでも、他の人がそれを実行しようとするのは非常に難しいことだからだ。だから、隠し立てする必要はない。話してみれば、みんなが提案してくれたアドバイスの中から有意義なものを取り入れて改善することもできる。そしてもっと重要なのは、そうすることが、あなたにそれを実現せざるを得なくさせるということだ。さもなければ、ホラがばれて面目を失うことになるからね。はは。

ここまで書いて、ひと区切りとしよう。あなたのプロジェクトに役立つ何らかのコツを学べただろうか? 忘れないでほしい:行動が最も重要だ。