ボクココ

サービス開発を成功させるまでの歩み

エンジニア不足の根本解決は自分で開発することだ

ども、@kimihom です。

f:id:cevid_cpp:20181125135541j:plain

友人と会話をしていると、誰もが「エンジニアが足りない」と嘆いているのを聞く。嘆いているってことは現に良いエンジニアが見つからないのだろう。

果たして本当にそんなにエンジニアが必要なのだろうか?今回はそんなエンジニア不足の問題について私の意見を記してみる。

エンジニアが増えれば組織が成長するわけではない

こう述べる方々は、エンジニアをたくさん雇って開発スピードを上げられれば、事業も成長できるという神話を信じている傾向を感じる。でも、実際にはそんなことは起きない。

エンジニアが多くなればなるほど、彼らをマネジメントするための人材や時間が必要だ。組織がどんどん複雑になっていった先で、開発スピードが向上したり良いサービスが出来上がるのかといえばノーだ。エンジニアは無駄なミーティングに出なきゃならなくなるし、誰かの書いたコードを読む必要があるし、設計書やソースコード、手順書をレビューしなきゃいけなくなる。リリース時には誰かの作業を見守ったり誰かの報告を注視する必要が出てくる。やがて開発に専用のルールやフレームワークみたいなのができあがって、それを守らなければならなくなる。新しく入ったメンバーはそのルールに従って開発することが求められるようになる。そんなガチガチに固められた枠の中で開発をすることが求められるようになる。

エンジニアが本当に欲しいのは、「開発の自由」ではないか。その自由を手に入れられれば、開発スピードは向上する。その究極が、あなた自信の手で開発するという方法である。

自分が全てを作ったので、全ての影響範囲がわかる。だからソースコードを大胆に壊して作り直すこともできるし、機能追加も高速に実現できる。開発の途中で意味不明なエラーに悩まされたり思わぬところでバグが出てくるようなことも少ない。そうして洗練されてできあがったサービスは、10人かけて作ったサービスよりも洗練されていて使いやすいものになる場合がある。

「エンジニアが多くないとサービスは完成させられない」という事実は一切ない。にも関わらず、その迷信を信じてエンジニアが足りないと嘆くケースが後を絶たない。

そうならないようにするために、サービス開発者は何を意識しなければならないのかを挙げてみる。

磨くこと(差別化)に集中する

サービスの1つを磨き上げよう。ここで言う1つってのは、サービスにおける最も重要な要素だ。

んで、大抵の場合はその1つってのが定められずに、ただ闇雲に機能開発をしてしまう。そうなってしまうと、単に多くの機能を追加したり、他の別サービスを作るといった選択をするようになる。

その結果、どんどん(うまくいくかもわからない)新しい何かを作らなきゃいけなくなっちゃって、エンジニアが足りないと嘆くようになる。この場合、新しいエンジニアをうまく雇えたとしても、その先に待っているのはうまくいくかどうかもわからない機能やサービスが増えていくだけだ。やがてエンジニアはその場を離れていって、またエンジニア足りない問題が再発する。

一時的に増えたエンジニアが闇雲に作り上げたサービスと、一人のエンジニアが磨きに磨き上げたサービスとで、どっちが優れたものになるかといえば明らかなことだろう。

磨くことに集中すれば、他にエンジニアが欲しいとは思わなくなる。誰が磨くのかといえば、それを作っているあなた自身である。その磨き上げが、誰にも真似できない強固な基盤のあるサービスとなる。たとえ他の優れた人が同じようなものを作り始めたとしても、あなたが磨き上げた時間のレベルに到達することはできない。

開発能力に自信を持て

サービスを作った超本人が技術力に自信がないから、他のもっと技術力のある人を仲間にした方が早いと判断するケースがある。

もちろん世界を見渡せば、技術力という観点だけで見れば自分より優れた人ってのはいるだろう。でもそれで諦めるべきかっていったら全くそうではない。

そもそもサービスを作ろうと思った張本人こそが、そのサービスを作ることに関して一番モチベーションがある。つまり一番開発を続けられるポテンシャルがあるのだ。最初はひどいコードだったとしても、その開発を続けられさえすれば、どんどんソースコードは綺麗になるし、技術力も上がっていく。

そのモチベーションのない人は自ら開発するってのを諦め、開発者を雇ってマネジメントをする傾向がある。でも雇われたエンジニアはサービスに対して、作り始めたあなたより情熱があるわけではない。彼らは開発を続けるっていう一番大事なモチベーションを(あなたより)持っていない。優秀なエンジニアはいつでもより良い給料を求めて転職することができるし、他の良いサービスを開発する機会があれば進んでそっちに移るようになる。自分が開発を続けた場合と、自分より優秀なエンジニア(高給)がコロコロと変わってサービス開発するのとで、どっちが最終的により物ができるだろう?

あなたより技術力があって、あなた以上に作っているサービスに情熱を傾けられるエンジニアが他に何人いるか。それに対して自信を持ってゼロだと答えられるような状態が理想だ。

少人数開発を実現する Meetup

最後に軽く宣伝を。

そうした少人数でサービスを作り成功させることに情熱を傾ける方々が集まる Bootstrap Night! が開催される。

selfree.connpass.com

彼らがそこまでしてサービス開発に情熱を傾けられ続けられるのは何故だろう?それは給料や地位などではない、全く他のモチベーションがあるからに他ならない。そんな開発の情熱に関して熱く語られる数少ない機会を見逃すな!