技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

相手の拘りに合わせて柔軟に計画を変更する

計画を策定する場合、自分に最終的な決定権がないという状況が往々にして起こり得ます。
具体的には、取引先や上司、先輩、プロパーの決定に従わざるを得ない、ということは少なくありません。
 
このような場合、自分が推す案に拘り、無理に押し通そうとするのは賢い判断ではありません。
組織の中で仕事をするにあたっては、自分の方が折れて相手に従う方が賢いです。
 
しかし、自分が異なる案を推しているということは、相手が決定した案には何かしらの問題があることに気付いているはずです。
相手の決定を覆さない形で、問題を解消する別の方法を提案するのが賢い判断になります。
 
----
 
例えば、データベースの設計方針で、外部キーを使うかどうかを検討しているとします。
外部キーを使用した場合、データ不整合(親テーブルに存在しない項目が子テーブルに存在する)をデータベースの機能により防ぐことができます。
しかし、テストデータを作成する時やデータを修正する時に、子テーブルを先に挿入・更新できなくなるケースがあり、利便性が下がります。
 
ここで、自分が外部キーを使用するべきと考えているのに対して、決定権がある相手は外部キーを使用するべきではないと考えているとします。
この場合、相手に合わせる形で外部キーを使用しない方向で考えつつ、外部キーを使わなかった場合の問題を解消する方法を別に考えるのが賢い判断です。
 
子テーブル・親テーブルを挿入・更新・削除した際に、最終的にデータ不整合を防ぐことができれば良いので、設計・製造・テストや運用の担当者向けに、どのテーブルとどのテーブルが親子関係にあるのか、親子関係を示すキー項目はどれか、というのをドキュメントに残し、整備・展開し、各自で気を付けてもらう、という方法が考えられます。
また、各自で気を付けても、ミスによりどうしても不整合は発生し得るので、定期的に親子関係が失われたデータを発見するプログラム・スクリプトを走らせるのも良い方法かもしれません。