ランサーズ(Lancers)エンジニアブログ > インターンシップ > ランサーズでインターンをして感じたプログラミング学習における個人とチームの違い

ランサーズでインターンをして感じたプログラミング学習における個人とチームの違い

垣井駿努|2018年12月08日
インターンシップ

CREチームの垣井です。
Lancers(ランサーズ) Advent Calendar 2018 8日目の記事になります。

昨日の記事はSREチームの金澤さんが書かれたWordPressのプラグインを改造して本家に取り込んでもらおうと思った話でした。

まず自分のバックグラウンドを簡単に

現在ランサーズ株式会社でインターンをしている、大学年生のエンジニアです。
プログラミングを始めたのは今年の3月からで、Rubyを勉強し始めました。僕が住んでいるシェアハウスにエンジニアの方が住んでおり、ちょくちょく助けてもらったりしていました。
勉強を始めて4ヶ月後に自身初のwebサービスをリリース。ですがほぼ使われず。

そこから学校を休学し、インターン先を探しながら、2つ目のサービス「回答箱」(https://respon.me)
を今年の10月にリリース。こちらはtwitterにてだいぶ使ってもらえました。

ある日知り合いの人に誘われたエンジニアの勉強会に行くと、ランサーズで働いてみないかと誘われ現在に至ります。

この記事を書く経緯

ランサーズでインターンをはじめて3週間たちましたが、その中でAdvent Calendarというものに参加することに。自分が参加してもいいのかという感じでしたが、せっかくなのでインターンをしてから感じた、個人とチーム(ただしリモートは除く)での開発体制の違いなどについて書こうと思います。

「今までスクールにも通わず一人でやってきて、チーム開発やったことない。」、「チーム開発をこれからやりたい!」みたいな人が参考になるかと思います!ランサーズにインターン生として入社した方もこれを見れば少しでもランサーズについて分かるかもしれないです!

1. 個人はハマるとつらい&寂しいが、チームは安心できる

個人

Ruby on Railsの環境構築が終わって数日後(5月初旬くらい)、シェアハウスに住んでいる僕の先輩エンジニアから「DBはPostgreSQLを使うといいよ!」と言われ、よく分からなかったが素直に従い導入してみることに。

結果から言うとここで2週間くらいはまる。エラーの嵐。しかもエラーの原因を先輩に聞いても「そんなもんよ!がんばれ!」と返される。もともとこの方のスタンスが「エラーは自分で対処しないと身につかないよ」みたいな感じだったので、学校も通っていたこともありあまり聞けず、気づけば2週間経っていた。

独学はここが辛い。何度修正してもエラーが直らないことがよくある。じきにそれが嫌になって開発をやめてしまう方がいるのも頷ける。僕も2週間のうちの最後の一週間は3日くらいしかパソコンに向かっていなかったはず。

チーム

それに比べてチームの場合。ほんとに助かる。今5人くらいのチームでやっているのだが、全員やさしい。驚くほどやさしい。聞いたら全部答えてくれる。申し訳ないくらいに。「そんなもんよ!がんばれ!」などと言わない。まあ仕事上できない人をほっとくと進まないので教えてくれるのかなあと思ったが、ランサーズには「チームランサーズ」という助け合いの心みたいなものが行動指針としてあるようで、自分としてはすごく入っていきやすかった。ただ、質問のしすぎは良くないので、個人でやってた時に自分で考える癖をつけられていたのはよかったのかもしれない。

チームの利点はリアルタイムに聞けること。ここがチームで動く主なメリットだと思う。今までは先輩にスラックで問題点を投げて、それに答えてもらうという形だったのでどうしてもラグがあったが、それがチームだとすぐにレスポンスが帰ってくる。

(と、ここまで書いて気づいたが、これプログラミングスクールも一緒だな笑)

2. チームはGithubをものすごく使う

個人

ただ保存するだけ。エンジニアのポートフォリオ的な立ち位置。

のイメージ。
(この意見が初心者丸出しだったら申し訳ないです。)

チーム

めっちゃ使う。issue立てたりプルリクエスト作ってレビューしたり。

個人でやるときはmasterブランチにそのままpushしていくようなことを平気でやっていたこともあったが、チームではそんなことが許される訳もなく、必ず違うブランチを切ってプルリクエストを作りそっちの方にpushするようなフローになる。

ここで作ったプルリクに対して二人ほどレビューを行う人がつき、さらにマージを行う人がいる。これは個人開発者にはない経験。
他にも、問題点を見つけてissueを立てるなどの仕事もあり、個人では絶対にやらない。

これらの仕事をこなしたことによって、チーム開発やチームでのサービス修繕における心得やgitの使い方を深く知ることができた。

(「git diff」、「git commit –allow-empty」などはチームの人に教えてもらった。)

3. スピード感について

個人

もう自分次第。進められる時はガンガンいける。
これは誰でもそうだと思うが、自分のタイミングでコードを書き、コミットし、マージをするのでスピード感を持って取り組むことができる。

チーム

レビューのタイミングが挟まるので、どうしても遅くはなってしまう。そこからさらにマージをするので、1つのタスクにかかる時間が長引いてしまう可能性があることが分かった。

ただ、複数の仕事を並行してやっていくようになるため、優先順位をどのように決めていくかがすごく重要だった。チームとして求められていることと自分が求めていることがときに異なる場面があったが、その時の意思決定をどうするかなど考えさせられる面があったのは勉強できた。

最後に

主に3つの点で書きましたが、そのほかにもインターンで入社してチームで活動していく中で学べたことはかなりありました。

仕事の中で学べることは多かったですが、休憩時間中の活動も充実しており、非常に良い環境で仕事をさせていただけたと思います。

インターン生として活動するのは今年いっぱいまでなので、残りの日数で吸収できるだけ吸収して、仕事に取り組んでいこうと思います。