ユーニックス総合研究所

  • home
  • archives
  • programming-dont-know

プログラミングがわからないので路傍の石になった

プログラミングがわからない

プログラミングがわからない時、どうするべきでしょうか?

やめる?
あきらめる?
頭を抱えて路傍の石になる?

実はプログラマーもわからないことは沢山かかえています。
私も独学でプログラミングを学び、Webエンジニアとして働いた経験のある個人Web開発者ですが、今現在もわからないことだらけです。
そういう時、プログラマーはどうしているか? 教えます。

具体的にはプログラマーはそういう時↓のように問題を解決します。

  • 問題を分割する
  • 問題をググる
  • 問題を考える
  • 問題を人に聞く
  • 日を置く

この考え方はプログラミングがわからない人にも使える考え方です。
具体的に解説していきます。

プログラマーの『わからない』ことの潰し方

プログラマーはわからないことを潰すとき、さきほどの考え方を実践しています。
まずは「問題を分割する」ところから見ていきたいと思います。

問題を分割する

問題と言うのは、みなさんであれば「プログラミングがわからない」というのが問題です。
プログラマーもプログラミングをしていると、こういった問題に出会うことが多いです。
たとえば「ライブラリの仕様がわからない」とか、「バグがよくわからない」とか。

みなさんとプログラマーの違いは、こういった問題を自力で解決できるかどうかの違いと言えます。
問題の解決にはコツがあります
その1つがこの「問題を分割する」というものです。

問題と言うのは、じつはみなさんが思っている以上に大きなものです。
「プログラミングがわからない」というのは大きな問題です。
大きな問題は、基本的に人には解けません。
これは能力の問題と言うよりは、人間の限界なんです。

プログラマーは問題を自力で解決しますが、最初に行うのがこの「問題の分割」です。
これは大きな問題を小さな問題に分割することです。
大きなロールケーキを、1皿分のケーキに分割するんですね。

小さな問題と言うのは人間にも解けます。
みなさんが問題が解けないのは、じつは問題が大きかったからです。

なにがわからないのか?

たとえば「プログラミングがわからない」という問題は、↓のように分割できます。

  • プログラミングの概念がわからない
  • プログラミング言語の学習法がわからない
  • プログラミング環境の構築法がわからない
  • プログラミングのfor文がわからない
  • etc

プログラマーは問題を解決するとき、最初にこのように問題を分割します。
そして、それぞれ問題が小さくなったところで、さらに問題が分割できないか試します。
そしてもうこれ以上小さくならない大きさの問題になったら、次の方法を試していきます。

これがプログラマーが最初に行う問題解決の方法です。

問題をググる

「問題の分割」で十分に問題を小さくしたら、次に問題を調べます。
プログラミングの問題はたいていググれば解決します。

たとえば先ほどの例で言ったら

  • プログラミングの概念がわからない

という小さな問題があります。
これをさらに小さく分割すると

  • プログラミングの意味
  • プログラミングはなぜおこなうのか?
  • プログラミングで解決できることは?

という小さな問題になっていきます。
あとはこれらのワードをGoogleで調べます。

問題は具体的であればあるほどいいです。
そのほうがググったときに詳細な情報が出ます。

問題を考える

小さな問題をぐぐり、何サイトか見て回って問題について調べたら、あとは自分で考えます。
これはネットサーフィンしながらでもいいですし、じっくり横になって考えてもいいです。

この時間は、頭の中で調べた情報を整理する時間です。
この時間を持つことで頭の中で情報が整理され、あなたは問題解決に一歩近づいていきます。

頭の中でうまく問題が整理できない時は、もう一度Googleで問題を調べます。
ワードをちょっと変えたりして、検索結果を新しくします。

いろいろなページの情報を見て比べるのは非常に意味があることです。
問題のソムリエになったつもりで情報を調べましょう。

「こちらのページではこう書いてあったけど、こっちのページではどうかな?」
「同じことが書かれているな、どうも信じてもよさそうだ」

↑のように問題を調べていくといろいろなことがわかるようになってきます。
それはまるで頭の中のパズルのピースが少しずつ動いていくかのような感覚です。

問題を考えるときのコツはあせらないことです。

「こんなことに時間を使うのなんてもったいない!」
「こんなことに手間取っていられない!」
「あー! 解決できなくてイライラする!」

などと考えずに、じっくりとゆっくり考えるのがコツです
お茶でも紅茶でも入れて、それをすすりながら「あーでもない」「こーでもない」と問題を楽しむつもりで考えましょう。

プログラマーの多くは、この問題解決を楽しんでいます。
(それは訓練の結果かもしれませんが)
そう! こういった問題解決はプログラミングの一部なんですね。
ぜひあなたも問題解決を楽しんでみてください。

