プログラマの仕事

プログラマの仕事とはなんでしょうか? プログラムを作ることだと思っている人は多いと思いますが、違います。 それは本質ではありません。 本質を捉えるためには、まず最初に仕事とはなにかというところを明らかにしなければなりません。

仕事の本質なんて考えたことありますか? 難しい質問ですよね。 世の中の人がこの質問になんと答えるかは全く想像できませんが、 少なくともプログラマから見た仕事の本質とは、問題を解決することです。

問題とはなにか

人や社会は様々な問題を抱えてきました。 アレがしたい、ソレはしたくない、コレが面倒、など。 需要と言い換えても良いかもしれません。

例えば、昔は各家庭でパンを焼くのが当たり前でした。 しかし、各家庭に窯を持ったり、各家庭でパンをこねる作業をしたりするのは非効率です。 パン作りが得意でない人もたくさんいたでしょう。 社会が発展するにつれて、毎日のパン作りに使う労力が無駄だという問題が生まれました。

初期の仕事

いったい誰がこの問題を解決したのでしょうか。 もう解っていると思いますが、パン屋という集団です。 パン屋は大きな生産量を期待できる窯を備え、パン職人という労働力を集約し、 パン作りのノウハウを蓄積し、効率的にパンを供給することができるようになりました。 この仕事により市民はパンを作るという労務から開放され、問題は解決したのです。 紀元1世紀のポンペイ遺跡にもパン屋跡があり、この頃すでにパンは各家庭で作るものではなくなっていたようです。

エンジニアの仕事

それではもう少し範囲を狭く、エンジニアの仕事の本質とはなんでしょうか。 それはテクノロジーで問題を解決することです。 技術で問題を解決するとも言いますが、テクニックと混同するのでテクノロジーとしておきました。 工業的手法や工学的手法と言ってもいいと思います。

パンの例を続けると、社会が発展し人口が増えるにつれ、それに比例するようにパンも必要になりました。 パンの生産量を増やすにはパン職人を増やすしかありません。 しかし、職人を育成するのには当然コストがかかり、また職人を増やしても増加する生産量は微々たるものです。 ここで、パン職人の育成と生産量の増加が、パン需要の成長に対処できないという問題が生まれました。 以前の仕事の方法を拡張し続けるだけではもう問題を解決できません。

こうなるといよいよエンジニアの出番になります。 エンジニアはパンを作る機械を開発し、パン工場を建て、パンの大量生産を可能にし、問題を解決しました。 現在我々が食べているパンのほとんどは工場で機械により作られたパンであり、 街のパン屋が手作りで作っているパンはプレミアム価格が付きちょっとした贅沢品となっています。

パンに限らず様々な分野で、昔ながらの仕事の方法で手数を増やすだけでは需要の成長に間に合わず、 世の中の仕事の多くがエンジニアの仕事に移り変わっていった、 というのが19世紀から20世紀の流れだと言えるのではないでしょうか。

プログラマの仕事

プログラマの仕事の本質はもう見えましたか? それはソフトウェアで問題を解決することです。

大事なことなのでもう一度言います。 プログラマの仕事はソフトウェアで問題を解決することです。 プログラムを作ることではありません。

プログラマの与えられる問題

さてそうなると、プログラマにどのような問題が与えられるか、ということが重要になってきます。 これは業界によってかなり違い、むしろこの違いが業界や身分を分けていると言っても過言ではありません。

例えばSI業界を見てみると、最上流にいるSIerが解決するのは、顧客の抱えている問題です。 何かの機能を追加したい、何かを自動化したい、そういった問題を解決するシステムを考えます。 SIerはそのシステムを実現するのが大変だという問題を新たに抱え、問題を分割再設定して下流の会社に流します。 いくつかの層を経て問題は分割されていき、最下層のプログラマが解決するのは「このメソッドを実装して欲しい」といったような規模の問題になります。 最下層のプログラマにとって、プログラマの仕事はプログラムを作ることで間違っていないわけです。

一方Webサービス業界では全く違い、「世界はどんな問題を抱えているか」から考えます。 与えられた問題を解決するのではなく、問題を自体を探すところから始まります。 本当にそれが問題なのか、その問題を解決したら世界は喜んでくれるのか、それすら確信できません。 もしかしたらWeb業界は「世界は問題を問題として認識していないという問題」を解決しているのかもしれません。 誰も気づいていなかった世界の需要という大金脈を掘り当てた人たちは、皆大成功し大金持ちになっているのです。 「もうそれが無かったころの生活なんて思い出せない!!」ってサービス1つ2つあるのではないでしょうか? 筆者にとってはtwitterがそれです。 需要を掘り当てるのも自分の能力と裁量次第。ここにWebサービスの楽しさが詰まっています。

Web業界は下請け構造は無いので、自分でその問題を解決しなければなりません。 Webプログラマの仕事の本質は自ら問題を見つけ自らその問題を解決することです。 よいプログラムを書くのは結構なことですが、問題を解決しないのであれば無意味です。 問題を解決できるならプログラムを書く必要すら無いのです。

まとめ

  • プログラマの仕事は問題を解決すること
  • 所属する組織や階層で問題の規模や性質が大きく違う
  • 問題解決できないプログラマは無能