この記事は、フリーランスで十数年、TC3 で一年半、自らも Gig として、そして複数の Gig と関わるソフトウェア開発で感じた、いちプログラマーのこれからのソフトウェア開発についての考察です。
Gigとは
一般的にギグワーカーといえば好きなタイミングに単発で仕事をする人という理解だと思います。ですがその形態を継続するためには、依頼主からの信頼が必要です。ギグワーカーであるにはどんな仕事であれ、その職業のプロでないと成り立たないと考えています。それはソフトウェア開発においても同様です。TC3 ではそういった職人意識を持ち仕事をする人たちのことを敬意を込めて Gig (ギグ) と呼んでいます。
ソフトウェア開発の課題
ある規模以上のソフトウェア開発では、プロジェクト初期に開発メンバーを数名雇い入れ、外部設計, 内部設計, 実装, そして運用といった一連のプロセスをそのメンバーだけで回す開発体制・プロセスが広く普及しています。そういった開発体制には、時間が経ちメンバーの経験値が上がれば上がるほど、阿吽の呼吸で開発サイクルが回せるようになり、プロジェクトの終盤には高速に機能を実装できる、といったメリットがあります。
ですがメンバーの経験値が溜まるまでの最初の期間や、経験のあるメンバーが辞めた後には問題が残ります。最初の期間は仮にすぐメンバーが集まったとしても、異なるバックグラウンドやスキルのメンバーが集まるわけですから、開発手法の認識合わせや開発環境の構築に1ヶ月ほど時間を使うことも少なくありません。さらにドメイン知識の蓄積に数ヶ月かかったりもします。もちろんその間にも開発資金は減っていくのですが、頑張って集めたメンバーが常にいてくれる保証もどこにもありません。なにかの理由で経験豊富な開発者がいなくなってしまうとガクッと進捗が落ちてしまいます。
そういった事態にも対応できるよう、わかりやすいアーキテクチャ、テストファーストな開発、ドキュメント文化といった様々なプラクティスをチームに浸透させることが必要とされています。そのような知識を持った人を低賃金で雇うことはもちろんできません。優秀な人は常にどこかの会社がキープし、高いお金を払ってでも居てもらおうとするため、彼らが人材紹介会社から無名の会社に紹介されることは稀で、さらにどの会社もそのひと握りの人材を雇い入れようと必死です。
社員であれフリーランサーであれ、メンバーを維持するコストは常に発生するため、雇い入れた方々には相応の価値を出し続けてもらうことを期待してしまうものですが、1つの事業会社にソフトウェア開発の需要が常に一定数あるというわけでもなく、どうにか需要を作るために必要に迫られてもいないプロジェクトを立ち上げ、あまり戦略が練られていないままの開発を開始してしまうこともあるかもしれません。さらに、いざバーニングニーズを感じるプロジェクトを立ち上げたとしても、そのときいるメンバーが持っているスキルセットでは、そのアイデアを形にできない可能性もあります。そうなるとまずはメンバーを教育することになりますが、価値を産み出すデジタルサービスというものは一朝一夕の知識で作れるものではありません。教育期間も含め長い期間をかけて内製した合計コスト数千万円のものがもし使いものにならなかったとしたら、初めからそのお金で外部に依頼して半年で質の良いものを手に入れられたかもしれない、と後悔するかもしれません。
ソフトウェア開発の全てを内製で賄おうとすることがいかにリスクのあることかは言うまでもありません。優秀なソフトウェア開発者は自身のキャリアアップのために比較的短い期間で転職をする傾向にあり、これまでの長期雇用前提の開発プロセスはこれから通用しにくくなるだろうと予想しています。こういった事情から、小規模な開発ベンダーのニーズはより高まることと予想していますが、ソフトウェア開発を外部に委託し、納得した QCD(品質, コスト, 納期) を得られなかったという声を耳にするのが現状です。
この課題を解決するのが Gig
事業会社が安心してお金を投資し、品質の良いデジタルサービスを作れる。そんな世の中の実現に、高い技術やドメイン知識を持った専門家である Gig の存在は不可欠だと考えています。求めている分野の専門知識を持った Gig がすぐに見つかり、品質の高い成果を受取り、双方が納得のいく報酬を支払える、そんな開発プロセスやツールがあれば上に挙げた課題は解決できるはずです。
もちろん Gig との開発に課題がないわけではありません。例えば、スクラム開発が広まっているひとつの要因は、ツールでも個の力でもなく長期間の人の集まりにソフトウェア開発の価値を高める力があると実証されてきたからだと考えています。Gig との開発ではその力が活用し難いことは確かです。だからといって私達の想像する短時間のダイナミックな人の集まりに、ソフトウェア開発の価値を高める力がないということでは決してなく、その力をどうすれば最大限活かせるのか、現在はそれを試行錯誤し実証していく段階なのです。
私が見ている未来
10年後の事業会社では、コードをガリガリ書けなくても、デジタルサービスがどのようにして出来上がるのか、設計においてどこに気をつけると良いのかをわかっている、プログラミング教育を小さい頃から受けた人たちが多く働くことになるはずです。彼らは外部設計のみならず、大まかな内部設計であれば難なくこなせることでしょう。また、今では想像もできないコンピューターが彼らを機械的にサポートするため、設計の質は格段に良くなり、ちょっとしたソフトウェアであればプログラマーがいなくても作れるようになるでしょう。そうすると外部に依頼が必要になるソフトウェアはある程度複雑なものだったり、専門知識を持ったプログラマーでないと作れないものだろうと予想しています。ビジネス成功の鍵となるソフトウェアの開発サイクルは速いに越したことはなく、現在のように開発ベンダーが業務知識を勉強したりメンバーのブートアップに数ヶ月かかってしまうような開発プロセスでは太刀打ちできなくなることは想像に難くありません。
事業会社がデジタルサービスを作りたいと思ったその日に、事業会社のアーキテクトが設計を開始し、次の週にはその分野に特化したエンジニアを集め、その次の週にはMVPが出来上がっている。そんなことが当たり前になる日が来るでしょう。
この記事の続き「人材の流動性にまつわる課題」もぜひご覧ください。
Author: Yuki Sanada