問題を人に聞く

それでも問題が解決しない時は、人に聞きます。
こういう時にお決まりのサイトがあります。

  • StackOverflow
  • Teratail
  • 5ch

StackOverflowとTeratailはどちらかというと専門的なコードについて質問するサイトです。
匿名サイトなんですが、意外と5chは有益な回答が返ってくることが多いです。
ただし質問するときは敬語で、丁寧に質問しましょう。

注意点として、問題を人に聞く前にやっておかないといけないことがあります。
それが↓です。

  • 問題の分割
  • 問題の整理
  • 問題の要点をまとめる

漠然としたおおきな問題を人に投げかけても、回答する人はわずかです。
質問に答えてもらうコツは、質問の内容を小さくし、短く質問することです。
ですので先ほども書いたように問題は十分に分割して小さくしておきましょう。

日を置く

  • 問題を分割する
  • 問題をググる
  • 問題を考える
  • 問題を人に聞く

これらを一通りやって、それでも問題が解決しなかったら、日を置いて考えましょう。
この「日を置く」というのは意外かもしれませんがけっこう効果があります。
調べた情報などが、日を置くことで頭の中で発酵するんですね。

そうしてある時「あ! そうかぁ!」となって解決するんです。
このアハ体験はプログラマーは日常的に経験しています。
みなさんも問題が解決しない時は日を置いて、再び問題に取り組んでみてください。

🦝 < ヨーグルトみたいだな

🐭 < 納豆みたいだ

プログラミングの学習方法について

プログラミングがわからない人は学習方法も工夫してみましょう。
先ほども言ったように「わからない」のは「問題が大きいから」です。
つまり学習も問題を小さくして取り組めばいいんです。

たとえばプログラミングでif文がよくわからないとします。
そうしたらif文についてelse ifelseなどは無視してif文だけを考えます。
それでもまだ問題が大きかったら、if文に書かれている式を考えます。

式と言うのは例えばif (true)trueだったりif (1 + 2)1 + 2だったりです。
そうしたらtrue1 + 2について考えます。

このように問題はどんどん小さくしていきましょう。
問題は切り刻むのがコツです。とことん小さくしましょう。

if文の式がtrueだったり1 + 2だったりするとき、if文はどのように動作するのか? とか、if文の式がfalse0だった時は逆にどのように動作するのか? ということを考えます。
そうやって考えていくと、小さい問題が解決していって、解決した小さな問題が徐々に大きくなっていきます。
その小さな解決した問題のかたまりが十分に大きくなったとき、自然と大きな問題が解決します。

プログラミング学習の極意

プログラミング学習の極意はさきほども紹介しましたが、↓のとおりです。

  • 問題を分割する
  • 問題をググる
  • 問題を考える
  • 問題を人に聞く
  • 日を置く

これは普遍的な方法です。
この方法を極めてください。

捕捉するなら、この方法を繰り返しおこなって反復するのもコツの1つです。
プログラマーがなぜ何日もかけて問題に取り組み、問題を解決できるのかと言うと、この反復があるからです。
問題に何度もトライして時間を置いて、また何度もトライしてという風に繰り返すことで、大きな問題のかたまりを徐々に削っていくんです。

たとえるなら勇者がラスボスのHP(ヒットポイント、体力)を削っていくのと同じ感覚です。
大きなHPも時間をかけて徐々に削っていくことで、最後にはラスボスを倒すことが出来ます。

この方法はプログラミングに限らずいろいろなところで使えます!
ぜひ身に付けてみてください。

環境構築方法について

環境構築も基本的には同じです。
問題を分割して、それに取り組みます。

試しに環境構築の問題を分割してみましょう。

  • Windowsにソフトウェアをインストールする方法
  • Windowsからソフトウェアをアンインストールする方法
  • Windowsにインストールされているソフトウェアを確認する方法
  • Windowsの環境パスの編集方法
  • Windowsに○○言語の環境を構築する方法
  • ○○言語のダウンロード方法
  • ○○言語のインストール方法、手順

環境構築と一言で言っても↑のようにたくさんの問題に分割することが出来ます。
↑の問題でわからないところがあったら、それについて調べることであなたの周りの小さな問題はまた1つ解決し、大きな問題の解決に1歩近づくことが出来ます。

おわりに

最後に繰り返しになりますが、プログラミングがわからない時は↓の方法を試してみてください。

  • 問題を分割する
  • 問題をググる
  • 問題を考える
  • 問題を人に聞く
  • 日を置く

この方法はどんな問題にも使える便利な考え方です。
あなたの「わからない」が解決するように祈っています。

🦝 < 幸運を