見出し画像

超特急!2週間で新しい開発言語を習得する勉強法

完全に私事ではありますが、先日転職活動の一環で一度も開発経験のないシステムの初歩的なプログラムを組む実技選考がありました。

2週間というタイムリミットが定められた中で、何をして選考に臨んだのか。
今回はそんなお話です。

こんな人に読んで欲しい

・できるだけ早く、新しい言語を使えるレベルまで習得したい人
・JSP・Servlet・JDBCを習得したい方
・全てのエンジニアもしくはエンジニアを目指す方々

結論:ひたすら模写する

いきなり結論ですが、今回私はこれだけに絞りました。

最終ゴールは自力でアプリケーションを完成させることだから、
本や動画でのいわゆる「受け身」の学び方ではなく、主体的にアプリ開発する練習をした方がいいのでは?とも考えました。

が、ゴールが明確化されている状況では、いわゆる受け身の学習の数をこなし、一つのアプリケーションを完成させる手順を脳に染み込ませる方法が最適だと感じました。

前提条件

まずは私の置かれた環境について軽くお話します。

転職先から選考内容を告知されてから選考当日日まで、2週間弱。
もちろんその間平日は仕事なので、学習時間はざっと見積もって50時間。

選考の開発システムはこちら。
今はSpringが断然強い気もしますが、主にJavaとMySQLを使う開発です。

・JSP/Servlet/JDBCを使用したWebアプリケーション
 基本的なCRUD機能を実装
・Tomcatサーバ
・Eclipse
・Windows

で。学習前の私のスキル。

・Android Java経歴5年
・その他スマホアプリ開発歴がちらほら
・好きなIDEはAndroid StudioとVS Code
・Macbook Pro

一見してわかるように、ゴリゴリのスマホアプリエンジニアです。
ルーティングという言葉すら、つい最近まであまり馴染みがなかった(呆)

ちなみに選考内容をみたときの私の感想がこちら。

・Tomcat…トムキャット…ねこ?
・Servlet…なんて??サーブレット???
・JDBC…データベースっぽいけどJとCって何???
・同じJavaとはいえ、扱う継承元クラスからして違いすぎる
・Windows PC、、もう3年くらい触ってない。。キー配列どうだっけ…?

さあ、どうしましょう。

用意するもの

私はこちらを用意しました。
Progate、ドットインストールも探したのですが、講座が見つからなかった。

・Udemy講座2つ
・Kindle Unlimitedで見つけた本1冊

1〜10時間め:Udemyの基本講座を受講して大まかな流れを押さえる

とにもかくにも、環境構築から始めなければなりません。
環境構築は本より断然動画の方が分かりやすい。
ということで着手したのがこちら。

今回使うEclipseの設定からDB接続方法まで、基本的な流れは網羅してそう、とのことでこちらの講義に飛びつきました。
が、内容としては講座が進めば進むほど教材のコピペが多くなり、自分で手を動かすことが少なくてあまり意味を理解できないまま終了しました。

11〜30時間め:Kindle本でJSPとServletを重点的に学ぶ

この段階では、JSPとServletに特化した学習に移行。
というより、JDBCまで含んだ無料の本が見つからなかった。

こちらにあった掲示板アプリとショッピングカートアプリを本と睨めっこしながら模写します。
なんとなく予想がつくところは先に自分で実装してみて、読み進めながら、こうすればいいのか!と進めると身につきやすかったです。
が、その分時間がかかりました。。

31〜50時間目:JDBCとMVCモデルを重点的に学び、学習の全体的な知識を網羅する

最後に用意したのがこちら。

JSP・Servletは本であらかた習得したので、最後はやっぱりJDBC!ということでちょうどUdemyのセールに当たったのでこちらを受講。

この講座、解説の部分こそ書いてあることの読み上げだけなのですが、
JDBCに特化してるのでクエリ実行の仕方やJDBC Driverの使い方はもちろんのこと、Eclipseでの効率的な実装方法(Servletファイル作成メニューに初めて気づいたり)やMVCモデル、セッションの扱いなど、より業務に近しい、実践的な手法をさらりと教えてくれる貴重な講座でした。

最後の最後でこんな講座に出会えたのはまさに奇跡でしたね。

選考直前の総復習

さて、ここまででやれる限りのことはやってきました。

ということで、総復習として何をやるか。
マインドマップで、頭の中を整理しました。
ちなみに今回は手書きだとゴチャアするのがわかってたので、MindMasterアプリを使いました。その内容がこちら。
(MindMasterはフリープランなので背景がうるさいですごめんなさい)

Webアプリ

右側がMVCモデル部分、左側がDBとかモデルクラス部分。
どれだけMVCモデルが大事かってことが分かりますね。

(注意)
内容が間違ってたらごめんなさい!桜草の記憶の構造がこうなってるだけで、本当はそうじゃないんだよ、てのもあるかもしれないです!!

結果

こうして、私の学習時間は全て模写で、一般的に「受け身」とされる学習方法だけで選考に臨みました。
が、手応えとしては8割くらいできました!(まだ結果が通知されてない)

細かい入力値チェックは時間の都合でやりきれなかったり、ログイン処理を実装だけしてセッションチェックしてなかったりと諸々のおこぼれはあったものの、未経験にしては良くやったんじゃないかと自負している。(これで落ちてたら笑ってください)

補足

普段Visual Studio Codeなどの軽くて優秀なIDEに慣れていると、Eclipseの動きのもっさり度に最初は正直辟易しました。

・検索ウィンドウが表示されてから2秒くらい待たないと検索できない
・そもそも起動するのに体感で10秒くらい待たされる
・コード補完が出るのが本当に遅い

このように不満が積もっていきましたが、動きが重いから別の開発ツールで実装方法だけ学ぼう、とか言ってると確実にタイムオーバーになってました。正規のツールはそれだけの価値があるってことですね。

終わりに

はい、ということで、今回の結論は先頭で言っているように、期日が迫っている、完全未経験な開発言語を習得するには、これが最強と知りました。

模写の数をこなす!!!

例えば私の場合、一番初めのServlet決定版のUdemy講座だけやって、よし、じゃああとは自作アプリを作ってみよう!と移行したところで、以下を知らずに着手すると、時間だけが過ぎて行ったと思います。

・Servletで何ができるか
・どう実現するのがいいのか
・効率的な実装方法は?

私は今でもServletで何ができるかなんて理解仕きれていません。
実はこんなことができるんだよ、得意なんだよ、という情報なんてそこらに転がってるかもだし、今はSpringの時代!Servletはおまけでいい!かもしれない。

まずは徹底的に本や動画に即して実装方法を模写して、80%の完成度を目指す。
自分好みに実装を進めたり新機能に慣れるのは、その後の20%の部分でやればいい。

5年くらいのエンジニア歴をもつ私は、こう思いましたとさ。

ここまで読んでくださり、ありがとうございました!
自分はこうは思わない!自分だったらこうするよ!!などのご意見もいただけると主に私が今後の参考にしますので、コメントください。

では!

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