どうも。はじめまして 2014年新卒入社の中野です。 今回は入社1ヶ月経って感じたこと(1ヶ月以上経ちましたが…汗)という題でブログを書かせていただきます。 初めて公の場でブログを書かせていただきます、拙い文章ですが最後までお付き合いください。

学生時代について

まず、入社するまでの私の学生時代勉強していたことや、どういった経緯で弊社へ入社したかを簡単に話したいと思います。 私は、公立はこだて未来大学というPBL(Project Based Learning)が盛んな大学に在学していました。 学部3年のときには通年でPBLを行うプロジェクト学習という必修科目があります。 プロジェクト学習では、複数人でチームを組んで様々なテーマに取り組みます。 テーマの中にはシステム開発以外のテーマもありますが、私は最初からシステム開発に興味があったので、そのテーマにしました。 そこでアジャイル開発とRuby on Railsに出会いました。

就活の話

IT企業が多いということで、東京を中心に就活をしていました。 職種はエンジニアであれば仕事内容にこだわりはなく、SIerからWeb系まで関係なく受けていました。 私は仕事内容よりも働き方を重視していて、アジャイル開発での仕事がしたいと思っていました。 なぜかと言うとアジャイル開発のScrumという考え方に共感したからです。 Scrumには上下関係のないフラットなチームで、各得意な専門分野を持った人たちが協力してプロジェクトを成功させるという考えがあり、私も協力し合えるような働き方をしたいと思っていました。 就活していく上で、めぐり合わせでサポーターズというWeb系企業を斡旋してくれる会社の逆求人イベントに参加し、フィードフォースを知りました。 フィードフォースではアジャイルソフトウェア開発を実践していて、フラットなチームであることが感じられました。 その他にも少ない人数でも売れるプロダクトを作っているというところと、気の合う人や尊敬できる人が多くいるという理由でいくつかいただいた内定のうち、フィードフォースを選びました。

内定をいただいてから、入社前まででやってきたこと

ここでは主に3つのトピックで話そうと思います

  • インターンシップ
  • アルバイト
  • プロジェクト学習

インターンシップ

内定をいただいた後、4年生の夏休みに東京へ2週間滞在し、フィードフォースでインターンシップをしました。 そこではフルスタックエンジニアでかつ、Rubyのメタな部分にまで詳しい人がメンターでした。 その人の下で、ソーシャルPLUSというサービスの派生であるソーシャルPLUS for キャンペーンのサービス開発をしていました。 ここではRuby 1.9.3でSubversionを使い、TwitterやFacebookのAPIをたたきながら機能の修正を行っていました。 2週間のインターンシップを通してひとりではほとんど実装などできず、自分のプログラミング力のなさを痛感しました。

アルバイト

大学へ帰ってからは、アルバイトをふたつやっていました。 学部3年の時から続けていた開発のアルバイトと、引越し代を貯めるために短期でPCのセットアップなどをするアルバイトをしました。 開発のアルバイトでは函館にある図書館をお客様にシステムの開発をしていました。 ここでは複数人でチームを組んで実際のお客様からヒアリングして、開発を行っていました。 タスク管理はRedmineを使ったチケット駆動の開発で、バージョン管理はGitを使っていました。 ここで、タスク管理についてやGit力(特にGitHub Flow的なところ)が鍛えられました。 ふたつめのPCのセットアップのアルバイトは、一般のお客さん向けにWindows8の初期設定とかプリンタの設置みたいなことをしてました。 仕事自体はすぐに片付いたので、空いた時間に許可を得てRuby on Railsの勉強をしていました。 バイト先の社員さんに「Rubyについては全くわからない」と言われ、わからなくて詰まったときとかは自力で解決しなくてはいけなくて大変苦労しました。

プロジェクト学習

必修であるプロジェクト学習は3年生全員が対象ですが、4年生でも任意参加のプロジェクト学習があります。 そこではプロジェクト学習の続きを行い、プロジェクトマネージャーをしてました。 ただ、プロジェクトマネージャーというよりはメンバーへ一方的な指示をするだけという意味ではボスに近い存在だったと思っています。 ここでの役割は、開発ではなくチケットを生成したり、コードレビューしたりなどの作業をしてました。 機能を作る際に必要な考えや、チームの動かし方など試行錯誤しながら進めていました。 結局あまりうまくいかなかったかなと感じてますが、良い経験になりました。

入社前に思っていたこと

