#はじめに
エンジニアになりたての頃や、未経験転職からエンジニアを目指すなどの際に
友人とチーム開発をしてプロダクトを作ろうとされる方がいらっしゃると思います。
ちゃんと行うことができればとてもいい経験で、たくさんの学びがあります。
一方で、自分もこれまで友人とのチーム開発を実施し、うまく行ったことやいかなかったことがあるので
その背景を伝え、同じ失敗を繰り返さないように、アドバイスできる記事になればと思います。(__)
重要な前置き
※本記事は、比較的実務系経験が浅いかつ、趣味でのチーム開発を想定します。
※これまで一緒にチーム開発をしたメンバーには本当感謝しており、悪く言うつもりは一切ありません。自分の学びとして、こう言うふうにすべきだったと言う反省を記録したいと思い、まとめてあります。
失敗の原因と結果、今度どうするか?
失敗の原因とどうなったか、そしてその対策を端的に示します。
-
最初に目指すものが大きすぎた
初心者が多い中で、フロントエンドやバックエンドチームなどを分けたり、たくさん経験したことのない技術を選定した結果、要件定義だけで終わってしまうなどのことが起こりました。さっさと手を動かす開発をすべきだった。 -
スケジュールが長すぎた
余裕を持ったスケジュールにしようとするがあまり、予定する期間が長くなってしまい、途中でだれてしまった。ここまでにリリースをする、間に合わなかったら解散するorバッファを作って絶対にここで終わらせるなどを決めるべきだった。 -
それぞれの意思がバラバラだった
人によって本業に集中したかったり、本気でチーム開発に全力を注ぎたかったり、参加理由はバラバラです。熱量とも言えると思いますが、それがバラバラだったために、途中抜けしてしまうメンバーがいました。(原因は他にもあったかもですが)最初に、やり切る意思やモチベーション維持の方法を考えるべきだった。
やっておいてよかったこと、今後もやる場合はおすすめの方法
-
1人ベテランの方や、慣れている方に参加してもらう
その人におんぶに抱っこにならないようにすることは大事ですが、本当に全員が詰まった時に相談できる人を開発メンバーとして入ってもらうと良いと思います。全員の学びも増えますし、本当に詰んだ時に救われます。 -
ベースは全員が慣れているフレームワークや言語を選定する
何か新しいことをチーム開発をきっかけに学ぶのは良いことですが、全員が知らないものをベースにすると、キャッチアップも必要ですしコードがカオスなことになります。あまりにも言語特有のエラーにハマってもモチベーションが下がってしまうので、ベースは全員が慣れているものにして、ちょっと学びになるものを盛り込む方が良いと思います。 -
開発環境とGitFlowやプルリクなどのテンプレを整備する
OSの違いで最初にストレスを生んでしまうことは避けたいです。(3人Macで1人Windowsで、Windowsの人がエラー多発して寂しい思いをするなど...)Dockerなどを駆使するのも良いでしょう。また、コードを書く以外の部分に関しても最初に整備をしておき、気持ちの良い開発フローを作っておくのが大切だと思いました。 -
完成後にどうするか、運用のお金を含めて最初にゴールを決める
完成が一つのゴールですが、やっぱり作ったら運用してみたいと思うのも自然です。誰が運用するのか、お金は誰が支払うのか、万が一大きな問題が起きた時にどう責任を取るのか、そういった開発完了後のことも想定しておいた方が、後々トラブルがないと思います。
まとめ
もし、自分が友人とチーム開発をするとしたら、以上のことに気をつけて行いたいと思います。
友達とのチーム開発は楽しく、学びも多いと思いますが、やっぱり限られた時間を投資してみんなで行うものだと思います。
仲良くトラブルなく開発を進めるためにも、相手のことを思いやると同時に、最初に決めるべきところはがっちり決めるのも大切だと考えています。