優秀なManagerとそうでないManager
後輩と話していたのですが、優秀なManagerって
その人自身、優秀である必要は無いと思うわけですよ。
技術的に優秀でなくても、下の人にまかせられればそれでよい。と。
そのかわり、仕様の変更とか、決定事項の変更とかで下の人の作業に影響が無いように配慮する。
これが大事だと思うわけです。
これをコードで書くとですね。
public class 優秀なManager優秀な顧客{ public 成果物 仕事する(顧客の要件,スケジュール,必要なもの,...){ ................ 下僕 geboku = new 下僕(); 成果物 hoge = geboku.仕事する(要件,スケジュール,必要なもの,.....); return hoge; } }
となります。メソッドの中身はどうでも良いんです。
渡してくれる引数の型が決まっていれば。
public class優秀でないManager優秀なManager{ publicObject成果物 仕事する(Object1,Object2,Object3){ .............. //ここで下に渡してやるときにキャストしてやるのが優秀だと。 Object hoge = geboku.仕事する((要件)Object1,(スケジュール)Object2,....); return (成果物)hoge; } }
これらのメソッドの中で呼ばれるわれわれ下僕クラスにとって
どちらがほうがよいかおわかりでしょうか。
やること決まってる方がやりやすいよねぇ。
なんだかわからんObjectをわたされても、実行時にキャストエラー起きるかも知らんし。型が決まっていれば、こちらもやりやすい、と。
で、優秀でないManagerは何返すべきかもわかってないんですよね。
そうすっと、こっちも何返せば良いかわかんないし。
あーもう。わかるかなー。わかんねーかなー。
要するに、Managerは上から来る仕様、状況の変化から、下を守れ。と。
※追記
上はよくわからなくなったから気にするな。で、下が優秀なManager。
優秀でないのはたぶん、
public class 優秀でないManager{ public Object 仕事する(Object1,Object2,Object3){ .............. //ここで下に渡してやるときにキャストしない。投げっぱなし。 Object hoge = geboku.仕事する(Object1,Object2,....); return hoge; } }
って、下に渡す仕事の型が一定してないんだ。きっと。