Written on 2015, 03, 06

プログラマは何に似てる?

今日はプログラマって色んなものに例えられる、似ているというお話です。

今では「Y Combinator」で有名なポール・グレアムが書いた「ハッカーと画家」という本がありますが、最近、プログラマって建築士や医者に近いところもあるなーと考えています。
プロダクトを開発する初期の頃は、まだ何も無い更地にどういう建物を立てるか、どういう構造にするか、どういう機能を持った建物にするかなどを考える建築士のような感じで、一度作り切ったシステムを、運用し、メンテナンスしていくフェーズに入ると、バグの調査で、どういう症状なのか、悪い所はどこなのか、どういう治療法が効きそうかなどを考える医者のような思考フローになったりもします。

IT系ではプログラマの労働時間の長さやデスマーチなどがよくネタにされますが、何故、単純に「時間」や「人」を投入するだけではシステム開発が上手くいかないかというと、プログラマの仕事が「コードを書くこと」ではなく、「書くコードを考えること」だからだと思います。
単純にコードを書くだけであれば、より多くの時間、より多くの人を投入すれば、より多くのコードが書けます。
ですが、そもそもコードの価値はコードの「量」には比例しません。むしろ「量」が多いだけのコードは価値が低いと見なされます。
同じ処理を行うのであれば、コードはより簡潔に、より分かりやすく、より少ないコードで実装した方が基本的には価値の高いコードになります。

建築士や医者、画家などもそうだと思いますが、より多くの時間を掛ければ、より多くの人を投入すれば、より良い建築が作れる訳でも、より良い治療が出来る訳でも、素晴らしい絵が描ける訳でもないですよね。
それと同じように、プログラマも、より多くの時間を掛けても、より多くの人を投入しても、良いコードが書ける訳でも、良いシステムが作れる訳でもありません。

大事なのは、より良い解法を「発想」することであったり、「集中」して問題に取り組むことであったり、そしてちゃんと最後まで「終わらせる」こと、などではないかと思います。
プログラマが他の職種に似ている所があるように、これらの要素はどんな仕事をする上でも共通する、良い仕事をする為の要素なのかも知れません。

という、プログラマと他の職業の共通点に関するお話でした。