プログラミングの学習をされている方で、伸び悩みを感じる方は多いのではないでしょうか。

よく「他人のソースを読むべき」や「作りたいものを作るべき」というアドバイスを耳にしますが、独学でそれができるなら、そもそも悩まないでしょう。

このように感じる方は、他人のソースコードを読んでもチンプンカンプンだと思いますし、
自作アプリも電卓ぐらいが限界ではないかと思います。

本記事では、このような状況を突破するための学習方針についてお話ししたいと思います。

 

おすすめの学習方針

じっくり考えて開発してみる

断言しますが、作らないと成長しません。

電卓でもいいですので、簡単なアプリをつくってください。

例えば足し算だけできる電卓アプリを作ったとします。
このアプリに、四則演算や累乗などの機能を追加してみましょう。

機能追加のたびにアプリが複雑になっていき、下記のような問題が発生します。

  • バグが多く、バグ修正に時間がかかる
  • 読みにくい
  • 追加機能の修正箇所がわからない

そこで、どのようにコードを修正すべきなのかを調査し、じっくり考えてください。

すると、オブジェクト指向やデザインパターンの必要性が自然と理解できるようになるでしょう。
このような実践を繰り返すことで、次第に設計力や既存のソースコードを読む力もついてきます。

 

WEB、データベースなどプログラミング以外のIT知識をふやす

ほとんどのアプリはデータベースやWebを活用していると思います。

Webに関しては、HTTP、GET、POST、SSH、WEBサーバー、アプリサーバーを説明できるか?
実際に使ったことがあるか?で現状の理解度がわかると思います。

データベースについてはMySQL(MariaDBでもok)でデータの取得・書き込みができるか?

これらについても、簡単なアプリ開発を通して、実践的に学んでみてください。
サーバーに苗字を送ったら、名前が返ってくるだけのアプリでもいいので、
まずは使ってみることが重要です。

 

ソフトウェアエンジニアリングの知識をふやす

ソフトウェアエンジニアリングの知識とは、これまでソフトウェア開発で苦しんできた先人たちの知恵がまとまったものです。*1

基本的には大規模な開発に用いられる考え方ですが、どんな場合でも使える知識が非常に多いです。
特に下記のような知識を習得するとよいでしょう。

  • ソフトウェア設計のための表記(UML等)
  • テスト技法

こちらも、簡単なアプリの開発で実践してみるのがよいでしょう。

*1 ソフトウェアの開発を、個人の感覚に依存せずに行うための知識と理解してます。
SWEBOKによると下記のように定義されています。

ソフトウェアの開発、運用、保守に対する、系統的で規律に基づいた定量的アプローチの適用。すなはち、ソフトウェアへのエンジニアリングの適用。
 

独学はきついと感じる方へ

こちらのコースを用意しています。

https://menta.work/plan/2503/12369

課題を解く→フィードバックを繰り返して学習していけるような仕組みなので、
上記でご紹介した内容を実践的に学習していけます。