プログラミングいちねんせい

プログラミング歴ゼロの初心者がもがくサイトです

プログラミング初学者にとって難しいと感じるところ

プログラミングは難しいです。書籍を読んで、動画を観て、頭を悩ませて、手を動かして。それでも、なかなか上達感は味わえません。今日はプログラミングがなぜ難しいと感じるのか。初学者目線で書いてみたいと思います。

私のプログラミングスキル

数年に1度興味がわき、気が向いたときに勉強するという程度だったので、期間が空くと次に触るときには何もかもを忘れてしまっているという状態でした。しかし、コロナで勤務内容や勤務形態が変化したのをきっかけに、先月から真面目に向き合い始めました。向き合うなんて言葉を使いましたが、単純に触っていて面白いのでこの機会にプログラミングスキルをきちんと身に着けたいというのが理由です。その程度のプログラミングスキルなので胸を張って初学者と言えそうな気がします。

プログラミングが難しいと感じるところ

書籍を読破したものの何も作れない

「読破した!長かったー!さあ、作るぞ!って、あれ?読み終わったけど次は何をすればいいんだろう?」。あるあるですね。初学者は、書籍を読み終わったとしても往々にしてほぼ身になってません。なにせ、ただ読み終えただけなので。「1週間で身につく」というタイトルにフラフラと誘われ続けます。

周りにプログラミングに詳しい人がいない

ネットには「周りに聞くのが一番良い」と書かれていることが多いですがエンジニアの知り合いがいない場合、聞ける相手はドットインストールのメンターか teratail のような質問サイトだけです。ドットインストールはプレミアム会員のみ月に5回だけ質問できます。当然、その動画に関する質問に限られるので使いみちとしては狭いです。

teratail はとても素晴らしいサイトですが「こんな程度の質問していいのかな?」「こんなに何度も質問していいのかな?」「怒られないかな?」と遠慮してしまうのも事実です。

何を覚えればいいのかわからない

例えば書籍の場合、書いてあるので必要なことなのだろうと最初から最後まで覚えようとします。しかし、人間は寝ると何割かを忘れてしまいます。次に同じページを見たときに「また忘れてる。こんなことを続けて上達できるのか?」と焦ります。では、書籍の大事な部分だけでも覚えようと考えますが、どこが大事な部分なのかがわかりません。初学者はそこの判断をするための材料を持っていないからです。

何がわかっていないのかわからない

これもあるあるですね。書籍を読んだり、写経をしたり、解説サイトを眺めたり、動画を観たりと、いろいろ学んでいるなかで何がわかっていないのかを説明できる初学者は少ないと思います。学習に必要な地図を持っていれば埋まっていないところがわかりますが、最初は難しいです。

プログラムをどこに書けばいいのかわからない

学習サイト等を観ていると「ここで、この機能が必要です。ですから、ここに書いていきます」と画面をスクロールさせ function が並んでいるなかに移りササっと書くわけですが、初学者は「なぜ、複数ある function のなかで、わざわざここに割り込んで書いているのだろう?なにか意味があるのかな?」「さっきまで末尾に書いてたのに、急に先頭に書き始めた。なんでだろう?」と疑問がわきます。しかし、学習サイトの多くは「なぜ、ここに書くか」までは語りません。ここで初学者は「なぜ、ここに?」が霧となり、目の前の書き進められているプログラムは頭に入ってきません。え?私だけですか?

文字列かどうかの使い分け

プログラムを書いていくなかで$titleと指定するのか'title'と指定するのかtitleと指定するのかがわからないことが多々あります。例えばこれ。

$stmt = $pdo->prepare("insert into todos (title) values (:title)");
$stmt->bindValue('title', $title, PDO::PARAM_STR);
$stmt->execute();

PHP から DB に書き込むときのプログラムです。プレースホルダーである:titleはそのまま書いているにもかかわらず bindValue の第1引数では`title`とシングルクォーテーションで囲ってあります。囲わないとエラーになります。毎回、ほぼ確実にこの手のエラーで足止めされてしまいます。

調べ方がわからない

「公式リファレンスを見ることに慣れましょう」と言われても、門外漢をフルスイングで殴ってくるような雰囲気を帯びた、荘厳な表現で書き綴られているので、とても読めたものではありません。

英語がわからない

What are you taking about?

モチベーションの維持

1日目:「今日は頑張った!明日も頑張ろう!」
2日目:「昨日頑張ったし今日はゲームで遊ぼう。明日頑張ろう!」
3日目:「あと1日くらい大丈夫。明日頑張ろう!」
4日目:「今日はやらないと。でも、面倒だなあ。明日頑張ろう!」

まとめ

明日は、私なりのこれらの対策を紹介します。