大分時間が経ってしまったのですが、この記事は去年の7月の終わりから、12月の中盤まで約4ヶ月弱、株式会社GMOペパボでエンジニア職の内定者アルバイトとして働いた事に関する記事です。
僕の前にも以前、ペパボでエンジニアとしてアルバイトで働いていた新卒6期生のスンさんが書いた記事もあるので、良かったらこちらもご覧下さい。
何をやっていたのか?
自分がアルバイトで配属されたのはブログサービスであるJUGEMのクリエイティブチームです。
チームに配属されて行った主なタスクとしては
・無料申し込むフローのリニューアル。
・有料申し込みフローのリニューアル。
・ログインフォームのリニューアル。
という3つの業務を同じチームのメンターの方やエンジニアの方と一緒に基礎開発を教えて貰いつつ裏側を実装していきました。特に「無料申し込みフローのリニューアル」、「有料申し込みフローのリニューアル」に関しては、ユーザ獲得に直結しやすい場所でもある為、サービスの玄関部分の実装を担当できた事はエンジニアの視点だけでなく、webサービスを今後作る側としても大きな学びが有り勉強になったと思います。
配属された最初の1ヵ月は支給されたMacの基本操作から始まり、gitの操作、コードレビューによるRPのチェック、それからIssuesの立て方など基礎の基礎から始まります。その状態からコーディング→レビュー→マージ(merge)→デプロイ→リリースまでの一連の動作に慣れるまでは繰り返し作業の連続です。
Githubを使って複数人での作業を行った事がある人ならこの一連の流れは直ぐに把握できると思いますが、個人で開発していてそこまでgitの操作に慣れていない人は最初戸惑うかもしれません。自分もペパボでのアルバイトを始まる前は個人で開発を行うタイプだったのでmasterからbranchを切って小規模で細かい作業を行ってaddしてcommit,pushと言った事に慣れていなかったので苦労してました。
またgitの操作以外にもコーディングでのエラー処理や、エディターの使い方、PRを出す際のルールと言った他にも慣れない場面に多々出くわします。こうした場面に出た場合は以下の2つの事を行って対処しました。
1.とにかくわからない事があったら聞く。
2.わからない事が理解できたらすぐさまメモを取って自分の言葉で書き出す。
1に関しては当たり前の事ですが、どうしても負の認知バイアスがかかってしまい中々聞きたいけど聞けないという状況があります。そういった場合に対処して当時、配属されてすぐにCTLであるじゅんさんに自分専用の分報チャンネルを作り、そこにリアルタイムで悩んでいる事を投げると言った事を提案されました。
この提案は大変ありがたく悩みを直ぐに打ち明けられる事による心理的不安の解消と的確なアドバイスを受けれる事も良いのですが、嬉しい事がもう一つあり、プロジェクト以外の自分の関心がある技術の話や、プログラミングに関する考え方など、些細な疑問などもすぐに投げれるので「第二の学びの場としても、有効的だ!」と学生ながら当時感じました。勿論業務に関係する悩みを相談するのが当然ですが、そこに付属して追加追加で「なぜ?」を問われるので、結果そこの課題を解決をする為に技術に対しての理解が深まっていく良い循環が出来ていたのだと思います。
2のメモを書き出すというのは、要するにアウトプットをする事です。
一度聞いてその場でなんとなくわかった気になって後々忘れる....っと言う事にならない為にも、理解したら直ぐに簡単なメモ帳でもいいから、頭で整理した内容を書き出します。そうする事で自分がどこまで理解して、何が理解できていないか?を把握します。この作業は基本的な事ですがとても重要です。なぜなら、「自分が今、何がわからないのかが、わからない」っというのが、作業をしてして一番怖い瞬間なので、そうならない為にも分かる範囲で自分の理解を書き出し、次はどうすればよいのかを考えるのです。
その為にも、わからない事や、慣れない場面に出くわしたらチャンスだと思って、自分の頭の中で理解するまで噛み砕いて整理して書き出します。メモを書き出したら社内のGHEのGistに投稿して、投稿を見たメンターや社内のエンジニアから更にアドバイスを頂いて更に理解を深めます。
この1、2の一連の動作は最初は覚える事が多いので大変なのですが、後半はこの自分がアウトプットしたメモに大分救われます。単純に検索する時間や聞く時間が減るのでその文コードを書く方に集中出来るので先行投資だと思って、このメモを書き出す癖を付けるとと良いでしょう。
そう言った基礎的な事を抑えながら、本格的なコーディング作業に移ります。上の方で述べたJUGEMの登録フローの改修に移るのですが具体的な作業としては
1.元の実装されているコードを読んで調査を行う。
2.呼んだ内容を元にドキュメント化する(Issuesを立てる。)。
3.ドキュメント化した内容を元にリニューアル用のコードを実装する。
を行っていました。登録フローをリニューアルすると言っても新しく全て書き直す訳ではなく元の引用できるコードは引用して上手く動作する様に修正を加えます。
アルバイト先で配属された当時、JUGEMの登録フローやフォーム画面をリニューアルするにあたってはフルスタックフレームワークであるLaravelを採用して、元のコードをLaravel上で実装したコードが動作するよう、メンターのエンジニアであるバリーさんの丁寧な解説を受けながら一緒に実装していきました。
個人開発でLaravelを使った小規模のwebアプリケーションは何度か作った事がありますが、JUGEMの様な実際に稼働している大規模なwebアプリケーションをLaravel上で実装しテスト駆動開発(TDD)、継続的インテグレーション(CI)を意識してのコーディングをする経験はなかったので、アルバイト期間中に正しいコード、正しい開発を学べた事は良い経験に繋がりました。
チーム開発について
「悩んだら一人で考えず周りを巻き込め。」
この言葉は実際にアルバイト中に言われた言葉で今でも覚えています。
サービスは一人で作るわけではないです。
エンジニアが居て、デザイナーが居て、勿論それを指示するディレクターが居て、ユーザの声を聞くCSが居てと...色んな役職を持った人たちが同じ目標に向かって走ります。ですが、一人で考えこむ行為といのは、時に周りが見えなくなり、自分だけコースを外れる行為になってしまいがちです。
そうなりそうな時ほど上の言葉を思い出しては、自分から積極的に意見を聞くようにしてました。そうする事でゴールがどこなのかを再認識し、デザイナーから見た視点、CSから見た視点と、色んな方向性が見えてきます。これはエンジニアだけでは無く、どの職種でも言える事かもしれません。エンジニアだからエンジニアリングだけを大事にすればいいという考えではなく、チームで開発を行なっている事を意識してエンジニアリングする事が大事なんだと、アルバイト中に気付きました。
まとめ
アルバイトを始める前は、デザイナーを含めた複数人の開発やプロジェクトの経験がなく、gitの操作もままならない状態で不安でしたが、いざ走り出してみると社内のエンジニアのサポートが大変手厚く、躓いても直ぐに立ち上がれる状態で非常に働きやすい環境でした。
またペパボにはweb、モバイル、インフラの3つの領域で活躍している優秀なエンジニアが沢山います。技術面でわからない事があってもランチの時間やSlack等で直ぐに質問や聞ける環境は魅力的な強みだと感じました。
もし今後、web業界にエンジニアとして興味があり、一歩先を見据えた良きエンジニアを目指す方はペパボのアルバイトに是非申し込んで見て下さい。
おわり。