見出し画像

新卒研修を振り返って改めて勧めたい技術書 ~まずはなんてたってコーディングだよ~

Atrae Advent Calendar 2019 4日目を担当するhosakakです。
Green事業で、サーバサイドとかバックエンドを主に担当しています。

いくつか社内では勉強会を定期的に開催しておりまして、今回は新卒エンジニアメンバーへの研修を実施して得た学びを投稿しようと思います。
弊社では新卒研修というものは用意していないのですが、今年は試験的に取り組んでみました。

ということで技術書を紹介する前に、研修の流れをサクッと振り返ってみます。お付き合いくださいませ。

研修の目的

どんなエンジニアになってもらいたいのか。
最初におじさんエンジニア達でここの意識をすり合わせるところから始めました。

研修を通してどうなって貰いたいのか、目的を定めて置かないと知識やテクニックを教えるだけで終わってしまうのではないか、そんな懸念がありました。そこで1年後の新卒エンジニア達の姿を想像し、おじさん達が真剣に彼らの将来像を話し合いましたw

どんなエンジニアになって欲しいか

前提として、弊社のエンジニアのマインドはこちらの記事@ysk_aonoが紹介しているので一読いただけるとご理解して貰えるかと思います。

まずはおじさん達それぞれが考える理想のエンジニア像を具体的な内容で出し合い、最終的に抽象度を上げて言語化することを行っていきました。

・自走できる
・その技術が事業にどんなインパクトを与えるのか考えられる
・自分のコードに責任を持てる

自分でアプリを作成した経験がある事や、すぐに配属され業務をしながら色々学んでいるということもあり、研修を通して教えたいことが特定のスキルというよりも、マインドよりに偏りました。こういうところが弊社らしいなという印象です。

やはり、自走できるエンジニアって基礎がしっかりしてないとなれないねという自戒の意見が強く(私だけかも...)、基礎を少しでも学ぶ時間を取りたいなと思い基礎を中心にすることに決めました。

マインドって教えられるものなのか!?
続いてマインドよりのところですが、ここを教えるというのはやはり難しかったので、おじさん達がどんな体験をしてきたのかを新卒エンジニアたちにおじさん1人ずつ1時間くらい話をする場を設けてみることにしました。
失敗談とかそこからの学び、影響を受けた先輩の話、仕事への取り組み方、勉強の仕方などなど...
それぞれの個性が詰まった楽しい場にはなったのですが、このマインドが伝わったのかは定かではありませんw
そもそもそんな高尚な人間ではありません。(これも私だけか...)

カリキュラム(現在進行中)

・イントロ * 5 (おじさん達の話)
・フローチャートについて ※演習付き
・シーケンス図について ※演習付き
・URL設計について ※演習付き
・DB設計(正規化・非正規化)※演習付き
・DB設計(Index)※演習付き
・DB設計(ER図)※演習付き
・おまけ(競プロ、Dockerハンズオン)
WIP...

本当に基礎的なことばかりですが、必ず座学と演習はセットになるように心掛けました。
特にフローチャート、シーケンス図、ER図とかは、なんで学ぶ必要があるのかは理解しづらいところかなという認識があったので、何故良いのかを体験して貰う必要があるなと感じていました。
そんな中、いつも先輩達は書いているのですか?という質問は耳が痛かったですね。。。
「頭の中でやってるよ」と答えておきましたw
言い訳するようですが、これが頭の中で自然にできるようになったり、複雑なものはいつでも書き出して整理できる能力は今後も必要だと思っています。

面白みを作る

全体的に地味なことばかりなので、いかに飽きないで貰うかを考えるようにはしていて、面白みを与えれるように努力して挑戦してきました。
具体的には以下のようなことを実施しました。

トイレのAPIを作るとしたらどんなエンドポイントにするか?(URL設計)
URL設計の演習内容がこちらで、各々に仕様から考えてもらいました。独自の世界観を表現してくれたのがこちらとしても楽しかったです。
また実際に考えてもらうことで理解ができていない点も明確になり、来年の研修の参考にもなりました。(Httpメソッドの使い分けとか)
競技プログラミングで先輩と戦う(フローチャート)
競技プログラミングを取り入れたのは、すぐに手を動かさずにまずは処理の流れを自分で整理する習慣をつけて貰いたかったからです。
勝負の要素を取り込んだのは、その方が新卒メンバーの性質上前向きに取り組んでくれそうな感触があったからです。
案の上火がついて、先輩より高速でメモリも抑えようと躍起になっていました。ちょっと業務に支障をきたすくらいハマってしまっているのも散見されたのでそこは反省点ですね...w
(フローチャートを用いる必要がある問題を考えるのは苦労しました...)
・Dockerハンズオン
ずっと地味なことをやっていたので少しくらい最近の技術に触れる機会を作ってみようと思い、仮想化技術の変遷や、メリットを説明した上で手元で動かすことを実践しました。
狙いとしては、初歩的なところを理解するだけでも手元で様々な環境を自分で用意できるスキルを身につけてもらうことで、興味を持った分野を自分で勉強するハードルが下がればいいなといったところでした。
どれくらい役立ったかは分かりませんが各事業でDockerを使用しているので、なんとなく頭に残ってくれていれば幸いですね。

