プログラムの設計段階で失敗したこと

振り返ってみると「こうすれば良かったのかな」と思うことがあったのでメモ。

 

①設計時に今後の芯となる内容が決まっていなかった
本当の「最低限必要な機能」が決まらないまま、この機能は必要かあの機能は必要かという話が始まってしまった。
例えば「画面に入力した文字列を、別の画面に出力する」という機能を実装しようとしている時に、「出力後のデータをソートする場合がある」や「CSVに出力したい時がある」などの、使うかもしれない機能の話が始まってしまったような状況だった。
主な原因は、営業側に話の主導権を握られてしまっていたことと、設計側の責任者がいなかったこと。
前者はそのまま、あれもしたいこれもしたいを真に受けてしまっていた。後者は前者の状況を作り出す原因になっていた。
営業側が言うことに「NO」といえる人がいなかったため、営業側の立場が上になってしまった。
営業の意見を聞くことは大事だが、それをもとに仕様上の課題や画面イメージを考える段階では営業を同席させるべきではなかった。
実際は営業と開発の両方に足を突っ込んでいる人が担当だったから嫌でも同席されることになってしまっていたかもしれないが、そういった提案をすべきだったかなと。

②個人スキルの差が大きいことに対する考慮
工数を算出する時、コーディングをする時に、スキル差を考えていなかった。
正確には、考えていたが問題ない程度だろうと思っていた。
結局予定工数の2倍かかってしまってバッファを食いつぶしたり他の人が他の人がフォローに回ったり。
実はこれ、①の内容が影響してさらに悪化した。今までに使っていない言語やツールを使うだけでも差が出るのに、前述のあれもしたいこれもしたいによって実装する機能が増えたり変更されたり。
それに比例して目に見えて進捗差ができてしまった。その差はもはやチームとして成り立たないレベルに達してしまった。

 

どちらも基本的なことで、こういったところで失敗するとうまくいかないのだと実感した。