思うところあって、今まで自分がやってきた仕事を棚卸ししてみました。26年以上会社勤めをしてきて、そのうちの20年以上がソフトウェアの開発に携わってきた、それは分かっていました。
その中でも自分は”アプリケーション・ソフトウェア・エンジニア”だと思っていました、その部分だけ少し思い違いがあったようです。確かにアプリケーション開発に携わったことが多いのですが、その中でも特に”API”と呼ばれるインターフェイスの開発が多いのです。もちろんどれも仕様設計からの開発です。
自分が設計した”API”が良いものだったのか、そうでなかったのかはわからないし、ここでそこに触れるつもりはありませんが、”API”を開発する上で常に気をつけていたのは、役割分担です。どこまでを”API”がサポートし、どこからをアプリケーションが実現するのか。”API”で多くを実装すればアプリケーションは楽になりますが、融通の利かないものが多くなるし仕様が増えるごとに”API”の追加が必要です。
“API”が簡素だとアプリケーションの負担が大きくなる、難しいところです。
この役割分担を見極め、バランスの良いところを見つけるために、自分は自分の作ったAPIを使ったサンプルアプリケーションを作ることをしてきました。もっとも、アプリケーションは外注のことが多くて、”API”の使い方を指導するためにも必要だったという事情もあってのことですが…
サンプルを作ってみると、色々な問題点が見えてきます、どこに分担のポイントを置くかでも悩みます。でも、そうやって相手の領域に踏み込むことで見えてくるものなのです。でもこれじゃダメだなぁと思った時は、コーディングのし直しもしました。場合によっては、既に外注さんが作っていたアプリケーションのコードを私が書き直したことすらあります。
もちろん、ソースコードの書き直しはリスクを伴うのでそれはそれで褒められたことではないですが、将来的に不備のある”API”のまま開発を進めるのも、それはそれで不具合の元ですし…
ここまでは”API”開発の場合の話ですが、”API”の開発に限らず私たちの周りには役割分担をどう決めるのか?が重要なことがたくさんあると思います。役割分担のポイントをどこにおいてバランスを取るのか?がとても大切なケースは多いです。
そんな時、自分のゾーンの中にいたままでは適切な役割分担を決めることは難しい、どうしても自分の都合の良いようにしてしまうから。なので、すべての役割分担を決める局面において、どれだけ相手のゾーンに入れるかが適切なバランスを確保するためには必要かなと思います。
相手のゾーンにどれだけ踏み込めるか?相手の気持ちにどこまでなれれるか?そして自分が負うべき役割は何か?相手に求めるものは何か?そこにお互い合意できるか?そして最終的に合意するか?ここまで出来れば、適切なバランスが出来、最適なパフォーマンスが得られると思います。
これからも役割分担を意識して、balanceを意識していかないと、その考え方は自分に備わっているはず、そう思いました。ここを活かしていかなければ!!