意図した通りに動いてくれない時がある

先週の初めから開始した新しい開発で、ある試みをしましたが見事に失敗しました。

必用とされるプログラムの骨格を全て作り、虫食い状態で発注したのですが、中身が想定外の作りとなっていました。「別のサブシステムと同じ処理だと思ったので、そちらのをコピーして作りました」とのこと。

プログラムの骨格はそのままですが、虫食い状態だった部分が想定していた作りと変わってしまいました。インプットとアウトプットは固定済み。だから処理もこの流れでいくだろうと思ったら、違う流れに変換され処理されてしまいました。これは本当に想定外でした。これだけ道筋を示せば、間違いなく予測された道を通るだろうと思ったのですが駄目でした。

意味不明に説明すると「A→[穴]→C」という状態で出し、穴は「B」にしてねとお願いしたのですが実際は[穴]=[AをXに変換「X→Y→Z」ZをCに変換]となっていました。確かに[穴]部分以外はそのままなのですが、そもそもBがYとなっていて、YのインプットがXであるからAをXに変換。YのアウトプットがZであるから、ZをCに変換という風になっていました。

「A→B→C」を想定していたのが「A→[AをXに変換「X→Y→Z」ZをCに変換]→C」となってしまったわけです。結果は同じですし、別プログラムのコピーで処理を作っているので時間が余計にかかったわけでもありませんが、ちゃんと手順をコントロールできなかったのが今回の失敗です。

半分ちょっとの工数で仕上げたはとてもうれしかったのですが、これから正しさを検証し余計な贅肉を落とす作業を指示しなければいけなくなりました。結果的には最初にたてたスケジュール通りになり、前倒しも更なるコストダウンもできなくなりそうです。

指示より楽であり正しいと思う事を優先する事がある。その正しさは設計者や管理者の言う正しさではなく、作業者の思う正しさである事がある。

悪く言えば指示を無視したになりますが、全てが全て指示をしたわけじゃありません。[穴]はプログラマにまかせた事でもあります。ただ、[穴]の処理が意図したとおりになるように段取りをしたつもりでしたがそれが通用しなかった。もっと言えば意図した通りに全体を誘導できなかったのが残念です…。かならずレールに沿って作業してもらうためにもっと考えなければいけないようです。

損害を与えるような大失敗ではありませんが、失敗は失敗です。全然納得がいかないのでもっと考えてがんばりますっ!!