はじめに
今の保守プロジェクトは開発メンバーが僕一人だけです。
(正確には、サポートとしてプロパーの方が1名、PMとしていらっしゃいますが、実作業を担当しているのは僕一人です)
色々なエンジニアブログや記事を見ていて思っているのが、
5~10人規模でチーム開発しているケースが多い と感じたことです。
実際、一人で開発しているプロジェクトってどのくらいいらっしゃるのでしょうか?
今回は、一人で保守プロジェクトをしていて思っていることをつらつらと書いていこうと思います。
本記事で書かれている内容は、あくまで個人の感想です。
今やっていることの簡単な紹介
僕自身は、SESとして派遣先で作業をしています。
(プロパーがPMとして1名、開発に僕1名)
保守しているシステムをざっくり話すと、Androidアプリの保守をしています。
ただ、アプリをインストールする端末が少々特殊で、Android API Level 17のアプリです。
(Android 4.2です。ちなみに現時点でのAndroidOSの最新バージョンは15。かなり古い・・・)
僕がやっていること
- 機能追加要望を整理して、機能仕様レベルまで落とし込む
- 機能追加にかかる工数の見積もり
- 開発スケジュールの策定
- 開発作業
- 機能設計
- 詳細設計
- 実装
- 単体テスト(ユニットテストを採用しています)
- 結合テスト(テスト仕様書を作って実際にシステムを動かしてテストする)
- リリース作業
(結合テスト以降のテストは、別のチームで実施しています)
工数見積もりの結果によってはスポットで1名メンバーが入ることはありますが、
基本的に僕一人で開発しています。
各開発作業での成果物は、PMとレビューしています。
メリット
裁量権があるので仕事が進めやすい
一番のメリットだと思います。
ある程度、自分で仕事をコントロールできている感じがあります。
実際に作業するのは自分なので、工数見積り時と作業時で大きなズレも起こりづらいです。
スケジュール策定も、ある程度自由に組めます。
作業メンバーが一人なので、WBSを引くのがすごく楽です。
(ほかメンバーの担当実装が終わらないと、次に進めない みたいな事がない)
実装でもクソコードが目についたらサクッと修正したりできるのもいいですね。
(ほかメンバーにコンフリクトが起きないか、いちいち確認する必要がない)
コーディング時にコンフリクトが起きない
ソースコードのバージョン管理はGitHubを使っているのですが、
複数人で開発をすると避けられないコンフリクトですが、こいつに悩まされることがないのは大きいと思います。
ストレスが少ない
これは人によるかもしれません。
僕の場合、誰かと一緒に作業することにある程度のストレスを感じる人間です。
その人とどうしても気が合わなかったり、作業分担でどっちが難易度の高いタスクをやるか牽制し合ったり、
クラス設計と一緒で、関心を持つクラス(相手)が多いと複雑になってきますしね・・・。
人間関係がストレスフリーなのは、かなり大きいと思います。
デメリット
複数メンバーでのチーム開発経験が詰めない
個人的に一番のデメリットだと思っています。
チーム開発独特の問題・課題があって、
それをどうやって解決したか、克服したか、
また、ほかメンバーとのコミュニケーションだったり
そういった経験が積めないのはキャリアとして不利なのでは?と思ってしまいます。
でも、ある意味一人での開発では出てこなかった問題に直面するので、
ストレスは増えるかもしれませんね。
ただ、間違いなく自分の糧にとなる経験になると思います。
尊敬できるメンバーがいない
一人で開発しているので、他の人の作業内容が見えません。
他の人が書くコードを見る機会も少ないので、他人からの刺激が少ないと感じています。
特にコーディングに関して、技術的な話ができる人がいないとさみしいですね。
実装・バグで困った時に頼れる人がいない
これも大きなデメリットだと思います。
このあたりで躓くと、かなり技術的な部分なのでPMのサポートも受けづらいです。
今はChatGPT等のAIによるコーディング支援を受けられるので、
AIが出てくる前と比べて楽になりましたが、一人でもある程度の問題を解決する力が問われると思っています。
最後に
一人で開発する期間が長くなってきたので、自分のキャリア振り返りの意味も込めて書いてみました。
結局、個人開発・チーム開発どっちがいいか は人それぞれだと思います。
チーム開発だと人と関わる機会が増えるので それがモチベーションになる人もいれば、ストレスに感じる人もいます。
ただ、どちらにも言えるのが、1つのプロジェクトに長くとどまっているとどうしてもマンネリ化してしまうことですね。
個人的には、今使っている開発環境がかなりレガシーなので 新しいものに触れたいとは思っています。
(最低でもJava8で開発したい・・・)
ここまで読んでいただき、ありがとうございました!