銀色うつ時間

思い出すたび何か胸につっかえてるだけ

マネジメントは難しい

マネジメントは難しい。

得体の知れないプロジェクトという怪物に対して、有用なアプローチを見出し、いかなる手段を用いても遂行しなければならない。考えるべきことは山ほどある。プロジェクトのスケジュール管理、非エンジニアとの企画検討、要件のヒアリング、仕様策定。差し込まれる割り込み案件、実装すべき機能のタスク化、ブレイクダウン。設計・コードレビュー、チームの技術力底上げ、メンバのモチベーション管理、その他雑用、ドサ回りに至るまでもがマネジメントに含まれる。

『Team Geek』を読んで共感する部分もあったが(HRT原則は本当に心がけるべき)、違和感を拭えないのは、メンバを「信じて、任せるべき」であるとする部分だ。チームとしての総合力が突出して高くない且つスケジュールがタイトな現場に於いては、これは当てはまらないと感じている。

マネジメントには頭と時間を使う。仕様策定やアプリケーションの設計など、考えるべきことは山積みであり、これらに考慮漏れや曖昧さが含まれると、プロジェクトは滞り、メンバは曖昧な要求に対して不満を持ち、最終的な成果物の価値も落とす結果になる。マネジメントを行う者は「考える事」と「論理的思考に基づき決定すること」に頭と時間を可能な限り費やすべきだ。また、睡眠不足や疲労が蓄積している場面では、適切な判断が下せないので、自分は手を動かさず、極力休息を取る必要がある。マネジメントと実際に手を動かす作業をそれぞれ充分に遂行するのは、非凡な人材にしかできない。ので、「信じて、任せるべき」なのである。

しかし、それではうまく回らない。プロジェクトに対して、決められた納期(あるいは、求められるスピード感)で曖昧な要件の中で仕様を固め、品質のよいコードを書くことができる人間ばかりではない。むしろ、自分も含め大抵の人が充分にそれをこなすことができない。原因は無数に存在する。曖昧な仕様を積極的に解決しない、スケジュールを意識せず永遠に設計について思案する、そもそも要求を満たしていない、エラー処理など、考慮漏れがあまりにも多い、等。

「ただ単にお前が無能なだけではないか」といった意見はごもっともである。これらは、冒頭で挙げたマネジメントが全て解決する。メンバ個々人の性質に応じて、仕様を細かく固めてから依頼することであったり、当事者意識を持たせるためのモチベーション向上であったり、経験不足や細部の曖昧さをテストコードを書かせることで補ったり、等のアプローチが考えられる。だが、同時に複数ラインで様々なことが進行する中で、全てに対して適切な処置を施し、判断を下すことは中々に難しい。毎日、気がつけば深夜だ。

マネジメントする者自身が充分な実力をつければ、様々なことが解決する。必要なのは、自分の頭が充分に冴えたコンディションを維持できる時間を確保することだ。仕様決定や設計は、論理的思考とソフトウェア設計の知識および経験を培えば時間は削減できるし、数時間かかるようなコードレビューも、テスト環境が充分に整備されていればコードレベルのバグ等は担保され、人間が気にするべき設計や要件を満たしているか、といった部分に注力できる。しかしながら、中〜大現場なソフトウェア開発の現場では、古いライブラリや複雑なコードに縛られてそういった改善を行うのが大きなコストになっていたり、次々に来る要望と既存システムの保守運用に対応するのに精いっぱいだったりして、中々うまくいかないのも現実である。そういった事情の上で、「信じて、任せる」ことができるのなら喜んでお願いするのだが、実際には厳しかったりする。

故に、結局は自分の手を動かすことで解決する。

これは純粋に人が足りない、ということの証左でもあると思うが、「人が足りない」という言葉の裏には一部甘えだったり、自分の未熟さを認めるような響きを感じていて、敗北感を感じる。簡単には音を上げたくない、といった個人的心情もあるのかもしれない。また、コードを書く時間を確保したい、という心情もそれに交錯する。弊害として、作業内容が曖昧なままだったり、仕様の考慮漏れなどが発生して、メンバの作業を停滞させるし、今ひとつチームの開発効率が高まらない結果を産む。

結局のところ、問題はマネジメントする者自身にあるのだろうと思う。適切なマネジメントと、コードを存分に書くことは両立しない。両立させるためには、頭と時間、確かな技術力が全て必要なのだ。それを持たざる者は、コードを書くことを優先してはならない。プロジェクトを成功に導くことが至上命題だからだ。しかしながら、自分がマネジメント専業となるには、まだ早過ぎる。

Team Geek ―Googleのギークたちはいかにしてチームを作るのか

Team Geek ―Googleのギークたちはいかにしてチームを作るのか