良かった点

・勉強会を実施するハードルが下がった??
実は研修の内容のDB編からは、新卒の1人が自ら担当してくれています。自分でインプットしアウトプットするというところで学びを多く得てくれているのがとても嬉しい限りです。先輩からは少し補足が必要くらいのクオリティで仕上げてきてくれるので非常に助かっています。
また、業務でインフラを主に担当している新卒の1人も、Docker勉強会を定期開催してくれています。
基礎的な勉強会をずっとやってきたせいなのか(もしくは私の研修のクオリティが低かったおかげなのか...w)、インプットからアウトプットまでして社内に知見を広めようという動きが生まれたことは大変良かったです。

・実際の業務で生きた
業務では研修よりも圧倒的に複雑な機能を実装しているので、その中でフローチャートやシーケンス図を用いて整理してレビューに望んでくれる姿が見られるようになり、お互いにとって良い効果が得られました。
この習慣がついたことは大変喜ばしく感じています。

・教える側も勉強になる
新しい技術を追いがちになっていたりするので、教える立場として改めて基礎を勉強するのは良い機会になりました。
雰囲気でやってる自分への戒めになります。

反省点

・研修のフィードバックは毎回貰うべき
今回記事にまとめるに当たって当時の記憶が薄れている実感があるので、その時に新卒メンバーがどう感じたのかを鮮明なうちに聞いとくべきでした。
来年より良いものにするには、フィードバックから内容を見直したり、ブラッシュアップする必要があるので毎回必須だったなと反省しています。

・コーディング要素をもっと入れておくべきだった
基礎といえばコーディング能力に尽きるなという実感があるのに、その要素を取り組めていなかったのが反省点です。
処理の流れを整理する -> 構成を考える -> 実際に書く
この能力がしっかり固められると、より様々な専門的知識を入れるのが楽になると思うので、今後の研修で取り組めないか検討していきたいです。

勧めたい技術書

ここまでに書いたように、基礎的な知識コーディング能力をしっかりと最初のうちに固める事が今後の成長に大きく影響すると考えています。
中でもコーディング能力に必要な知識も様々なので、そこを補う書籍を紹介させていただきます。

プログラムデザイン
Webサービスを作る上で以下のようなレベルに分類できると思います。

・関数レベル
 ・リーダブルコード
・コンポーネントレベル
 ・GOFデザインパターン
・アプリケーションレベル
 ・クリーンアーキテクチャ
 ・MVP, MVC ...
・サービスレベル
 ・マイクロサービス
・インフラコンポーネントレベル
 ・AWS,GCPなどの各種サービス

上から3つ目のアプリケーションレベルまではコーディング能力に大きく関わる部分で、この境目を区別できていないと色んな技術書に手を出してしまいがちになってしまいます。

先輩達が話している単語を理解できない
新人の頃ってこういうことが日常茶飯事で、調べてその言葉を理解しようと必死になるのですが、中途半端な理解になってしまったり、理解できても何故その考え方が必要なのかまで腹落ちできることがほとんどだと思います。
どのレベルの話をしているのかを理解し、自分の力量と照らし合わせることでコーディング能力をあげる技術書を適切に選べることが大切です。

という訳で各レベルごとのお勧め技術書を掲載して終わらせていただきます。

・関数レベル

画像1

普通すぎてすみません。当たり前のようにこれはオススメです。

・コンポーネントレベル

画像2

これは古すぎて正直お薦めするか悩みましたが、色んなテクニックが普段のコードに溢れているのを知るには良いと思います。
目次だけ見てデザインパターンを知り、ググるっていうのでも良いかもしれません...

・アプリケーションレベル

画像3

これも良書として有名書籍です。デザインパターンを用いたコードがどのように書いたらより力を発揮できるかの理解を深めるのに役立つと思います。

・おまけ

画像4

関数レベルからアプリケーションレベルまで書いてある技術書です。
DDDの要素が濃いめです。

以上、研修を通して改めて勧めたい技術書を紹介させていただきました!
(研修の振り返りがメインになっていましました...)
新人エンジニアの方々の参考になる技術書になれば幸いです。

明日Atrae Advent Calendar 2019 5日目 は1年目のツッチーです。
よろしく!!

この記事が気に入ったらサポートをしてみませんか?