プログラミング初心者がプログラミングで躓く理由とは?
プログラミングを勉強し始めて間もないころに、アプリケーション開発に取り組むとプログラムが書けなかったり、書いている間に何を書いているかわからなくなってしまって混乱してしまうこともあります。
そもそも、アプリケーション開発は、「アプリケーションの設計図」を作ることから始まりますが、プログラムを書き始めた初心者の場合は、「設計図」の書き方を知らなかったり、そもそも設計図を作るという概念自体が無いこともあります。
プログラミング初心者がアプリケーション開発で躓かないためのポイントについてお話していきましょう。
システムの開発工程
「アプリケーション」は、「ソフトウェア」の類型の1つであり、1つの「ソフトウェアコンポーネント」のことを言うケースもあります。
大規模なシステムでは、複数のソフトウェアコンポーネントを内包していることも多いでしょう。
一方、システムの開発工程には、概ね下記のようなものがあります。
- システムの企画
- 要件定義
- 外部設計
- 内部設計
- プログラミング
- 単体テスト
- 総合テスト
- システムテスト
- 運用テスト
プログラミング初心者は、この中でも「プログラミング」の中の「プログラムの書き方」を学び始めたところですので、この工程の中で自分がどのフェーズを担当しているのか、よくわからないという人も多いのではないでしょうか。
プログラムを書く場合でも、コードが増えてきた時の関数分割やクラス分割を行う方法など、プログラムに関してだけでも学ぶ要素は膨大になってきます。
初心者がプログラミングで躓くポイント
システムに必要な機能などを明確にしていくことを「要件定義」と言いますが、システムを作るために「設計図」を作っていく段階では、システム要件を決めておく必要があります。
初心者がプログラミングができない理由の1つとして、「要件の内容が理解できていない」ということがあります。
システム要件の理解不足
システム開発に慣れないうちは、システム要件の「間違った解釈」を元にプログラムを書いてしまうこともあり、システム要件の理解力が不足しているために、「この機能は何のために必要な機能なのか?」がイマイチわからないという状態であることも多いでしょう。
そのために、プログラムを書こうとして手が止まってしまったり、書いているうちに整合性が取れなくなってきたりといったこともあります。
プログラムを作成する際に大切なのは、「開発しようとしているシステム自体を理解すること」です。
当たり前のことのようですが、その「当たりまえ」ができていないために、プログラミング初心者は何を作っていいのかわからず混乱してしまうのです。
特に、業務システムの場合は、「業務についての理解」も必要となってくるため、初心者の混乱を招く原因となっていることもあるのではないでしょうか。
チーム開発では、ベテランの方もいたり、初心者の方もいたりと、経験の差により開発が遅れてしまうこともありますので、プログラミング初心者をサポートできるようなチーム体制を整えることも大切です。
要件をプログラムにできない理由
プログラミング初心者が学ぶべきなのはプログラムの書き方ではなく、「どうやってプログラムにしていくのか?」を考えていく思考法です。
プログラム関係の本の中には「こう書けばこうなる」という「プログラムの書き方」は書いてありますが、プログラムを書くための「考え方」は自分の経験を通して磨いていく必要があります。
経験を積むには、「オリジナルのシステム開発」に自分で取り組んでみることが、良い練習になるのではないかと思います。
本に書いてある方法ではプログラムが動かなかったり、他の部分を書き直したら、別の部分が動かなくなったりと、いろんな失敗を繰り返すと失敗から学んでいくことができるため、学習速度と学習濃度は大幅に上昇していきます。
オリジナルのシステムを作ることで、プログラミングに対する自信もついていきますので、自分で作った要件を自分でプログラム化してみることから始めてみると良いでしょう。
オブジェクト指向の理解不足
初心者がプログラミング学習で躓くポイントとして挙げられることが多いのが「オブジェクト指向」です。
オブジェクト指向の理解が難しいため、初心者がプログラミンで躓いてしまうという例は数多くあり、筆者自身もオブジェクト指向の理解に苦しんだ時期がありました。
あいまいな理解でオブジェクト指向プログラミングを行おうとして、「何をどう考えていけばいいのかわからなくなる」という状況に陥ることも多々あります。
そして、オブジェクト指向の再学習を行うわけですが、それでも理解できず、ここで挫折してしまうパターンが多いのではないでしょうか。
方法を学ぶのではなくで「概念」を学ぶため、「理解に時間がかかるのは当たり前」という通念もなく、オブジェクト指向を学び、いきなりプログラムを書き始めてしまうと、混乱をきたしてしまいます。