未経験プログラマーの雑記

元個別指導塾運営者、現プログラマーによるブログです。教育や自身の学びについて発信していきます。

チームで開発する、ということ【プログラマーを目指す方へ】

プログラミングを勉強しはじめて1年3ヶ月、プログラマーになって9ヶ月ほどが経ったので、プロジェクトチームのメンバーになってプログラマーとして働く中で感じたことなどをまとめます。プログラミングを勉強していて、「実際プログラマーとして働くってどんな感じなんだろう?」と思われている方は、一例として参考にしていただければと思います。

 

1.チームメンバー内で分担してタスクをこなす

まず、当然ですがプログラマーの仕事にも、初心者でも出来る簡単なものから、ベテランじゃないと出来ないような難しいものまであります。

初心者にいきなり難しいものを振るようなことはおそらく無いですが、簡単なものでも最初は何もわからず、先輩に確認しつつやっていくことになると思います。

僕が入っているプロジェクトチームでは、ソフトウェアの開発を行っており、現在は製造と単体テストをメインでやっています。

設計も最近は少し任されるようになりつつありますが、基本は他の先輩社員が設計書を作成し、その設計書を見て僕が実際にコードを書く、というような流れになっています。

分担の方法としてはこのように、難易度による分担と、作業工程による分担の2種類がありますね。

 

作業ごとに納期が決められており、それをチーム内で分け合って、全員でこなしています。

個人としてではなく、チームとして作業を問題なく進められているかが僕のプロジェクトでは重視されているので、余裕がない人のフォローを積極的にするような流れが出来上がっています。

働きはじめてすぐに難しいタスクを任された時も、ありがたいことに先輩社員が22時頃まで残業して付き合ってくださったこともあり、ありがたかったですね・・・。

※それ以降、ほぼ残業をしたことはありません。

 

2.人が多ければ多いほど楽になるというわけではない

チームとして、複数人でプログラムを完成させていくイメージが、独学ではわかりにくいと思います。

例えば、Twitterアプリで例えると、ツイートを投稿する機能、ツイートを削除する機能、ツイートを表示する機能などなど、一つのアプリでもいろんな機能がありますよね。

そういう機能をアプリの部品として分担し、一つのアプリを作り上げていくイメージです。

一つひとつの部品ごとに、正しく作られているかをテストするのが単体テストですね。

もちろん部品が正しく作られていなければ単体テストで止まり、コードを修正して再度テストをして・・・の繰り返しになるので、

「確実に正しいコードを書ける人」と「正しくないコードを書きがちな人」だとタスクをこなすスピードが大きく変わってきます。

単純作業であれば、誰がやってもそこまで大きく作業スピードに変化が無いので人数を増やせばその分早く終わる、ということになりますが、そうならないのがプログラミングです。

結局どうにもならずに先輩社員に任せるにしても、どこからどこまでが正しいのかを確認して、どこから修正していけば良いかを確認する必要があるので、かなりロスに繋がります。

 

初心者のうちや、納期に多少余裕がある時ならこうなってもある程度許されますが、繰り返せばもちろん能力不足というレッテルが貼られ、自分に任されるタスクがどんどん減っていくことになると思います。

僕よりも後でプロジェクトに参加した社員が、3ヶ月経っても初歩的なタスクすら一人で正しくこなせず、結果としてプロジェクトを離れることになりました。

途中からその社員のフォローを僕が全部やっていたので、自分のタスクをこなしつつ、その社員の質問に答え、コードのレビュー(正しく書けているかの確認)をして、不備を指摘し、状況確認をして・・・というのは、なかなか大変でした。

オブラートに包まずに言えば、人数が減った今のほうが確実に楽に作業が進んでいます。

 

それだけ個々の能力も必要とされるので、初心者でもしっかり成長が求められる(じゃないと居場所がなくなる)、シビアな仕事だなと思います。

 

一刻も早く一人前になり、他のメンバーを助けられるようにならなければ、チームの中で必要性の低い人材(何かあった時に切られる対象)になってしまうのではないかと思います。

僕より後に入った2人の社員はどちらも切られているので、ただの予想ではなく事実に基づいた話です。

 

3.「何を作りたいか」は求められない

これは企業に入って、決められたものを開発する仕事に携わるなら、という場合です。もし自分でアイディアを持っており、それを作りたいという場合は、そういうアイディアを求められる会社に入らないと、「本当はこういうものが作りたいのに全然違う・・・」と、ギャップに悩むことになるかもしれません。

 

僕の場合は、何か作りたいものがあったわけではなく、実際の現場でプログラマーとして働いてみたいという気持ちだけだったので、そういう人にとっては良い環境だと思っています。(逆にアイディアを求められたところで、困っていたと思います)

ただ、実際にプログラマーとして開発に携わる中で得た知識を元に、「Webアプリを自分で作ってみたいな」という考えにもなりつつあるので、「とりあえずプログラムを書く経験」をすれば、僕のようなタイプでも少し先のビジョンや自分の興味関心が見えてくるかもしれないなと思います。

 

終わりに

とりあえず、色々なプロジェクトに当てはまりそうな内容を中心に書いてみました。

個人的には、シビアな仕事ではあるものの、だからこそ能力が付くまでは必死に頑張れますし、成長速度も独学の時に比べると段違いだなと思います。

また、プログラミングに長く触れている方々とコミュニケーションを取ることで、自分だけでやっていたら絶対に得られないような知識や考え方も得ることが出来ます。

半年の独学期間で得た知識の10倍以上の知識を実務の中で身につけることが出来たと思います。

 

実際にコードを書く経験もかなり積めたので、相当慣れることが出来ました。

なので、これからプログラマーを目指す方は、僕の経験談を読んでビビるんじゃなく、「大変かもしれないけど、その分成長して活躍出来る可能性もある!」と前向きに捉えてプログラミングの学習に取り組んでいただければ良いんじゃないかと思います。

 

プログラマーとしての仕事や、学習方法など、何か個人的に聞きたいことがありましたら、Twitterのリプライ等でお気軽にご質問ください。

最後まで読んでいただきありがとうございました。

 クボ@新人プログラマー (@natsumemix2525) on Twitter