2009/06/14

ソフトウェアは工業製品か

たまにテクニカルなことを書くのをお休みにして普通のことを書いてみます。でも、書き始めたのが日付が変わった12時過ぎとかで、既に3時間ぐらい文章を書いては直しているのでそろそろぐだぐだなまま睡魔に負けてアップロードしてしまいそうな自分がここにいます。

大学時代と社会人時代で大きく変わったのは生活環境ですが、その他にも仕事環境がかわりましたね。大学の研究室じゃわりとのびのびとプログラム書いてて、楽しい日々を送ってたんですが、社会人になったらIT系の会社に勤めてるわりにぜんぜんプログラム書いてない。別にひとのあら探しするために社会人になったわけじゃないのに…。

どのぐらいプログラム書いてないかというと、大学だと少なくとも1日2,3時間はコーディングしてたのに対して、今の会社だとおそらく1日の平均時間としては15分程度なのかなぁ。まぁ正直書いてないに等しいです。今年もそろそろ半年経ちますけど、2月下旬〜3月上旬はコーディングしたんですけど、それ以外コード書いてないです。別にコーダーをしたいわけじゃないんだけど、プログラムもやっぱりスポーツとかと同じで書かないとなまるんですよね。

今やってるプロジェクトは普通のウォーターフォールなんですけど、ISOなんたらとかの絡みでやっぱり各工程の工数とかはきっちり集計するわけですが、じゃあ、その各工程の工数ってどのぐらいの比率になっていればいいの? ってことに対する答えを誰も持ってないんですね。

例えば、大きく分けて企画・計画/設計/製造(コーディング)/単体検査/機能検査っていう5ステップがあったときに、こいつらの工数比率ってどのぐらいになっているのが理想なんでしょうか? 個人的には企画・計画の時点で作りたいものって決まってしまうので、その後の設計ってそんなに時間かからないとおもうし、とっととコード書きたいわけです。この手の比率配分も計画段階にやるべきなんですけど、参考になるデータがない…。

大学時代は書いては消して書いては消して(完全に消したわけじゃないけど)って感じでわりとドラスティックな試行錯誤をやってました。そのやり方だと、たまーに「くそぉ、リファクタリングが面倒すぎる…」と思うことも多々あります。会社の仕事としてプログラムを書いてやるときは日本語で数十ページの仕様書を書いて、それを元に設計書を書いて、それをソースコードにアウトプットだーって感じでやるんで、ある意味これは正しいやり方。

ここで、「ある意味」という書き方をしたのは、工業製品としてモノを作るやり方としては正しいやり方ですね、という意味です。でも、プログラムって工業製品なんだろうかという疑問があります。というのも、仕様書を書いて設計書を書けば、ドラスティックな試行錯誤が無くなってあっさりとコーディングできるかっていうと、必ずしもそうではないんですよねぇ。どうしても落とし穴がでてきます。そういう意味では、仕様書や設計書ってなんのためにあるのって気がしないでもない…。でも、明文化された何かは必要で、それがなんなのかは、しばらく分かってなかった。

最近思ってるのは、それが結局の所テストファーストってことで作ったテストケースなのかなぁと。テストケースは明文なのか? って疑問はありますけど、プログラマなんだから日本語よりコードで明文化したいですよね。そういう意味ではプロジェクトのロジックにかかわる人全員が(責任者とかも含めて)コードを読める環境であって欲しいところです(デザイナーとかは別に読める必要は無いと思うけど…)。

とはいえ、別に仕様書と設計書を否定してるわけじゃないんです。なんていうのかなぁ、仕様書と設計書はコーディングをするための材料なんで、そこはなるべくさらっと済ませたいんですよ、個人的には。結局プログラムの品質ってコーディング以降に割けた時間が多ければ多いほど安定すると思っています。仕様書書くのに時間かけてもいいんだけど、机上の空論という言葉もあるわけです。

っていうかプログラム作る仕事ってすごいクリエイティブな仕事だと思ってたのに、なんか工場でもの作ってる人みたいな扱いをされてる印象なんですよね、プログラマって(結局これが言いたかった)。自分で自分のことをいうのもなんですけど、なんだか不遇だなぁ。

『誰かに説明』メソッド

まぁあとはあれです。仕事中にIRC使えないのはやっぱりつらいです。どうせC++の話を振るようなことはないにしても、ロジック的に「どっちがいいかなぁー」ってときとかTwitterでつぶやくには長すぎるロジックの整理とかをぶつぶつIRCでやってるだけでも生産性とかって変わってくると思うんですよね。

大学時代に「誰かに説明する」というやり方で自分の頭の中を整理していたこともあり、それができない環境ってなんかすごくやりづらいんです。やりづらいというか、紙にアウトプットしていてもいつまで経ってもまとまらないんです。紙に書くのと違ってだれかに説明するっていうのは「相手に分からせる」ということなので、やっぱりその相手に分かってもらえるように説明する努力を自分がサボらないという点で、もっとも効率的なまとめメソッドなのではないかと思うわけです。

この「誰かに説明する」メソッドは、真に納得して欲しいのは実は自分というのがミソで、逆にいえば説明されている人っていうのはオレの脳内整理に付き合わされてるってことにほかならない。会社でそれをやると、このご時世なので「工数がないんだからうんぬんかんぬん」ってなってしまうわけで、ちょっと気兼ねしてしまいますね。

その点、ここでIRCが使えればたまたまそれをみた誰かが反応して聞いてくれる(別に反応しなくても、チャットに文章でアウトプットした時点でまとまってるんでOK)っていうのは大きいです。ある意味、社外リソースが自分の考えをレビューしてくれるようなもんですからね。やっぱり会社でIRCつかいたいなぁ。まぁ、IRCが使えなければリラックマの人形とかを相手に一人で説明してもいいんじゃないかなぁとは思ってはいるんですけどね。だれかリラックマメソッドとかやりませんか? やりませんね。

と、こうやって自分のサイトに考えを書き出すのも、言ってみれば「誰かに説明する」メソッドなのでした。本当はもっと書きたいことあったんだけど、今日は遅くなってしまったのでこの辺にしておこう。やっぱり転職して東京にでたほうが自分の研鑽にはいいのかなーというのがその結論なので、別にその考えに至る過程を書く必要がなくなってしまいました。でも北海道から東京に転職って、思ったよりもハードル高い気がするんだよなぁ、いろいろと。これなら最初から東京スタートにしておけばよかったか…。

うされもん @acidlemonについて

|'-')/ acidlemonです。鎌倉市在住で、鎌倉で働く普通のITエンジニアです。

30年弱住んだ北海道を離れ、鎌倉でまったりぽわぽわしています。

外部サイト情報

  • twitter
  • github
  • facebook
  • instagram
  • work on kayac