Jの衝動書き日記

さらりーまんSEの日記でございます。

プロマネのお仕事を考える

engineer.crowdworks.jp

 上記の記事を読んだ。なかなか面白い記事だった。もちろん自分もマネージャーやれと言われたら嫌がる方だ。だが、エンジニアとマネージャーの問題は40過ぎのおっさんエンジニアにとっては切実な問題でもある。そこで少々考えてみたい。

エンジニアのお仕事とマネージャーのお仕事

 ここでいうエンジニアとはプログラマーのことで、マネージャーとはプロジェクトマネージャーのことだ。
さて、両者の仕事を簡単に言うと

  • マネージャーのお仕事はコミュニケーションを通してエンジニアに効率よく仕事をさせること

ということになる。

仕事のやり方としては

  • エンジニアは効率よく仕事をするためにツールを作成したり持ってきたりして仕事をする
  • マネージャーはエンジニアに効率よく仕事をさせるための環境を作る

だったり、

  • エンジニアはフレームワークの組み合わせで適切なものを考え利用する
  • マネージャーはエンジニアの組み合わせでて適切なものを考えチームを作り上げる

だったりする。

 ふむ。こうして並べると相手がコンピュータか人間かなだけでやっていることはエンジニアもマネージャーも同じなのではないだろうか?

 

では、何が嫌なのか?


 コンピュータはエンジニアが要求した通りにしか動かない。振る舞いが意図したものと異なっているのは、要求方法が間違っているか、想定外の使い方をしているからだ。問題は明快だ。
 一方、エンジニア(というか人間)は要求した通りに動くとは限らない。プログラミング言語にあるようなAPIは基本的に非公開であるし、あるように見えても相手によって振る舞いはコロコロ変わる。同じ使い方でも相手の状況で振るまいが激しく変わったりする。しかも同じ条件下でも異なる場合がある。理不尽なものである。
 当たり前だが、コンピュータと人間では大きく違う。だが結局のところ何が嫌なのだろうか? 

 それは人間はデバッグできないからなのではないだろうか。

 コンピュータは何度同じ要求をしても嫌がらない。また相手を怒らせても(エラーなど)何度でも繰り返し実行できる。気兼ねなく実行できる。気遣いなど必要ない。
 一方、人間は相手を怒らせた後のリカバリ処理がとても大変である。何度も繰り返し試してエラーを起こす(怒らせる)ことなどできないし、地雷を踏んだら最後、二度と実行できないということもあり得る。
 エンジニアにとって相手を知るという行為はデバッグであるわけだから、それができない相手は嫌なのだ。

マネージャー向きなのは?


 逆説的にいうと、マネージャーに向いている人はこの人間デバッグ(要するに人間観察)が上手い人ということになる。デバッグ的行為を相手を不快にさせない程度に上手くやれる人がマネージャーに向いている。
 また、製品・サービスを作るのがエンジニアの醍醐味だが、それを作るためのチームを作り上げるのがマネージャーの醍醐味というのもある。製品を作るのはエンジニアしかできないかもしれないが、一方それを作るためのチームづくりというのはマネージャーしかできないものなのだ(兼任できるのは変態的な超人だけである)。
 モノを作成するためのモノを構築するのがマネージャー。ならばエンジニアと言えるのではないだろうか。
 もっとも、マネージャーに増員・環境手配などチーム作成のための裁量権が与えられていないと悲惨ではある。

 また、最悪なケースがある。それはプログラムを書いたことがないような人間がマネージャーをやることである。悲劇でしかない。理論を学んでいるとよりたちが悪い。そういう意味では、プログラマーの次のステージがマネージャーというのはある意味妥当だとも言える。お願いだからいきなりは辞めておくれ。
 個人的にはプロジェクトマネージャーの理論は勉強しておいて損はないというか、するべきではあると思っている。
 だが、一度もそれを体験する立場にならないまま適用するのはハッキリ言って百害あって一利なしだ。理論で目的を知り実践するというのが理想だとおもう。くれぐれも理論を学んだあとに実践させるとはならないように願いたい。