こんにちはnishikawaです。今年度もあと少しで終了です。花粉が辛い今日この頃ですが、巷では新年度に向けて色んな仕事が舞い込んできているのではないでしょうか。
さて、新年度といえば学生が社会人になる時期でもあります。新しい環境下で始まる社会人生活に緊張や不安を抱いている新社会人も中には居ることでしょう。
一方、採用側の企業はというと、こちらも色々と緊張していると思います。「えっ?採用側も緊張するの?」と思うかもしれないですが、『新人が会社になじむにはどうしたらいいのか』、『研修はうまく行くのか』等々、心配事は尽きません。nishikawaの上司は新しい人が入る度に最初のコミュニケーションをどうしようか凄く考えています。それは周りにいる同僚も同様で新人の方が初めて出社した日はオフィスにいつも以上の緊張感があります。
そんなアスタミューゼの開発部ですが、今年はIT業界での業務経験がない方が入社されました。その方は大学も文系卒でプログラミングとは無縁の経歴だったため、新人を教育するにあたり、研修内容をどうしたらいのかというところが部の一番の悩みでした。
そこで、私が提案させていただいたのがジャストシステムさんの開発の方が利用されているJava100本ノックというドキュメントです。これは、Javaを利用する上で必要となる知識や、よく利用するライブラリ、フレームワークについて学習するために作られた問題集です。
Java 100本ノック: https://github.com/JustSystems/java-100practices
この問題集、GitHubに公開されており、初歩的なJavaの操作から言語仕様、コアAPI、ライブラリ、フレームワークととにかく基本を意識した問題が多いのが特徴です。
この問題集を今回弊社では試用期間中に最低2巡することを目標にカリキュラムを組み現在実施中です。
今回は弊社でやっているJava 100本ノックの進め方を記載したいと思います。
- 1巡目 (現在実施中)
- とにかく問題を流しでやってみる。分からなかったらすぐ解答・解説を読む
- 問題文、解答・解説を読んでも分からないところ、それ以外の箇所での分からないところはOJT指導者に質問する
- 2巡目
- 1巡目で得た知識を踏まえて問題を解く
- コーディング規約を意識する
- テストを書く
1巡目
1巡目はとにかく全体を俯瞰させるためにとにかく問題をやらせています。少し考えて何も閃かなかったらすぐに解答と解説を読むことを推奨し、その上で分からないことを些細なことでも質問させています。
プログラミング経験がないということなので、ターミナルの使い方やbashの話などJavaには全く関係ないことについても質問を受け付け、それに対して実例も見せながら解説しています。1日に解説している時間は2〜3時間程度で、その時間で収まるように新人の方には質問の要点を絞らせ、まとめさせることを強く意識させています。
1巡目のねらいは、Javaの全体像の把握と問題・課題の深掘りによる問題解決能力の育成があります。問題を解いてJavaを理解することは重要ですが、それよりも何が分からないのか、分からないのは何が問題になっているからなのかの把握と追求が一番重要だと考えております。
2巡目
1巡目を踏まえて、今度はJavaを集中して体得するのがねらいです。そのため、2巡目では問題文が求めていることを精査し、それを実現するための手法を考えることに重きを置いています。また、2巡目ではすべてのコードに対してテストコードを書いてもらおうかと考えています。
Java 100本ノックをやってみての感想
1ヶ月間、Java 100本ノックを新人にやらせてみて振り返ってみると色んなものが見えてきました。
良かった点
- Java のコーディングの仕方、機能の使い方が分かる
- 業務上では使わない機能も問題に取り上げられている
- ちゃんとやればやるほど、教える側と教わる側、それぞれの勉強になるような問題が多い
Java 100本ノックの効果は教える側と教わる側がそれぞれいるときに最も享受できると思います。教える側と教わる側がそれぞれ顔を付き合わせて問題に取り組むことで両者とも知識が深められます。
ポイントは
- 問題の意図をちゃんと理解する
- 解答・解説を理解し、コードを1行ずつしっかり追って理解する
です。nishikawaも色々と教える上で分からないことに直面する機会が多かったのでとても勉強になりました。
良くなかった点
- プログラミング初心者向けではない
- Javaを独学で勉強する場合には効果が薄い
良くなかった点はこの問題集は初心者向けに作られていないところだと思います。問題自体はある程度Javaもしくは何かのプログラム言語を使ったことがある人を前提にして居る節があるため、本当の初心者がやるには少し辛いと思います。ですので、この問題をやる場合はJavaの入門書を事前にある程度やっていることをお勧めします。
また、独学でやる場合理解が中途半端になる可能性があるので注意が必要だと思います。学習全般に言えると思いますが、クロスチェックはある程度必要なので、これも例外ではないと思います。
結局どうだったのか?
現在、1巡目を行なっていますが、結論から言うとかなりの成果が出ています。新人の方がとても優秀だと言うこともありますが、分からないところへの分析がよくできるようになってきているため質問が問題を解くごとに少なくなっています。
問題を解くことに関しては、まだ知識や経験が不足しているため、自力では難しいですが、コードを読んで分からない箇所を自信で調査し独力で理解するという行動ができるようになってきています。
以上を踏まえると、申し分ない成果が出ていると思います。しかし、今回新しく入った新人の方が優秀だということも多分にあるため、今後も様々な育成をやっていく中でastamuse開発部の育成方法をちゃんと確立できるように試行錯誤していきたいと思います。