入社前は、Rubyがかけないと「インターンシップの時から何も変わってないじゃないか!」とかなり怒られるんだろうなと勝手に思っていました。 エンジニアとして採用されたからには当たり前だとも思っています。 そのため、前述しましたがruby2.0.0とrails4を独学でインターネットの記事を見ながら勉強していました。 ただ、インターンシップをしていて感じたこととしてみなさん自分のことに関係なくても技術的なことは教えていただいたりとかしてたので、その心配は思い過ごしだと確信していました。(インターンシップと入社後では違う対応になるのでは? という不安もありましたが) 入社してからの教育期間みたいなものは期待しておらず、いきなりのOJTだろうとは覚悟していました。 勝手なイメージとしてWeb系のベンチャー企業だと、あまり研修制度が整っていない場合が多く、採用でも即戦力が期待される新卒を中心に採用しているイメージがあったためです。 しかしさすがにいきなり実戦投入はないだろうとも思っており、基本的な教材とかマナー講座、電話対応だけでも1日使って簡単にはやるだろうと思っていました。

入社後の話

ここでは驚いたことを中心に、以下のトピックで話そうと思います

  • 入社後すぐに感じたこと
  • インターンの時から初対面の人が3人も増えたこと
  • 丁寧にRubyの基礎力をあげていったこと & 使われている技術がレガシーだったこと
  • バージョン管理がSubversionだったこと
  • 案件を担当したこと
  • MTGで新人という立場がなかったこと
  • 仕事以外での側面

入社後すぐに感じたこと

入社後はインターンシップで知っていたこともあり、すんなりと社員の人と馴染むことができました。 朝礼で自己紹介を済ませた後、すぐに開発環境構築がありました。 インターンシップのときの経験から、環境構築はインストールリストみたいなものだけ渡されて、自分で調べて勝手にインストールしなさいという流れなのかなと心のどこかで思っていました。 しかし環境構築手順とかはきちんと残されていたり、Vagrantを活用していて簡単に構築できたので安心しました。

インターンの時から初対面の人が3人も増えたこと

配属については入社初日に決定しました。インターンシップとは違うチームで、DataFeed Plus(以下、DFと略す)というサービスの開発チームに配属されました。 特に入社初日に配属されることについて抵抗はなく、希望配属先もなかったので問題はありませんでした。 ただ、入社後にまず驚いたことはインターンシップの時にはいなかった初対面の人がメンターだったことです。 それに加えてメンターの方も含めて3人、インターンシップのときよりもエンジニアが増えていて、実際不安でした。 就活やインターンシップの時に感じていた人あたりの良さが乱れているのではないかと。 実際はそんなことはなく、皆さんどの方もTeam Geekにあるような謙虚さを持っていて優しい人でした。 特にメンターの人は優しかったです。 オブジェクト指向の基礎すら怪しかった私に、勘違いしていた部分などを中心に丁寧に教えていただきました。 正直驚きでしたが、すごく助かりました。

※メンター注:私自身、インターンのときの彼を知らなかったため、「どの程度の知識・技術を有しているか」も最初からは把握しきれてはいませんでした。なので、彼とのペアプログラミングなどでの会話の節々から、「これは理解している」「これは雰囲気で話している」といったことを感じ取るようにしました。後者については、彼自身が「自分はこれをわかっていないのだ」ということに気がつけるような質問の仕方を心がけました。

丁寧にRubyの基礎力をあげていったこと & 使われている技術がレガシーだったこと

そのあとに今稼働しているプロダクトのソースコードを理解したり、「たのしいRuby」を読んで最低限必要なRubyの基礎力をあげました。正直、コードを書いてレビューをもらいながらプログラミング能力をあげていくものだと思っていたので、基礎力がまだ身についてない私にとっては嬉しかったです。ただ、Rubyのバージョンが1.8.7だったことには驚きました。ベンチャー企業なら常に最新の技術は使っているだろうと思っていましたし、Rubyの1.8.7では使えない記法(present?とか)があってギャップを感じました。とはいえ勉強したこと自体、決して無駄ではないと思っています。チーム内でもバージョンを上げてる動きがあるので、そういう機会に立ち会えるというのは良い経験になると思っています。

※メンター注:自社サービスとしてしっかり稼働している(DFの場合は急成長もしている)もののジレンマというか、難しいところかなと思います。Rubyのバージョンそれ自体がサービスの売り上げにダイレクトに貢献はしないので、どうしても優先順位が下がりがちです。ただ、このサービスの成長を今後も持続させ、加速させるためにRubyのバージョンアップは今や最優先課題の一つです。

そして入社してしばらくソースコードを読んでメンターへ説明するということをしていました。

※メンター注:これは、メンター(+DF開発チームメンバー)と彼の間の共通語・共有可能なコンテキストを増やしたい、という意図から実施しました。きっと「退屈だなぁ」と感じる瞬間もあったことかと思うのですが、その後の開発やミーティングなどでのやり取りを見るに、やはり実施しておいてよかったと感じています。

