プログラミングが上達するために行った内容を紹介する

こんにちは管理人(@vip___p)です。

今回は私がプログラミングを上達するために行ったことや学習内容等を紹介していきます。

未経験者から1年半くらいの人が対象です。

ちなみにプログラミング言語はJavaについて話していきます。

プログラマーとして働き出すと、

プログラミングの書籍を読んだり色々学習したりすることが必然的に増えていきます。

ですが自分のスキルや環境にあった学習を行わないと

効率が悪く、せっかく身につけた知識が生きないことは当然あります。

実際自身の学習内容を振り返ってみると

学習コストが想像以上にかかったり

現状の自分の知識量では理解できない内容だったり

実践で使用する機会が少ない技術を学習してしまいました。

そんな時は明確なロードマップの様な物があれば

正直助かったので今回作成することにしました。

下記のような方は是非参考にしてください。

  • 今からプログラミングの学習をおこなう人
  • 経験年数が短くて何を学習すれば悩んでいる方

なぜJavaを選ぶのか?

そもそもJavaをなぜ選ぶのかと言うと理由は3つあります。

順に紹介していきます。

案件数が多い

1つ目の理由は、案件数が多い。

案件数が多いので案件に参画しやすくなります。

逆に案件数が少ない言語だと、経験年数が短い人が案件に参画することは正直厳しくなります。

あなたが人を雇う側なら経験年数が多いほうがどこか安心してしまいますよね。

なので最初は無難に案件数が多い言語を選ぶことをおすすめします。

書籍や参考サイトが多い

2つ目は書籍や参考になるサイトが多い

働き出すと不明点などはWEBでググることが格段に増えます。

そんなときにJavaのような初学者が多く

案件数が多い言語だと

同じように悩み解決してきた先駆者たちが山ほどいるのです。

悩んだ内容をどのように解決したのかをわかりやすく、まとめてくれています。

マイナーな言語やフレームワークを使用したときにググって出てこなかったら自己解決する必要があります。

そのときに自分の知識少なかったり経験が乏しかったりすると不明点を解決するのも一苦労です。

なので私はJavaをおすすめします。

オブジェクト指向

3つ目は、オブジェクト指向言語だからです。

他のオブジェクト言語に切り替えるときに

学習コストは少なくなるというメリットがあります。

以上2点の理由から私はJavaをおすすめします。

学習内容

各学習内容と期間やポイントにまとめて触れていきます。

今から基礎的な学習を行おうと検討している方や自分がどの段階にいるのかを把握したい方など

参考になれば幸いです。

基礎学習

  • 期間・2〜3ヶ月程度
  • 学習内容・基礎知識の学習・基礎構文・オブジェクト指向の概念
  • ポイント・いきなり全てを理解しようとしない。
  • 段階・基礎固め

まずは基礎的な学習を行います。

仕事に興味を持った段階で触れておきたい内容です。

職業訓練校を検討しているのであれば似たような学習内容になると思います。

転職を検討している方はこの辺りの内容は最低限抑えてから行いましょう。

一人で学習することが大変という方は

訓練校でゆっくり学習しても良いと思います。

下記の記事が参考になるはずです。

エンジニアの職業訓練校を通ってみて授業内容や就職状況は?

この段階で転職活動をしたら悲惨でした。

エンジニア未経験が転職活動をしたら悲惨だった

最低限のコーディング規約

  • 学習内容・最低限のコーディング規約に触れて慣れる
  • 期間・1週間
  • ポイント・使用頻度が高い内容は必ず丁寧に押さえて習慣づける

変数名・メソッド名・インデントなどよく使用するものは最低限抑えておきたいです。

1度に色々覚えるとパンクするので少しづつ使用して慣れていきましょう。

SQLの学習

  • 学習内容・SQLを使用と検索画面などの作成
  • 期間・2〜3週間程度
  • ポイント・使用頻度が高い内容は必ず抑え実際の画面と紐付ける

SQLの学習(4大命令・テーブル結合)と簡易的な検索・削除画面の作成を行っても良いと思います。

使用頻度が高いのはSELECT文です。

検索画面の作成を行う時や

依頼されて特定のデータを調べるときとかにもよく使用します。

実際の技術をどのように使用するのかイメージすることは重要です。

HTMLの学習

  • 学習内容・最低限のHTMLタグの把握
  • 期間・1〜2週間程度
  • ポイント・タグを見て何を示しているのか把握できるレベルになりたい

