paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

昨年新卒入社したエンジニアが、一年間で学んだことを振り返ってみる

f:id:paiza:20170411150617j:plain
Photo by Steven Cooper
青木です。

昨年の4月にpaiza(の運営元のギノ)に新卒エンジニアとして入社いたしまして、一年が経ちました。長かったような短かったような。

というわけで今回は、この一年で学んだことを、開発業務もそれ以外も含めて振り返ってざっくりまとめていこうかと思います。

現在エンジニアを目指していて、実際に就職したらどんなことをするんだろう?と気になっている人や、paizaの中の人ってどんなことしてるんだろう?と思っている人の参考になればと思います。

■入社の経緯など

学生時代は情報系が専門で、アルゴリズムに関する研究をやっていました。(ちなみに研究でメインで使っていた言語はC++でした)

もともと東京ではなく地方在住だったのですが、paizaでは学生時代からリモートでスキルチェック問題制作のお手伝いをするアルバイトをしていました。

私自身プログラミングコンテストが大好きだったので、今後も近い領域で仕事ができたら楽しいだろうなと思い、新卒求人を募集していなかったpaizaに「入社したい」とお願いし倒してみたら、「そんなに言うなら」と選考を受けさせてもらえることになりまして、無事に内定をもらい、今に至ります。

■普段どんな仕事をやってるのか

現在は主にpaizaラーニング周りのもろもろを担当しています。

サービス開発はもちろん、学習コンテンツの作成、設定、修正、問合せ対応、売上管理も……もろもろというか全部ですね。

paizaラーニングこちらです。動画を見ながらブラウザでコードを書いて実行することで、プログラミングが学べます。無料のコースもありますのでぜひ触ってみてください!
paiza.jp

■この一年で学んだこと

Ruby/Ruby on Rails

就職前のRuby力は、何年も前に『たのしいRuby』を読んだのと、あとはたまに触っていた程度で、そこまで本格的に使ったことはありませんでした。今は一年間の業務を通して、だいぶ慣れてきたと思います。

就職するまでは、そもそもWebアプリケーションフレームワークを使ってちゃんとした開発はしたことがなかったので、よい経験ができていると感じます。Railsはレールから外れないように書かないと後で面倒になる……ということがわかってきました。チュートリアルもやっているけど途中で止まっているので、今年中に全部やる(予定)。

たのしいRuby 第5版

たのしいRuby 第5版

www.railstutorial.org

◆Git/GitHub

学生の頃はsvnっぽいGitの使い方しかしてこなかったので、ブランチを切り替えながら作業して、GitHubでプルリク出すような作業形式は新鮮でした。

入社時は、ラーニングコンテンツのコンテンツ(学習動画の台本原稿など)をWordで管理していて、校正が入ったらチャットやメールで送付するという体制になっていたのですが、台本ならまだしもソースコードをWordに貼って管理するようなおぞましい作業はしたくなかったので、全てmarkdownに変えてGitHubに移行させ、issueやプルリクベースで作業を進められるように変更しました。

(なお、学習動画における霧島京子さんの「私と一緒にがんばりましょうね♪」みたいな部分は私が書いているわけではありません)

Scala

paizaラーニングのコンテンツ制作は関係者がとても多く、それこそ声優さんに至るまでいろいろな人が関わっているので、原稿をGitHubで管理するようになったら、今度は作成のフェーズごとに原稿の見せ方を変えたいと思うようになりました。GitHub上ではmarkdownでそれなりに見られる見た目で、PDF化すればそのまま台本として声優さんにも渡せて、なおかつpaizaラーニングのデータベースにも載せられる……そんな運用ができるように、markdownをガリガリ構文解析して、PDFとかSQLとかを吐き出してくれるスクリプトを書いて、メンテしました。

私の場合はRubyよりScalaで書いた方が速そうだったので、Scalaで書きました。(※一番好きな言語はScalaです)