会社として、マナー講座とか電話対応の研修が全くなかったので、社会人として大丈夫なのだろうか? と不安でした。 とはいえ、正直やりたくないとも思っていたので、最初からプロダクトに関われるのが嬉しい気持ちもありました。

※メンター注:マナー講座などの研修は、今後実施予定です。

バージョン管理がSubversionだったこと

使われている技術がレガシーだったことと少し被りますが、バージョン管理がSubversionだったことにも驚きました。 今までGitを頑張って勉強していたのでショックを隠しきれませんでした。 これからSubversionを勉強しなければいけないのか…と。 しかし、近々Gitへ移行する動きがあるので安心しました。

※メンター注:DFのアプリケーションコードは、確実にGit・GitHubに移行します。Subversionだった今まででも、git-svn などを活用して効率化を図ってもらっています。

案件を担当したこと

ひと通りソースコードの挙動が理解できてからはさっそくひとつのデータ変換をするスクリプトを書く案件を担当しました。 早いタイミングで担当になったことへの不安はありましたが、嬉しかったです。 実装に入ってからはちゃんとしたTDDを行っていて、良いなという印象でした。 その一方で、人によって書き方がバラバラでどれを信用していいのかというのはわからず不安でした。 社内のコーディング規則みたいなものはあるようですが、あまり読まれておらずでした。 更にはチーム内でのコーディング規則は存在せず、specについては人によって書き方がバラバラでした。 ここで、認識合わせはしたほうが良いのでは? と思い、コードレビューなどしてみると良いのではないかと提案してみました。 ただ近々Githubへ移行する動きがあり、プルリクエストで書き方の統一が図れるのではないかという考えもあり、チームとして思っているところはあるようです。

MTGで新人という立場がなかったこと

DFでは定例で幾つかのMTGが1週間の中で設けられています。 そういったMTGとかにも普通に参加しています。 別に新人で、わからないからとかそういったことは全くありませんでした。 むしろ新人の視点で何か物事を話してくれというスタイルで、正直驚きでしたが、嬉しかったです。 この会社では新人という立場などなく、全員対等でした。 そこで私も新人なりの意見を言うように心がけています。

※メンター注:それでもまだまだ、遠慮しているようなところはあるように思います。頑張れ! (੭ु ›ω‹ )੭ु⁾⁾

仕事以外の側面

インターンシップの時にも飲み会は開いていただきましたが、普段はあまりしないということを聞いていました。 しかし、いざ入社してみると週末は社員の人ともそうですが大学の同期の人とかとほとんど飲みに行っていた気がします笑。飲む社員さんが普通に役員の人だったりして、その人ならではの話や悩みなどが聞けたりしてすごく良いなと思いました(個人的なことを含むので割愛しますが)。 また、採用活動の方でも話がかかり、入社1ヶ月で内定者2人とお話したのは刺激的でした。 「自分でいいのか…」という不安もありながらも自分に頼んでくれたという嬉しさと、失敗しても個人を責めないという風潮から安心感はありました。

まとめ

技術的には最新のものを使うという形ではないですが、枯れた技術(悪い意味ではないです)を正確に使っていました。 誰も知らないような技術を常に追ってエンジニアとして華やかである! というわけではありませんが、こういった技術をドキュメントをきちんと読んで使うという地味なことこそ大事だと思っています。 また、この会社では立場がフラットで、役割のみあるというアジャイルのScrumを徹底していてよかったです。 そんなフラットな立場だからこそ様々なことにチャレンジできたり、仕事をする上でやりがいに感じる部分が多かったです。

課題に感じたこと

外部のイベントやMTGの際に発言量が少なく、失敗を恐れていることがあります。 弊社の技術チームでは失敗を抱擁する風潮がありますが、どうも自分自身失敗することに抵抗を感じています。 それではいけないと思っていて、MTG中は身近な人にわからないことは聞くようにしてついていっています。 プログラミングの部分では、TDDにまだ慣れていないところです。 specの書き方がわかってないのもそうですが、テストファーストができずについついソースコードを先に書いてしまうのはこれから直していきたいです。

やりがいを感じたこと

一番やりがいを感じた瞬間は、最初に担当した案件がリリースされて会社の売上に貢献できたというのが目に見えてわかったときです。 入社してまだ1ヶ月で、同じ大学出身の同期はまだ研修などを実施している中、会社に貢献しているという実感が一番やりがいに感じました。 もうひとつは、立場がフラットなので自分の意見を聞き入れたうえで、案が採用された時とかは嬉しかったです。 自分としても今まで経験してきたことは活かせることがあると思い知りました。 以上で終わりです。 長文にお付き合いいただき、ありがとうございました。

  • このエントリーをはてなブックマークに追加
Feedforce Developer Blog

新しいブログへ移行しました!こちらもよろしくお願いします。