始めに
先日、Java SE 11 Programmer II (1Z0-816-JPN) を受験して無事合格できました。
これから受験しようとしている方!既に勉強中の方!
自分の学習方法が参考の1つになればと思ったので、その方法をまとめ、公開してみようと思います。
費やした期間(時間)・お金
「Java SE 8 Programmer I」を持っているのが受験資格ですが、それを取得したのが一昨年の終わりくらいでした。
そこから若干期間を空けて学習を開始したので、正味の期間としては大体1年弱だと思います。
平日朝の出勤前と休日の昼間に学習を進めていて、大体 3~6 時間 / 週 くらい費やしていました。1
掛かったお金としては、上記資格に対応した模擬試験付きのテキスト2を2~3冊3と、本試験の受験料なので、テキスト代を4,000円/冊として概算で
4,000 円 × 3 + 32,340 円 = 44,340 円
くらいです。
資格を取得された方の合格体験記を見ると、体感で3ヶ月~半年でテキスト1~2冊を何度も解いたという方が多い気がします。
自分はどちらかと言えばリソース多めに割いていた方かなと思っています。
どんな風に学習を進めていたか?
購入したテキストの問題を解いたり、公式ドキュメントを見たりして学習していました。
所謂「分からない事が分からない」状態で、まずは分からない事を洗い出すのが先決でした。そこで、いきなり問題集の模擬試験を解いてから、知らない事を炙り出して、学習の起点を作るスタイルで進めました。
具体的には、
- 模擬試験を解く
- 採点をして、解説を読む・テストコードの動作確認をする
- 気になった点をテキストやドキュメント等でさらに深堀する
この1~3をひたすら繰り返していました。
ただテキストを見るだけだと「そういうものか」で終わる事も、問題として与えられたら「なぜそうなるのか?」という目線で考える事が出来たので、自分には合っていました。
テキストには通常、「Stream API」, 「JDBC」 みたいに章毎にまとめられていますが、そちらは模擬試験を解く中で「あ、この分野の知識足りてないな」と感じた時に、周辺知識の確認も含めて読むようにしていました。
学習を進める上で大事だと思ったこと
①動作確認をする
これが最も重要だったと思います。
基本的に気になるコードは全て自分の手で動かしてみて、どんな挙動をするか確認していました。
(誰を悪く言う訳でもありませんが、)コードを動かしてみると、テキストに書かれた内容と異なる結果が得られる事も多々あって、問題の答えは選択肢aだと書かれていたけど、コードを動かしてみたら選択肢bだったという事がありました。
情報を鵜呑みにせず、何が正しいか自分の手で検証して確かめる訓練としても、とても効果的だったと思います。
②一次情報を見る
問題を解いて、知らないクラスやメソッドが登場するたび、一次情報 - javaドキュメント - を確認するようにしていました。
テキストや技術ブログは分かり易く書かれてはいるのですが、飽く迄2次情報なので参考程度に留めるよう気を付けていました。
資格学習に限らず一次情報を当たるのは重要で、つよつよエンジニアはドキュメントから情報を得るようにしているらしいので、その訓練も込みで面倒でも確認していました。
終わりに
試験では、コンパイルエラーとなるかを判断させる問題も登場します。エディタやIDEで検知できるんだからそんなの解けなくていいじゃん!、と元々は思っていました4。
ただ実際の業務では、何千行ものソースコードを複雑なサービスロジックを考慮しつつ解読しないといけないシーンが多かったです。
なので、試験で出るような短いコードだったら、コンパイルエラーであろうと目視検知できても良いのでは、と思い直しました。
実際の業務を意識すると、資格に受かるスキルというのがどこまで役に立つのか分かりません。ただ、学習の目安だったり分かり易くスキルを視覚化出来たりする所があったりと、個人的には資格学習はオススメです。