見出し画像

「論理的思考vs観察力」プログラミング初心者にとって大切なのは?

「アルゴリズムから始めよ」は正しいのか?

「先輩、プログラミングを始めたいと思ってるんですけど…」という質問をした際、プログラマから返ってくる答えは概ね3種類だ。

①ふーん、何を作りたいの?
②そしたらまずはアルゴリズムからだね。
③(言葉は発さず、おもむろにカバンからC++の参考書を取り出す)

①の先輩はなかなか悪くない。漠然とプログラミングを始めたい人にとって、その目的を明確にすることは非常に重要だ。
そして目的は「何を作りたいか」というシンプルな一言に集約される。
この質問に「自分の仕事を自動化するソフトを作りたい」「ゲームアプリを作りたい」と答えることで、
具体的にどのような言語で、どのようなスキルから高めていくことが必要なのかが明確化できるだろう。

②の先輩について今回は考えていきたい。
複数の言語でのプログラミング経験がある人であれば、多くの言語は「アルゴリズムがどのように文字として表現されるか」の違いであり、
アルゴリズム(条件分岐やループ構造など)を学ぶことがその後のプログラマとしてのスキルアップに大きな影響を与えることは疑いの余地がない。
しかしながら、言語やプログラミング補助ツールが発展した現代においてもアルゴリズムは第一優先事項なのだろうか?

③の先輩には「急用ができました」とすぐに伝えよう。

プログラミングツールの発展とアルゴリズム

 アルゴリズム学習から得られるものは、プログラミング学習の成果として期待されている最たるものの一つ、いわゆる「論理的思考力」である。
もし学習コンテンツとしてプログラミングを捉えるのであれば、アルゴリズム学習から始めるのは非常に良い考えだ。

 一方で、何かを作りたいという明確な目標がある方にとっては、アルゴリズム学習は少し遠回りな道となるかもしれない。
プログラミング言語を必要としないノーコードツールでも高い機能を持ったソフトを開発することができるようになった昨今では、
どう作るか(≒アルゴリズム的思考)よりも何を最終的に成し遂げたいのかを的確にイメージする力の方が大切になる。
そして、このイメージ力に直結しているのが「観察力」だ

そのボタン、なんですか?

観察力について説明する上で、まずは慣れ親しんだ以下の画面を見てほしい。

改めて書くと、この画面は「特定のパスコードが入力されたらスマホのロックを解除する」という機能を持った画面となる。
しかし、例えばプログラマにはこの機能は次のように見えているかもしれない。

~あるプログラマの目線(途中から読み飛ばしてOK)~
①指によって画面がタップをされたら、タップされた位置を検出し、
一番近い数字のボタンはどこか判定する。
ボタンからあまりに距離が離れていればその入力はキャンセルする。
②一番数字の近いボタンを光らせる(白黒を一時的に反転させる)
③入力された数字を記憶する。画面上部に現在何文字入力されているかを表示する
④手順を繰り返す。指定された文字数に達したら、ここまで入力された数字とパスコードを照合する。
OKの場合は次の処理に進み、NGの場合はNG表示を行った上でここまでの入力をキャンセルし①に戻る…

「よし、プログラミングは辞めておこう」と思われた方、もう少しだけ待ってほしい。
一見面倒なことを書いているように見えるが、これは私たちが日常的に見ているスマホ画面で実際に起こっていることであり、特別な才能も超能力も必要ない。
ただ、目の前で起こっていることを見ているだけだ。

そしてこの「観察力」を鍛えることができれば、便利な時代に生きる私たちは、ノーコードで作りたいものを自由自在に作ることができる。
だからこそ、これからプログラミングを始めたい人には「観察力」を大切にしてほしい、と改めてここでお伝えしたい。

観察することで世界の見え方が変わる

プログラミングを日常的に行うようになり、自分自身で最も変化を感じたのがこの観察力だった。
観察することを意識し、何より楽しむことで、ただ部屋の電気をつけるだけでも「電気の回路が繋がって…真上のLEDに電流が流れて…光が生まれて…」とちょっと気持ち悪い人になることができる。
すると「なんでLEDに電流が流れると光が出るんだっけ…」と更に気持ち悪い人になるための扉が開ける。
プログラマには自身の専門分野以外にも博識な人が多いと言われるが、観察力を発揮することで日常的に知識を得るチャンスを自ら開いているのだろう。
 ただ論理的思考力を高めるだけでなく、世界の見え方を変える一つの手段としてプログラミングを捉えていくことで、プログラマとしての応用力は高まっていく。
まずはこの記事をスワイプして閉じる前に、「スワイプって何が起きてるんだろう…」と観察してみることから始めてみるのはいかがだろうか。

この記事が気に入ったらサポートをしてみませんか?