プログラミングを学習するために入門書を進めたり、Progateなどに取り組んでいる人は今非常に多いと思うのですが。時間を割いて取り組んでいるのになかなか自分で作れるようになれないと感じている人って多いんじゃないかなあと思います。
過去の僕もそうだったので、もしそんな状態の人がいたらこれから何をしていったらいいか経験談も含めてお話ししていこうと思います。( ˙-˙ )

目的がプログラミングを覚えることになっていないか
プログラミングを学習しているのだから、プログラミングの構文とか処理の進め方を理解することは必要ですが。for文の使い方とか、SQL文の使い方とか、スラスラ書けないしわからない部分があるからと言って何度も初歩的な部分を繰り返し学習していないでしょうか?
反復学習すること自体は良いことですが、それで肝心な目標物を作ることが進まなかったら何の意味もありません。
もしもあなたが開発の仕事でお金を稼ぎたいとか、多くのユーザーに使ってもらえる素晴らしいアプリを作るためにプログラミングをやっているのであれば、目標物(作るもの)を少しでも作っていくことの方がプログラミングを覚えるよりも大事なはずです。
とはいうものの過去の僕もこの辺の意識が変えられず苦しみました。
プログラミングの簡単な教材は一通りやってみたものの、「理解も追いついていないしこんなレベルじゃ自分でアプリを作るなんてまだまだ先の話だ」と思っていたのです。
プログラマの腕はモノを作らないと磨かれない
今になって実感しているのですが、モノを作る知識が不十分だから開発の前に勉強。ではなく、
スキルが定着していないからこそモノを作っていく必要があるのだと思います。
というのも、やはりプログラミングの組み立て方、サービスの処理というのは実際に動くものを作っていく過程の中でないと理解していくことが難しいんです。
文法やテクニックを学んだところで何でその文法を使う必要があるのか、それをすると何が便利なのかというのが頭に入らないんですよね。
プログラムの書き方よりも、まずは実現したい機能を作るにはどういう手順で進めていけばいいか。
これが分かれば書き方なんてのは検索して見つけ出せばいいので
そういう意味でも知識が定着していない人ほど簡単でもいいので自分で何かアプリを作ってみることを強くお勧めします。
じゃあ、どういったものを作ればいいの?
システム開発の全体像が見えていないうちは、「モノを作れって言われてもどんなものを作ればいいの?」と思う方がほとんどだと思います。
いつまでも入門書やネット上にある簡単なチュートリアル形式のものを写経しているだけでは自分で開発していく力はつきません。
かといって特に作ってみたいものもないという場合は下記の機能を持つものを作ってみることをお勧めします。
これらはWEBサービスでよく使われているごく一般的な機能です。
これらがスムーズにできたら仕事として食っていくことはできますし、もっと複雑な機能を作らなければならなくなった場合でも応用していくことができるでしょう。
- ユーザー管理機能(メールアドレス、パスワードによるログイン認証、ログアウト機能)
- プロフィール登録、更新機能
- CRUD処理のある機能(CRUDとは、新規作成、更新、削除のある機能のことです対象はユーザーでも、掲示板とかでもなんでもいいです)
- CSVインポート、エクスポート機能(Excelなどで管理された大量のデータを取り込んだり、出力したりする機能です、詳しくは検索してみてください)
- 入力フォームからの送信機能(ユーザー登録などを実装すれば自然に使うと思いますが、テキスト入力、選択肢から選ぶものなど、できれば様々な入力欄を使ってみるといいと思います。)送信に失敗した際にフォームに入力した値が残っているなどの処理を入れるとなおよし。
ざっと雑にあげてみましたがこれらの機能をチュートリアルなどを見ずに実装してみるとかなり勉強になると思います。
もちろん最初は教材を参考にしても良いですが、最終的には書き方はともかく処理の流れを自分で人に説明できるレベルまで理解するようにしてみてください。
webサービスでは当たり前にある機能ですが、一から作ってみると最初のうちはなかなか難しいと思います。
しかし苦しんだ分だけ確実に自分の地肉になっていきますのでぜひ挑戦してみてください。
余裕があれば自分で「普段使っているwebサービスには他にこういう機能もよくあるよなあ」と考えて実装していけるとパーフェクトですね。