IT業界で気づいたことをこっそり書くブログ

くすぶってるアプリエンジニアが、日々気づいたことを適当に綴っていきます(受託→ベンチャー→フリー→大企業→ベンチャー→起業)

ベテラン+初級者の組み合わせは案外パフォーマンスが良いという話

f:id:otihateten3510:20200910230408p:plain

 

システム開発というのは非常に時間コストが掛かる作業ですが、何にそんなに時間がかかっているかといえば、試行錯誤や手戻りに時間がかかっているんですよね。
最初に見積もりする時はだいたい一本道の正解ルートを辿った時のコストで考えてしまいます。
しかし僅かな仕様の差やバージョン差などで、Aという方法で上手く行かないということがあります。それでBという方法やCという方法を試したりして時間が掛かってしまうわけです。

 

体感ですが、すんなり正解の方法をとった場合のコストを80だとすると、見積もりで100を提示します。予想から漏れていたタスクが30増えて、試行錯誤で30増えます。結果160くらいで60%くらい上振れることが昔は多かったです。

最初に思い切って80の2倍の160と見積もればよかったんですけど、中々難しいですよね。頭の中では正解のルートを選択している想定なので。

 

実際は、Aルート、Bルート、Cルート・・・とあって、どれかを選択し、やってみて、だめなら他のルートを試すわけです。もしこの正解が予めわかっていたら、つまり登るべきタスクと言う名の山のルートが分かっていたら、かなり時間コストは抑えられるわけです。

だから、ルートを分かっているベテランが初級者をフォローすると、思ったよりパフォーマンスが出ます。

 

もちろんこれはタスクの種類に依るでしょう。
試行錯誤するための時間コスト、正解を引き当てるまでの確率、ベテランと初級者の作業のスピード差などによって状況は変わってきます。
ただアプリ開発やWeb開発においては、あまりにも選択の連続であるため、ルートを知っている者と知らない者で大きな乖離が出てきます。
初級者はベテランからの指示を仰ぐことでサクサク進むことができるはずです。

 

ただこの方法をずっと続けて良いのかという疑問は少しあります。
試行錯誤して、ダメなルートで何度も痛い目を見ないと、初級者がベテランになることはできないのではないか?と思います。
でもだからと言って無駄なルート取りをして苦しでもしょうがないですよね。
試行錯誤がそもそも好きな初級者ならいいでしょうけど。

 

これはその初級者がどの組織やどのプロジェクトでやっていくかに依ると思いました。
例えば正解ルートの1つだけ選んで行けばいいプロジェクトや組織なら他のルートについて知る必要はありません。
例えば事業会社なんかではこうなるかもしれません。リードエンジニアがしっかり居る受託会社でもこうなるかもしれません。

一方で、誰かが書いたコードを読むためには、正解ルートは全部しる必要があるし、ダメなルートも網羅的に覚えていかなければなりません。自分が普段使用しているAという方法以外に、BやCでも解決可能ならば誰かがそれを使ってコードを書いているでしょうし。そうなるとルートについてかなり深くまで知らなければなりません。

 

  1. リードエンジニアが居て、フォローしてもらえる状態
  2. 組織の規模が大きく、ベテランが容易に見つかる
  3. 組織内でコードの書き方の規格が統一されている
  4. 組織は大きいが、プロジェクトによって書き方がまちまち
  5. 組織の規模が小さく、ベテランが見つからない
  6. フリーランスなど自力が要求される状況

1、2、3なら初級者はルートについて詳しくなくてもどうにかなります。
ただしベテランが抜けたらどうなるかはわかりません。あと3は初級者には判断がつかないかもしれません。
4はよく見かける状況です。初級者でも試行錯誤が必要になると思いますが、前任者へのアプローチが容易なのでヒントはもらえるでしょう。
5は試行錯誤が必要ですが、1個の正解ルートを見つけたらそれだけ使えばいいのでコストはそれほど多いわけでは有りません。
6は試行錯誤が必要なうえ、全部の正解ルートやダメルートも知る必要があるので、ルートについて網羅的に知る必要があります。

 

だからこれはその人が今後どういうキャリアにするかに依るんです。まずそこを考えないといけないですよね。

そんなことを最近思いました。

その人が攻める山のドメインを適切に絞るのが大事なのではないかと。