私たちソニックガーデンでは、「プログラマを一生の仕事にする」ということを一つのビジョンにしています。

このブログではよく書いていますが、私たちの考えるプログラマとは、ただコンピュータに文字を打ち込むだけの仕事ではなく、ソフトウェアそのものの企画から、関連するすべての設計、そしてコーディングと、動かすための運用までの、ソフトウェアエンジニアリングのすべてを行う仕事です。

それらは「何をするか」という観点からプログラマの仕事を表したものですが、より抽象的に考えると、プログラマの仕事は何か、そして何を目指すことで「一生の仕事にする」ことができるのか、この記事では考えてみました。

Employees hand rolling cigars in a cigar factory: Ybor City, Florida
Employees hand rolling cigars in a cigar factory: Ybor City, Florida / State Library and Archives of Florida

プログラマの仕事は「なくなる仕事」か?

2013年の週刊現代のウェブ「現代ビジネス」に掲載された記事中にて、「2020年になくなる仕事」としてプログラマーが紹介されていました。(http://gendai.ismedia.jp/articles/-/36518?page=4より)

機械化や技術の進歩、社会的な変化などから推測される「なくなる仕事」ですが、なかなか刺激的な内容です。確かに、これまで単純作業でやっていた仕事や、中間に入ることでマージンで商売していた仕事などは、本当になくなる気がします。しかし、ここで見逃せないのは「プログラマー」も、そこに入っていることです。果たして本当でしょうか?

ここに書かれているコメントは「プログラミングそのものが機械化される」「システム開発の仕組みさえ構築されていれば、個々のプログラマーが日本にいる必要もなくなってくる」ということです。おそらく、このコメントを書かれた方たちはプログラミングをしたことがないのでしょう。そもそも機械化すること、仕組みを構築することが、プログラミングの本質のはずです。

ここでのプログラミング=コーディング、つまり、ただ文字を打ち込むだけの昔でいうパンチャーだと考えるならば、確かにその通りですが、そもそも、そんな仕事は既になくなっています。そして、日本にいる必要がないというのは、どの職業にも言えることで、プログラマに限った話ではありません。

ここで「なくなる仕事」だと言っている前提には、プログラミングはルーチンワークであるという思い込みがありそうです。ではなぜ、ルーチンワークだと思われているのか、そこには、ソフトウェア開発の工業化の歴史と、そこで産まれた「分業」の考えかたに起因しているのではないでしょうか。

ソフトウェア開発に分業のもたらした功罪

これまでのソフトウェア開発の世界では、工業化を進めようとして、工程を分けて、それぞれを専門とする人間を置いて効率化を行い、属人化の排除を図ろうとしてきたと思います。製造業の歴史を見るに、なにかモノを大量生産するためには、そのスタイルは向いていたのでしょう。でも、それって、こんな悪循環を産んでませんでしたか?

ソフトウェア開発は、これまで様々な観点で分業が行われてきました。分析・設計・実装・テストといった工程の分業、開発と運用での分業、採用するアーキテクチャでの分業、といったところです。一方で、最近では、「DevOps」や「フルスタックエンジニア」という言葉が流行っており、分業よりも統合する流れが起きているようです。ここで言ってる分業は工程の分断です。役割分担はあってもいいのです。

分業をする一番の狙いは、スキル習得にかかるコストを効率化するということです。同じ工程を、それだけ何度も繰り返すようにすれば、全体を見るよりも短期間でそれなりのスキルを得ることができるはずです。しかし、一方でそれによって、工程ごとに部分最適を目指すことになり、全体の変化に対して機敏に対応することが出来なくなります。また、セクショナリズムの問題も出てくるでしょう。

また分業をすれば、人集めも容易になります。工程に特化することで、それほどスキルが高くなくても使い物になるのであれば、必要に応じてかり集めることも、減らすこともしやすくなります。一方で、そんな風に扱われる側にとっては、モチベーションは上がりませんし、モラールも低下することでしょう。

工程を分けることで、品質も一定に保つ効果もあるでしょう。ただ逆に言えば「誰がやっても同じ」を目指すとも言えます。そんなことが本当に出来るかどうかはともかく、品質の均質化を目指す環境では、少なくとも現場で働くエンジニアにとって成長意欲は奪われてしまうことになりかねません。

これらは、工程を分けて分業をすることで、一部の工程で働く人たちをただの「労働力」と見なすことで得られる功と罪です。しかし、そもそも分業を行い、工業化してきたことは、ソフトウェア開発にとって正しい進歩だったのでしょうか。私は、その出発点から向かう方向が違っていたのではないか、と考えています。

ソフトウェア開発とはなんだったのか

ソフトウェアとは一体なにか、ソフトウェアで提供する価値とは何か、ということを考えてみましょう。

ソフトウェアとは、同一品種の「大量生産」をするものではありません。これは簡単な話で、iPhoneの多種多様なアプリを世界中の人が使っていると思いますが、それらのアプリ一つ一つは、ダウンロードしてインストールする一人ずつ、大量生産されたものを使っている訳ではなく、もともとは一つのプログラムです。たとえば「パズドラ」のプログラムは一つですよね。ダウンロードする人ごとに誰かが作っている訳ではありません。

まったく同じプログラムが大量にあっても意味はないのが、ソフトウェアの世界です。つまり、一品物を作っているのです。そう考えると「ルーチンワーク」ではありえないのです。ソフトウェアを作っている誰しもが、毎日毎時間、まったく同じ作業をしているということはありません。もし、まったく同じコードを毎日書いてるとしたら、その人は何の価値も産み出していません。

つまり、ソフトウェア開発とは、そもそも「生産」することではないし、「製造業」ではないのです。このことは、ちゃんとしたプログラミング経験のある方であれば、直感でわかるはずです。

私の考えるソフトウェア開発とは、再現性のない「問題解決」の仕事のことです。それぞれの置かれた状況において、その時々で最適な答えを導きださないといけない仕事、必ずしも正解があるわけではない仕事です。それは、まるで弁護士や医者やコンサルタントのような仕事なのです。そうした仕事を、かのドラッカーは「ナレッジワーカー」と呼んでいます。

マニュアルに書かれた通りの仕事をするのが「マニュアルワーカー」だとすれば、マニュアルがなく自身の知恵と知識と経験から価値を産み出すのが「ナレッジワーカー」です。ソフトウェア開発の仕事とは、こうした誰かの難しい問題を解決する「ナレッジワーカー」なのではないか、と考えています。

「問題解決」をする仕事のマネジメントと働きかた

「問題解決」をする仕事では、同時に沢山の人は要らないし、工程を分業したところで効率は上がりません。たとえば、これまでにない新しい製品開発をするのに、人が沢山いても仕方ありません。とても難しい病気の手術を、それなりの腕の医者が百人いても直せません。チームで役割分担があってもいいのです。しかし、ただ人を増やしても、工程をわけても、解決はしないのです。

そうした仕事のビジネスは「プロフェッショナルサービス」と呼ばれ、それが出来る人たちを集めた会社は「プロフェッショナルサービスファーム」と呼ばれます。そして、そうした業態には、それに適したマネジメントが必要で、製造業とはまるきり違う発想が求められます。

プロフェッショナルサービスでは、分業して効率化を図るのではなく、それよりも、一人一人の能力を高めていくことの方が、全体的にみると効率的で、より高い価値を発揮できるようになると考えています。そうすることは属人的なリスクもありますが、そうしたそれぞれの属人的な魅力こそが、プロフェッショナルの魅力に繋がるのです。小説家や芸人さんほどになれば、一人一人違うことこそが価値のはずです。そこまでいかなくても、タレントマネジメントの考えかたとしては近いはずです。

問題解決の仕事の特徴は、顧客にダイレクトに価値を届ける仕事だということです。下請けでは価値はありません。顧客の困っている問題を解決することが仕事なのであれば、その相手と直接やりとりしなければ解決はできません。このことは仕事として大変なことですが、顧客と直接繋がって価値を届けられるということは、何にも代え難い働く喜びを得ることができます。

ナレッジワーカーの働きかたは、時間や場所に縛られないことも特徴です。頭の中でする仕事なので、どこにいても、いつでも取り組むことが出来ます。プログラミングを知らない多くの経営者や管理者が勘違いしているのは、パソコンの前に向かっているからといって仕事しているとは限らないということなのです。そうであれば、時間や場所に縛られない前提でマネジメントすることが重要です。

たとえば、私たちの会社ソニックガーデンでは、その実現手段として、セルフマネジメントすることを重視しています。各自が各自でマネジメントを行い、信頼関係と仕事の成果を重視することで、徹底的に効率化を図ることが出来ています。

ナレッジワーカーの会社であれば、沢山の人数が必要ないので、大企業である必要もないし、設備で競争力が変わることもないので、資本を沢山もっている必要もないため、小さな会社であっても十分戦うことができます。むしろ余計な間接費のかからない小さな会社の方が有利かもしれません。

分業ではなく一人の出来ることを広げていく

改めて、私の考える「プログラマ」とは、ソフトウェアエンジニアリングのすべてが出来る職業のことで、それは、とても難しく、とてもやりがいのある仕事です。そして、その仕事の本質、中心にあるのは、プログラミングができること、コードが書けることだと思っています。

プログラマが何をもって問題解決をするのか、といえば、ソフトウェアであることは間違いないことです。そして、ソフトウェアを形作っているものは、仕様書でもマニュアルでもなく、プログラムのソースコードそのものであるはずです。そうであれば、プログラミングできることは、外すことのできない大事なスキルになります。

すべての工程が出来ることというのは、非常にハードルの高いことに思えるかもしれません。ただ最初から、すべてが出来なくても構わないと思います。キャリアを積んでいく過程で、すべてが出来るようになれば良いのです。ただし、これまでの工業化を前提としたソフトウェア開発のキャリアパスでは、仕事の種類を順番に変えていくようなイメージでした。それとは違います。取り組む工程を変えるのではなく、できる範囲を広げていくようなイメージでいます。

ナレッジワーカーとして、プログラミングという職人的かつ本質的な手段をもち、誰かの難しい問題を解決する仕事を、プログラマの仕事だと改めて定義しなおすとしたならば、「2020年になくなる仕事」とは思えません。むしろきっと、この先の社会において、最も必要とされる職業の一つになるのではないか、と考えています。

また、プログラマは、若いうちだけ体力のあるうちだけ出来る仕事という訳でもなく、こなしてきた経験を自らの引き出しの数にしていくことでこそ、効率化でき、高い価値を創りだすことのできるような、歳をとっても続けていくことの出来る仕事だとも、考えています。

ただ今現在、そのようなプログラミングまで全てを担当して、問題解決するような仕事ができる場所が、これまでの業界にはあまり存在していなかったのです。ただのコンサルタントでもなく、プログラミングだけでもない、そんな仕事です。私はそうした仕事ができる世界を作ろうと考えて、ずっと活動を続け、起業までして、その事業を行ってきました。その一つが「納品のない受託開発」です。

私たちソニックガーデンでは、ナレッジワーカーとしてのプログラマを職業として、一生の仕事にしていけることを目指しています。採用ギルドなど、様々な形で仲間を増やそうとしています。多くのご参加お待ちしています。

お知らせ

今度、私の書いた本が出ることになりました。『「納品」をなくせばうまくいくーソフトウェア業界の“常識”を変えるビジネスモデル』というタイトルで、ソフトウェア業界にはびこる多くの問題をどうすれば解決できるのか、「納品のない受託開発」をはじめ、受託に限らずソフトウェアに関する私の経験や考えをまとめた本になっています。ソフトウェアエンジニアの働きかたを変えるためにも、多くの方に読んで頂ければ幸いです。