仕様書の無いシステム=一から作り直すべきシステム
システム開発後によくあるトラブルとして、後任システム開発者側にたって話をつづってみる。
私の現在置かれている状況の愚痴も少し含めて。
システム開発は出来上がった後の達成感が半端ない、それを一人で成し遂げたとなればなおさらだ。
脳の報酬系が刺激され、出来上がったシステムをわが子のように愛する。そのシステムを社内で共有しみんなが使ってくれる。
そうすると何故か自分のシステムを人質にしようと心の深い部分で考えてしまう。
開発者は分かりやすく調子に乗るのである。
会社のインフラ(基盤)システムを開発したのだからルール変更システム変更は開発者の手のひらだ。
これを既得権益という。
開発者は子(システム)離れをしないといけないのである。
※これは何処の会社でもよくある話なのです。システムの人質化と呼ばれています(ランサムウェアの事じゃないよ)
という前置きを押さえて次へ。。。
社内のシステム開発をする時、仕様書を作らないはた迷惑な開発者がいる。
仕様書の無いシステムの理解は熟練のプログラマーでも膨大な時間を要する。
一つの計算結果を出すのにも、データベースのどの値を参照しているか、1行のコードで値を出しているか、それとも10行使っているか、計算式はどうなっているか、はたまたリレーションはどうなっているのか、クエリの仕様は?ソートの仕様は?そのコードを使った根拠は?こういった部分は開発者の癖が出る部分だ。
だからこそ、なぜそのコードを使ったのか根拠も含めて仕様書にまとめる。
※仕様書の無いプログラムなど読む気もおきない。仕様書があるから未経験者でも学習がはかどる
※実は他人が作ったプログラムを仕様書無しで理解するというのは、一から作るより難解な場合がある
過去の開発者が残した仕様書を参考にさらに良いプログラムを作る、これをしなければ会社は発展しない。
常にゼロからのスタートになるからだ。
問題になるのは開発者が会社を去った時、あるいはプロジェクトから外れた時だ。
もしかしたらそのシステムにバックドアが仕組まれているかもしれない。
仕様書で整理されたプログラムは開発者の意図を読み取ることが出来るので、不要なコードの発見も幾分ましになる。
私が前の職場で働いていた時は必ず納品物として仕様書を作成して保管していた。
これらがあることによっていざ問題が発生した時にすぐに原因を調査出来る。今でもちゃんとやってくれていれば良いのだけど、、
※ネットワークインフラの場合
・進捗星取表
・すべてのネットワーク図
・IT資産一覧
・各IDやパスワードの管理
・LAN内-WAN内VPN見取り図
・ネットマスク図
・ネットワークconfig(ルータやスイッチの詳細設計)
これらの仕様書は問題が発生した時や変更を加える時、別の人へシステムを引き継ぐ時に必要になってくるからとても重要な事だ。
システムの仕様書を作らない=自分よがりの傲慢なシステムと言っても良い
それが社内共有のシステムならなおさらだ。
システム開発の場合も最低限下の仕様書は絶対だ。基本設計から詳細設計として仕様書にまとめる
・開発進捗までの星取表(下の図は例)
・基本設計(画面の構成などを含める) システムが出来た時点でのスクショでも良い
・フォームの設計仕様
・データベースの設計仕様
・クエリ・ソートの仕様
・コードの意図
現在私も会社のシステムを作っている下図は基本設計の一部としての星取表。基本設計から詳細設計までの資料は膨大な量になるが、これが無ければ困るのは会社や後の担当者である事を開発者は覚えておくべきだ。
理解できないほうが悪いは通用しないのである。仕様書の無いシステムは未完成システムだと思ってよい。
まあ困らせるため(システムを人質に自分を守るため)にあえて仕様書を作らない、、、という話も聞く
そんなやつはほっといて、まったく新しいより良いシステムを仕様書付きで作り直すべきだ。
※良い脳トレになるし、今はAIがあるから昔と比べてハードルは低い

自分はそうならないようになるべくわかりやすい設計資料を準備して、成果物としてシステムと一緒に納品しよう。手元から離れたシステムは適切に会社に主導権を握らせた方が良い。既得権益などいらん。
「おまえシステム作ったからって調子にのるなよ!」という自分に言い聞かせる為にメモしておく。

