ソフトウェアの開発について、まじめに学ぶことにした。
これまではソフトウェアを「難しくゴニョゴニョ」したものだと捉え、そのメカニズムについて知ろうとしなかったのだけど、昨年末ぐらいから本質的に必要だということが判り、せめて体系的な理解だけはしたいと思った(だけど難しそうだからといろいろな言い訳をして避け続けていたのである)。
まずは、入門本を数冊手に入れた。『すぐに役立つアドバイスを満載!! 管理者になったとき困らない 実践的ソフトウェア開発工程管理』(竹山 寛/著・技術評論社)。「すぐに役立つアドバイス」「困らない」「工程管理」という言葉が感覚的に気に入って手に取ったのだが、その場で立ち読みした第2章「管理に対する考え方」にあったこの文章で、最初の1冊に選んだ。ちょいと長いが引用してみよう。
プログラムとは, 前にも述べたように「外部の環境や目的とする要求に合わせてリレーの集合体のスイッチをON/OFFさせる組み合わせを, ある一定の手順に従って書くシナリオのようなもの」であるということが, まず理解できないのである. これは, ソフトウェアの開発が, 従来の経験/学習を適用できるものとは異なった分野であることに起因している.
しかし, 実のところ, 本質的にはソフトウェアの開発も家を建てることと何ら変わらず, 間取り, 建坪などというものが, 機能, 開発規模などといったものに置き換えられているに過ぎないのである.
「ソフトウェアは目に見えないもので, よくわからない」などということがよくいわれるが, わからないのは, 管理するものが何であるかを見ていないからである*(*諺に「木を見て森を見ず」という. 部分だけを見ていると全体が見えなくなるということである.). ドキュメントを作成すればページ数, プログラムを作成すればステップ数, 詳細設計を行えばモジュール数, テストを行えばテスト件数, 不良が出れば不良件数や解決件数, 修正件数, ステップ数がわかれば目標とするテスト項目件数や発見不良件数…などと, 管理をするために必要な定量的なデータは山のように存在する. ただ, それを見ていないだけのことである.ーーソフトウェアという言葉に惑わされて.
この文章を立ち読みしたわたしは、すっかり開発者(として企画開発管理できた)気分になって浮かれたのですが。え、そういう見極めって…、どうなのよ?
ちなみに、2冊目は『プログラムをつくるとは? できるプログラマーの発想法』(←これもタイトルに惹かれたのはいうまでもないですが)。この本が読めたかどうかはまた今度。
わたしに適切な入門本をご存じの方はおしえてくださいね
業界の端っこに居る身としてちょこっと被せコメントをば:
本質的にはソフトウェアの開発も家を建てることと何ら変わらず、間取り、建坪などというものが、機能、開発規模などといったものに置き換えられているに過ぎない
この二つの比較はソフトウェア開発の特徴と管理面での落とし穴を浮き彫りにできる、という点で面白いと思っていまして、
建築に比べてソフトウェアは:
考慮すべき機能が多い
例) ユーザー登録は最後にメール送って本人確認がどうとか
例) 認証だとかセッションだとか、権限だとか詐称だとか
→設計難易度が高い、設計漏れのリスクが高い
→実装フェーズになって「ん?これ設計おかしい」的な作り直しや再設計がよく起こる=定性/定量ともに測量対象が途中で「ブレまくる」難しさ
そしてもうひとつ:
同じ機能を盛り込んだ設計でも、頭良い子のと、平均的な子のとで「定量値に軽く 4 - 5 倍の差が出る」→個人能力に依存し (これは建築も同じ)、かつその差が建築に比べて大きい
→大手 SI 企業はこれを逆手に取って、同じ機能でも定量値を増やして「工数/見積もり増」作戦を実践してる所がある
実装フェーズでも同じ。プログラムコードも「賢く簡潔に、素早く」書けるやつもいれば、同じ機能のコードを「冗長に回りくどく、時間を書けて」書くやつもいる。属人的かつ個人差が大きく定量測定が難しい。
そんな未成熟な (?) 世界。
だからこそ個人でも活躍可能なところが楽しいのですが。
そんな中、明るい未来を皆で作って行くための鍵を握るのが internet と open source なのかな、と信じていたりします。
ソフトウェア開発の現場感を知るのに適したオススメ本:
Joel on Software - Joel Spolsky
http://www.amazon.co.jp/dp/4274066304/
open source hacker 的なエンジニアマインドを知るには:
ハッカーと画家 - Paul Graham
http://www.amazon.co.jp/dp/4274065979/
長文失礼しましたー。
投稿情報: bashi | 2009/02/10 16:51