僕がチーム開発を勧める理由
はじめに
こんにちは!
現役エンジニアのとくゆーです😀
ド!アーモンド!アーモンド!アーモ!!🐰
僕はProgakuというプログラミングコミュニティ(2023/10/04時点で134人在籍中)を運営しています。
コミュニティの取り組みの一つに、未経験/現役問わず「チーム開発」を勧めています。
そんな中、僕が何故チーム開発に携わることを勧めているのか、チーム開発をやってみての失敗談等を共有してみようと思ったので、今回この記事を執筆することにしました。
では、以下本編となりますー
チーム開発を勧める理由
未経験編
個人開発(ポートフォリオやスクール課題)をしている方は多くいると思いますが、プラスαでチーム開発に携わることで以下のメリットがあると考えています。
1. 他人のコードを読むスキルが培える
個人開発は良い意味でも悪い意味でも自分一人の都合のいいコードで進められるので、自分にとって一番読みやすいコードになりがちです。
ただ、業務になると他人のコードを読んで理解したり、修正する必要が出てきます。
転職後にコードを書くよりコードを読む方に苦労する方もちらほら見かけますので・・・😭
未経験のうちから他人のコードを読んで修正する能力をチーム開発で養うことで、他の未経験の人と差別化出来ますしエンジニアになった後にも活かされます💪
2. 模擬的に業務の流れを掴める
コード管理をGitHubで行っている人も多いかと思いますが、自分一人でならブランチもmainひとつでやってもIssue等立てずとも誰も困らないですよね。
ただ、他人と共同作業するとなると困ります。
一人一人に作業の割り当てがあるし、ブランチもちゃんと切ってPR出す必要もあります。
最低限でとーっても簡単に流れを書くと、
タスクを振られる=>開発=>PR=>レビュー(あれば)=>マージ(完了)
と言った感じなのですが、これは初めての業務レベル(ちっちゃい不具合修正とか?)の作業の流れに大体沿ってると思います。
上記の進め方はあくまで一例に過ぎないので、一緒にやる現役エンジニアのやり方も参考にするのも良いと思います。
後は、初めて他人とGitHubを扱う時ってpush一つでも緊張したりするので、少しでもプレッシャーの少ないところで経験したいですよねー
そういや、個人開発では基本的には現れないコンフリクトという初学者の大敵も現れたりしますので、これもぜひ早めに経験した方が良いです👿笑
3.コードレビューを受けられる
個人開発でのあるあるが、動くけどこれで書き方良いのかな?っていう疑問です。
チーム開発では自分のコードを客観的に見てもらいレビューを受けることで、一人では見えなかった視点や書き方を見つけられることが出来ます!
メンターに個人開発のレビューを受けるのも良いかと思いますが、同じサービス内だと現役エンジニアも仕様を理解しているのでレビューもしやすいという側面もあります👀
4.挫折しにくくなる
プログラミング学習は挫折率が高いです。
継続出来ないのは自分が甘いとか弱いとかそんなことだけじゃないです。
必要なのは、継続しやすい環境です。
継続しやすい環境とは自分一人ではなく、他人と頑張れる環境だと思ってます。
一人で学習するのではなく他人を巻き込んで学ぶ(開発する)ことで、自身のモチベーションを上げて挫折率を下げる方法も良いかなっと!
歴数年の現役エンジニア編
会社では出来ないポジションに立ったり、他人と1から技術選定や環境構築等を考える機会が得られるのが大きいポイントだと思います。
1.プロジェクトリーダー経験を得られる
まだ経験の浅いうちはPJ内では会社の先輩等がリーダー等を務めてるパターンが多いですよね。
ゆくゆくはそのポジションに立つことになると思うので、今のうちに模擬的にPJリーダーをやってみるのも良いかなと思います。
自分が開発メンバーの一人なのと、自分がチームを牽引するのはまた違った大変さがあります。
そこを実際に経験すると、上司の苦労も分かったり分からなかったり・・・w
後は、業務内でなくてもリーダー経験というのは転職活動時の話のネタになります🙌
2.レビュアーになれる
普段はレビューされる側が多いと思うのですが、チーム開発ではレビュアーになる機会に触れられます。
レビューすることで、より他人のコードをちゃんと読んで理解する必要が出て来るので、新たな学びやスキル向上に役に立ちます。
未経験の方を後輩に見立てれば、実際に後輩が出来た時の教え方や育成の練習にもなりますね!
自分の失敗談
継続することが結構難しい
いくつかチームを作ってきましたが、実際問題中々ゴールまで辿り着くのが難しかったです・・・
良い意味でも悪い意味でも、仕事では無いので強制力は皆無です。
そんな中、
・学習やスクール課題に忙しい
・業務が多忙で時間が取れない
・転職成功してそれどころじゃない
などなど人は急に忙しくなったり、あまり余裕がなかったりします。
そのため、途中で自然消滅してしまうということが発生しました。
一人が頑張ってやっても結局それは個人開発になっちゃうんですよね・・・
この反省を生かして、今スタート切ってるチーム開発は「無駄な機能は省いて時間をあまりかけずに完成を目指す」をテーマに始めました。
サービスが100%完成することなんて、まぁ無理な話で最低限の機能を実装して動くものが出来るのをまずはゴールとする。
その後で、余力があれば色々機能拡張して行ったり、違うテーマで取り組んだりとしていくことで自然消滅というのを防ごうと今取り組んでいます!
メンバー集め
今の開発はRails+Next.jsで開発していますが、人によってはReactでやりたいとかPHPでやりたい等と言ったことが出てきます。
そんな中、同じ技術で開発する人を複数人集めるのは簡単では無いなと思いました。
もちろん、X等のSNSで集めるのも良いと思いますが、見知らぬ人といきなり一緒に開発するのって結構ハードル高いですし、継続も難しいのかなって。
ここら辺は、コミュニティ運営者としてメンバーを増やしたり声掛けすることで解消していかなきゃなって思いました。
総括
主にチーム開発に関するメリット等書いてきましたが、一番はみんなで楽しく開発することです!!!
仲間と色々考えたり話しながら、一つのサービスを作るのもプログラミングの醍醐味の一つだと思います。
学習や普段の業務をしている中で、プログラミングが辛いとか嫌になる瞬間が訪れますが、そんな時こそプライベートで楽しくプログラミングして尚且つスキル向上出来れば良いよねってお話でした!
この記事を読んでチーム開発に興味を持った方、チーム開発したいけどメンバーがいない等あれば、自分のXのアカウントがあるのでDMやリプして頂ければと思います😁
Discussion