私の上達過程
写経
自分のレベルに合う本をもとに写経しては、コードの意味を調べて理解し、少しづつ体に染み込ませるように身に着けていきました。
とにかく初心者のころは右も左も分からず、ちょっとしたエラーでも解決に何時間もかかったりして、全く学習が進まない時期も多々経験してきました。
今(執筆時点:2021年5月3日)のように、書籍やブログの記事が充実しているわけでなかったり、教えてくれる人を探すのが簡単ではなかったので、独学が基本だったのはきつかったです。
今ではUdemyでわかり易く動画学習できたり、Mentaのようなメンタリングサービスがあったりと随分充実してきているので、学習環境は良くなったと思います。
<今まで読んできた書籍>
- スッキリわかるJava入門 第3版 (スッキリわかる入門シリーズ)
- スッキリわかるJava入門 実践編 第3版 (スッキリわかる入門シリーズ)
- 新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- なぜ,あなたはJavaでオブジェクト指向開発ができないのか~Javaの壁を克服する実践トレーニング
- 増補改訂版 Java言語で学ぶデザインパターン入門
- オブジェクト指向をきちんと使いたいあなたへ
※Javaを主言語として使うようになってからは、オブジェクト指向技術の習得がもっぱらの関心時になりました。
書籍以外では、ドットインストールとSchooを活用してきました。
リファクタリング
写経をしていると、ここはもっとわかり易く書けないだろうか?
処理を共通化するともっとメンテナンスしやすくなりそうだ。
など、自分で改良できそうな箇所がみつかったり、何らかの改善をしたくなってくる気持ちが出てきます。
それはちょっとしたブレイクスルーの前触れです。
「まだ自分は初心者だから・・・」
「改良したコードが本当に正しいのかわからない・・・」
など、自分の声を打ち消すような思いが出てきたとしても、プラスの気持ちを信じましょう。
プログラミングに興味を持ったということは、技術に興味があるということです。
わずかでも向上する余地があるのであれば、その芽を自ら摘み取るようなことはせず、自分自身の成長した姿を追い求めましょう。
自作アプリケーション
いろんな本を写経し、自分なりの改善もできるようになってきたら、自分で何かを作ってみたくなります。
「自分には大したものは作れないだろうな・・・」
「素晴らしいアプリケーションはもっとすごい人が作っているから自分がいまさら作る必要なんてないんじゃないか・・・?」
というのは間違いです。
作るという経験はとても大変ではありますが、自分自身の成長を楽しめる素晴らしい行為です。
そして、写経するだけではわからなかった難しさと、それを乗り越えること得られるやりがいがあります。
本当に成長できるのが、自分でアプリケーションを作ることなのです。
<作ったアプリケーション>
今どのくらいできるようになったか?
1年目(入門者レベル)
私は2017年3月(34歳)にIT業界に復帰しました。
当時、PHPの不動産開発案件に参画させて頂きましたが、開発経験は独学のみで業務経験はありませんでした。
SQLと基本的なCRUDがわかるだけで、フレームワークは全くわからない状況でキャリアを再スタートさせました。
業務ではJavaScript(jQueryも)やCSSも学びながらだったので、結構大変でした。
PHPも何となくできるようになったつもりでしたが、別の業務システム開発では巨大なロジックの実装になかなかついていけず、何時間も悩みながらやっと小さなロジックを組み立てられるという状況でした。
この時期にこなしたことは、会社のJava研修課題(Webアプリケーション)と、とにかく1000行以上のコードを書くことでした。(業務外)
2年目(初級者レベル)
VBAを主とした業務に携わっていました。
SQLをこねくり回してレポートを出力するツールの開発などをしており、言語+DBの扱いに慣れてきたのがこのころです。
このころはVBAで楽天APIから書籍情報を取得して、会社の書籍管理システム用のマスターデータを作るということをしていました。(業務外)
3年目(中級者レベル)
Pythonで機械学習のデモアプリを作ったり、業務パッケージの機能追加の受託案件(Java)をこなせるようになってきました。
正直、Javaの業務経験はありませんでしたが、基本的なことは独学しており、新入社員の研修担当をできるようになっていたので、まったくわからずに困るということはありませんでした。
また、このときTypeScriptにも初めて触れましたが、なんとかこなせていました。
このころになると、不慣れな言語であってもなんとかプログラミングできるような応用力がついてきていました。
もちろん、元々PHPerなのでPHPが得意ですし、今はJavaも好きで使いこなせるようになっています。
言語の壁が無くなってきたことを境に、設計に関して興味がわいてきて、デザインパターンを勉強し始めました。
そこからテスト駆動開発やドメイン駆動設計にも興味を持つようになりました。
(もちろん、勉強は業務外)
私の場合、業務外でも常に自分をレベルアップさせるための学習を続けてきたことが今につながっています。
どのように上達したらよいか?
という答えは、「今の自分を成長させることのできることは全部やる」だと思います。
もちろん、時間というリソースには限りがあるので優先順位は必要ですが。
まとめ
- 自分の成長した姿を期待すること。ネガティブな自己意識より、ポジティブな自己イメージを持つことが大事。
- 業務外でも学び続けることが必要である。
- プログラミングの上達には、今の自分を成長させることのできることを全て行う。
参考書籍
- スッキリわかるJava入門 第3版 (スッキリわかる入門シリーズ)
- スッキリわかるJava入門 実践編 第3版 (スッキリわかる入門シリーズ)
- 新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- なぜ,あなたはJavaでオブジェクト指向開発ができないのか~Javaの壁を克服する実践トレーニング
- 増補改訂版 Java言語で学ぶデザインパターン入門
- オブジェクト指向をきちんと使いたいあなたへ
コメント