コードを書かない

@ymotongpoo 主催の新卒準備カレンダー 2011春 に参加させて頂くことにしました。

おまえ誰よ?

ベンダー企業でコンサル/プログラマ/マネージャをやっています。Python 温泉というゆるふわ系お泊まりイベントを主催しています。
一応専門はネットワークサーバですが、難しいことはよくわかりません。プログラミングは Erlang/Python あたりが得意かもしれません。

どんな話するの?

ベンダー企業の一員として新製品開発をしたり、継続して製品をアップデートしたりする仕事に従事していますので、どんなことを考えて仕事をしているのかをお話ししたいと思います。

いかにしてコードを書かないか

タイトルがいきなりプログラマ全否定で期待している話と違うかも知れませんが、こんな考え方もあるんだと思って頂けると嬉しいです。

趣味でプログラムを書いてきた人は「お金をもらって」コードを書くという作業がほとんど無いことにびっくりすると思います。

実際に製品を開発していても製品のコードを書くのは開発のほんの一部です。なぜこんなにもコードを書く量が少ないのでしょうか。

なぜコードを書かないのか ...
結論は簡単です。コードをかけばバグが増えます。ただでさえバグのない製品なんか開発するのは不可能です。出来る限りコードを書かないで製品を作り上げる必要があります。しかし、コードを書かなければ製品は生まれません。

この矛盾を解決するにはどうすればいいのでしょうか?

技術者が思いつく発想としてはテストを書く、ドキュメントを書く、きれいなコードを書く、リファクタリングをするなどなど、技術的にどうするかという話が出てくることがほとんどです。

でも実際はそんな事では解決しません。上に書いたのは結局おまけです。実は技術では何も解決できないのです。大事なのは「顧客が本当に必要な物」を提供することです。

ちょっと有名な図をおいておきます。是非これを見ておいて下さい。

f:id:Voluntas:20110227232528p:image

顧客が欲しい物を明確にして、予算内で本当に必要な物を提供するには社内にいてディスプレイを見ながらコードを書いているだけではわからないのです。

プログラマがダメだと言うわけではありません。大切なのは「今作っている物」が本当に顧客に必要とされている物なのかということです。それを意識しないでプログラムを書くならそのプログラムは何も生みません。

顧客が実際に必要としているものは「多機能」で「高性能」では無いことがほとんどです。しかしほとんどの製品は売上を多くしようと、「多機能」で「高性能」にしがちです。

ここで私が新社会人に伝えたいのは「本当に必要な物を提案できる人になって下さい」という事です。無駄にコードを書いたり無駄に管理したりしないでください。プログラムを書いて解決するというのは間違っていませんが、長い目で見ると「いかにプログラムを書かないで解決するか」が大切です。

ただし、何が何でもコードを書くなという訳ではありません。コードは沢山書いて、沢山読みましょう。沢山の素振りが必要ですし、沢山の本番が必要です。そうしないとコードを書かないでいいのかどうかを判断することが出来ません。さらにコードを書かなくてもいいような良い製品を作ることは出来ません。

つまりむやみやたらにコードを書く必要は無いということです。プログラムはあくまで道具なのです。沢山の言語を覚えるのもイイでしょうし、カッコイイコードや便利なツールを使うことは悪いことではありませんが、それらは顧客にとって何も価値を生み出さないのです。

是非出来るだけコードを書かないでお互いが Win-Win の関係を作れるかを考え続けてみて下さい。答えはそこにあるのだと思います。

コードを書かないためには何が必要なのかはそれぞれの場面で変わってきます。答えは一つではありません。

よく答えをすぐ知りたがる人がいますが、そんなにありません。毎回答えは違っているのです。その答えを考え提供するのが顧客に対する価値の提供なのだと思います。

沢山の罠

この業界には沢山の悪しき習慣と罠があります。それらを拒み戦い続けてもいいことはありません。根っこから変えない限りは何も変わらないのです。プログラムが書けない人が設計した製品はとてもヒドイものです。私はプログラムが書けない人が良い設計をしたという話を一度も聞いたことがありません。

ではプログラムが書けないのに設計をすることがよしとされているこの業界でどうすればいいのでしょうか。それは簡単です。貴方がとて良い設計をし続けて周りも出来る様にするしかないのです。

オオカミ男を倒す銀の弾丸はありません。少しずつ少しずつ積み上げていくしかないのです。

IT は投資

IT というのは投資なのだと思っています。今までやってきたことを「便利」にするツールなのです。新しいものを生み出すという側面もあります。

IT に関わっていくならばまずは自分に投資をしてください。自分が便利になって新しい物を生み出せなければ、便利なモノや新しいモノを提供できるはずがありません。

一人では何も出来ない

一人で全部やろうとしないでください。おそらく間違った方向に進みます。偶然一人で出来たとしてもそれはお勧めできません。なぜならそれを続けるのには苦労するからです。

チームで仕事をしましょう。チームで仕事をするためには何が必要かを考えるようにしましょう。貴方が持っている何かを提供して、チームのメンバーから何かを提供して貰いましょう。何かは知識だったり経験だったり安心だったりと様々なものです。

チームで仕事をするときに心がけるの必要があるのは、周りを見渡して何が必要かを考える事です。誰かが困っていたら手助けをすれば良いだけですし、何も困っていなければ前に進むだけです。自分が困っていたら教えを請うのももちろん必要です。

人と仕事をすることこそが貴方を育てます。特に IT 業界は日々進歩しており追いつくだけでも精一杯です。一人で戦っていても勝ち目はありません。

外に出る

他の方々も書いていますが、あえて自分も書こうと思います。外に出てください。是非外に出て沢山の事を話したり聞いたりしてください。
会社という狭い枠にとらわれないことが一番大事なのだと思います。

是非読んで欲しい本と記事

おすすめの本やら記事を紹介するということなので3つ紹介します。

デッドラインの中に出てくる 「一日を無駄にする方法はたくさんあるが、時間を取り戻す方法は存在しない」という言葉がお気に入りです。

明日は blockdiag の作者 @tk0miya さんです。