Septeni Engineer's Blog

セプテーニエンジニアが綴る技術ブログ

新卒研修を受けて

こんにちは、新卒の永倉です。
今回はセプテーニ・オリジナルの新卒研修の内容を個人の感想も含めていくつか紹介したいと思います。

Scala研修

Scala研修は外部講師として麻植さん(@OE_uia)が担当してくださいました。

私の研修が始まる前のScalaに関する知識は、
Scalaスケーラブルプログラミング第3版(以下コップ本と省略する)をある程度読んだことがあるが、
ところどころ読み飛ばしていたり、理解できていない部分があるぐらいでした。

研修内容

具体的な研修は以下のような形で行われました。

  • コップ本に沿って講義が行われる

    講義中には、適宜追加の説明や、資料の紹介、
    REPLを使って実際にコードを実行しながら動作を確認することもありました。

  • 講義の後に、演習課題に取り組み、講義で学んだことを確認する。

    最初の方の演習課題は、大して時間もかからずに、解けるものが多かったです。
    ただ研修の後半の方の課題は型クラスについてなどそれなりに時間のかかるものもありました。

  • 課題を提出しレビューしていただく

  • 講義中や課題提出時に質問をさせていただく

    講義、演習共にScalaの知識をつけるための助けになりましたが、
    質問をたくさんできたのが個人的には最も大きな収穫だったと思っています。
    質問への返答はもちろんのこと、
    質問する内容を整理している間に自分の理解が明確になったりと得るものが多かったです。

感想

研修によって自分でコップ本を読んでいる際には、
理解が曖昧であった暗黙の型変換や変位指定アノテーションなどについて
かなり理解できるようになりました。
またコップ本に載っていないことも教えていただきました。
まだ途中までしか読めていませんが、
研修中におすすめされた「Scala関数型デザイン&プログラミング」を読む際にも
今回の研修で学んだことは助けになっています。

データベース基礎

DB自体を使ったことはありましたが、
パフォーマンスの良いSQLの書き方やトランザクション
DBMSアーキテクチャーなどはほとんど知りませんでした。

研修内容

研修では、DBMSアーキテクチャから始まり、トランザクションや実行計画などを学びました。

  • トランザクション

    トランザクション処理に求められる特性であるACID特性を学び、
    さらにトランザクションの知識を深めるために、4種類あるトランザクション分離レベルや
    「ダーティーリード」などトランザクション中に起こりうる現象についても
    MySQLで実際に試しつつ学びました。

  • SQLのパフォーマンス

    まずクエリ処理の流れについての話があり
    その中でパーサやオプティマイザの役割についての説明がされました。
    また、実行計画は統計情報を元に作られるので統計情報が更新されていないと
    適切な実行計画が作られない場合があるといった注意点の説明もありました。
    その後、サンプルのデータセットを使って実際に実行計画を読み解く演習を行いました。

感想

データベースの内部でどんなことが起きているのか全く知らなかったので勉強になりました。
データベースの知識は今後も必要になるので理解を深めていきたいです。

TDD研修

TDD研修を受ける前は、TDDに対して、
「テストを先に書く」開発手法ぐらいにしか認識していませんでした。

研修内容

研修では、まずTDDについての講義が少しあり、
そのあとに実際にペアプロで課題をTDDの形で解いていきました。
テストライブラリはSpecs2を使いました。

課題を解いていく中で、TDDのサイクル

  • 失敗するテスト書く
  • そのテストが通るように実装する
  • テストが通る状態のままリファクタリングをする

の流れを意識して進めていきました。

感想
  • テストがあるとリファクタリングをするときに安心感がある
  • 短いサイクルで進めていくのでエラーが出た時にどこが原因か特定しやすい
  • テストケースを漏れなく導出するのは難しい
  • テストコードを書くためにも知識やスキルが必要
  • 動くテストを元にしてリファクタリングをするのも学習やスキルが必要
チーム開発研修

チーム開発は同期が書いてくれると思うので短めに

私は、チーム開発はほとんど未経験でした。
これまで、チーム開発といえばアルバイト先で少しの間、
2人で開発したぐらいしか経験がありませんでした。

チーム開発研修は成功というより失敗や反省の方が大きかったです。
例をあげるとすれば以下のような点がありました。

  • チーム内での認識を合わせるのが難しい
  • チームの他の人の進捗がわかりづらい、どの程度まで進んでいるかわからないとフォローもしづらい
  • ストーリーを元に自分以外にもわかりやすいようにタスクを分けるのが難しい

実際にチームへ配属になる前に、失敗できたのはよかったかなと
思う反面、もう少しうまくできたのではないかという後悔もある結果でした。

終わりに

研修で学んだことを生かしつつ、これからも頑張りたいと思います。