SQL

実は入社するまでSELECT文の書き方もおぼつかなかったのですが、業務ですごく使うようになったので、いろいろできるようになりました。

CSS

社内の規約があるような、ないような状態でしたが、最近はBEMを使いつつ整理が進んできていると感じます。

◆RubyMine/IntelliJ

最近導入したのですが、デフォルト設定のまま何も考えなくても結構使えるのが便利だなーと思います。全文検索が早いですね。あと宣言や定義へのジャンプができるのも便利です。これからデバッガを使いこなしていきたいです。

JavaScript

DOMはスクレイピングしかしたことがなかったので、jQueryなどを使ってDOM要素をダイナミックに書き換えるようなコードを書く業務が新鮮です。

paizaラーニングのページは、CoffeeScriptjQueryで作られているのですが、jQueryの使い方を知ることができたと同時に、その限界も感じているので、フロントエンドのフレームワークを使って整理していきたいと思っています。

Mac

実は学生時代はずっとLinuxWindowsを使って研究していたので、MacBookは入社して初めてまともに触りました。最初はウインドウ操作の挙動とかが独特で、慣れるのにちょっと苦労しました。

業務上必要な作業はブラウザやターミナルを使う、コードを書く、MS Officeで事務処理する……といったことなので、正直個人的にMacでなければ開発できない!という感じはないですが、ハードウェア/ソフトウェアが社内で統一されていることで、環境設定方法が画一化され、設定やインストールする時のトラブルが減るのはいいなと思います。

あとMacBookの方がWindowsのノートPCと比べて電池のもちがいい気がします。

paizaのエンジニアたちの開発環境については、こちらの記事でも詳しく書かれているので、興味のある方はごらんください。
paiza.hatenablog.com

アジャイル開発について

入社前に『アジャイルサムライ』を読むといいよと言われていたので読んでおいたのですが、入社後、理想の運用と実際の運用にはギャップがあるのだなあ……と思いました。(※ここを読んだ先輩エンジニアからチャットで泣き顔の絵文字が送られてきました)

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

◆決済システムについて

入社直後に、paizaラーニングの有料プランを公開するための開発を担当しました。

決済が絡むと、特定商取引法に関する表記や、PCIDSSとか資金決済法とか、いろいろ対応する必要があるのだなあということがわかりました。

◆業界用語?

コンバージョンとか、工数とか、フィックスとか、DAUとか、LTVとか、みんな当たり前に使ってるけど結構独特な言葉が多いですよね。語彙が増えました。

◆ビジネスマナー

入社後の研修で一通りいろいろと教えてもらいましたが、名刺交換などは滅多にする機会もないので、だいぶ忘れたかもしれません……。

飲み会のときにうっかり上座に座ってしまわないようにだけは注意しています。(先輩たちで気にしている人はいなさそうですが……)

■まとめ

こうして振り返ってみると、とにかくまずは仕事に慣れる……という1年だったのかなと思います。

正直言って、目先の業務を片付けることばかりに集中してしまい、業務環境の改善や、開発的な知見の吸収など、この先に続いていく投資的な行動に関しては全然足りてない1年だったなーというのが反省点です。

最近になってようやく組織や業務の全体像や自分の立ち位置が見えるようになってきて、さらにできそうなことも増えてきたと感じるので、今年度は昨年度とはもっと違う角度から仕事をがんばっていけそうな気がします。

■プログラミングが動画で学べるレッスン「paizaラーニング


paizaラーニング」は、プログラミング未経験者・初心者向け学習サービスです。

「プログラミング未経験だけど勉強してみたいな」という人はもちろん、学生時代の私のような「就職先のメイン言語がRubyらしいけどほとんど触ったことないぞ」という人にもおすすめです。

↓詳しくはこちら
paiza.jp

そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
paiza.jp
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

ITプログラマ・エンジニア向け転職・就活・学習サービスのpaiza


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編