テーブルやタグの把握を行います。

画面を見てタグと連動できるレベルに持っていきたいです。

めちゃくちゃ重要ではないが正直知っておいてほしいレベルですかね。

Eclipse

  • 学習内容・Eclipseの環境構築
  • 期間・1〜2週間
  • ポイント・環境構築を行ってEclipseに慣れる

インストールから使用方法・ショートカットの把握を行います。

これも徐々に把握していけばよいかと思います。

Strutsを使用して簡易的なWEBアプリを作成する

  • 学習内容・ オブジェクト指向の実践・APIの活用 MVCの把握 フレームワークを使用して画面遷移やバリデーション処理の実装
  • 期間・1.5〜2ヶ月
  • ポイント・とにかくやることが多い

例 TODOリストやメモ帳、勤怠システム等

エラーの対処方法や実際にフレームワークを使用してみる。

少し応用な内容の把握を行います。

ここで疑問に思うと思いますがなぜStrutsなのか。

理由としてはいきなり新規開発などの案件に参画することは少なく

Struts(JSP)から〇〇に移行や改修作業などが多いからです。

正直コードを読めるに越したことはないと思います。

また最初に簡易的なWEBシステムを丁寧に

作っても振り返ってみれば、かなり乱雑なものになると思います。

理由は知識があとから付いてくるからです。

余裕があるのであればStrutsでの学習をおすすめします。

余裕がなければSpringで良いかと。

この辺りで基礎的な内容を終了

この辺りで基礎的な内容を終了します。

会社であれば研修が終了したくらい?

でもし現場に出たとします。

研修と現場とのギャップを感じるはずです。

(少なくとも私は絶望に近い感情を覚えました。)

コード量であったりパッケージ数・SQLの長さなど研修とは規模が違うので

その辺りになれるにも早めに慣れておくにも現場に出ておきたいですね。

Spring bootの学習 余裕があれば

  • 学習内容・ 画面遷移・バリデーション・DIコンテナ等
  • 期間・2〜3ヶ月
  • ポイント・移行作業を想定してみる

Strutsからの移行作業、

もしくは新たに開発をして

Spring(タイムリーフ)または開発現場のフレームワークになれる形で良いと思います。

この辺りで最初の学習から1年程度の学習は終えているのではないでしょうか。

開発現場で必要な知識を都度優先して学習してください。

まずは仕様の把握だったり、フレームワークの学習だったり連携システムだったり。

リファクタリング

  • 期間・1.5ヶ月程度

リファクタリングの学習を行います。

はじめの頃はコードを書くことが多いのではないでしょうか。

コーディングするにあたっても

コーディング規約や暗黙のルール的なものがあります。

コーディング規約とググれば出てきますし、

リファクタリングの書籍にも詳しく記載されているので

早めにリファクタリングの学習を行うことをおすすめします。

現状のスキルなら設計の学習を行うより優先するのは

コーディングのスキルを伸ばすことだからです。

案件に実装からの参画ならばなおさらです。

(ですがもし設計からの参画などであれば話は別です。)

デザインパターン

  • 期間・2ヶ月程度

デザインパターンの学習

何かと引き合いに出されるデザインパターン。

リファクタリングの方が人用頻度が高いと思いますが

デザインパターンも正直外せません。

書籍・プリンシプル オブ プログラミング

重要なことばかり記載されています。

コードを読むことに慣れていない方でも概念のレベルでまとめられおり

かつわかりやすいので非常におすすめです。

何を学習したらよいか悩んでいる方などにもおすすめで

幅広い内容に触れているので学習したい内容が見つかるかもしれません。

ちなみに

この辺りまで来ると詳細設計や基本設計の仕事も覚えていく段階ではないでしょうか?

UMLやクリーンアーキテクチャ、ドメイン駆動設計など学習してみても良いと思います。

自分に必要な内容の学習を行ってみてはいかがでしょうか?

まとめ

今回のまとめです。

簡易的ですがロードマップのようなものを作成してみました。

重要なのは実際にコーディングして悩んで解決策を見つけることです。

特に最初は悩むことがばかりだと思います。

その際の手助けとなるのが参考書だったり検索力だったり自身の蓄積された経験だったり。

最初は特に大変だと思いますが頑張りましょう。

少しでも参考になれば幸いです。