見出し画像

【プログラミング】初学者が知っておくべき知識ってなんだろう?

おはようございます!エンジニアになりたいコバヤシです。

こちらのnoteはプログラミングの書き方がなんとなくわかってきた初学者が、知っておくべき周辺知識とはなんだろう?ということについて考えたものです。残念ながら答えは載っていません。私もわからないので教えてほしいです…

※プログラミング初学者が書いた記事です。理解や比喩等に適切ではない表現が含まれている可能性があります。予めご了承ください。

充実してきた学習教材がカバーしていないところ

 昨今のプログラミング学習サービスの充実には目を見張るものがあります。様々なサービスがプログラミングに対するハードルをグッと下げ、その恩恵を授かっている人も多いのではないかと思います。

 このコト自体は最大限歓迎すべきことなのですが、ほとんど盲目的に各言語のお作法を学ぶことに終止して、前提となる知識の補完が行われていないと感じています。定期的に話題にあがる、プログラミング(特にフレームワーク)に関するブラックボックスをどこまで理解すべきかどうかというのも同じ議論でしょう。

この議論の構造をレゴに例えると

 プログラミングはレゴに似ているという表現を耳にするのですが、その例えに私もなるほど、と納得することが多いです。そこでこの問題をレゴに置き換えて構造を理解してみようとおもいます。(とはいえ、レゴを買ってもらった・買おうとした記憶はないのでこれ以降に登場する比喩がレゴ的に的確かどうかはわかりかねます…)

 レゴの最小単位はブロックです。様々な色や形をしたをブロックが存在しています。レゴで家を作りたいとして、まず屋根を作ってみます。屋根の三角形を四角いブロックをどう組み合わせていけば作れるのか、形や大きさの違うブロックを組み合わせたほうが、よりきれいな三角形に近づくのではないかなど考えることは色々ありそうです。屋根を完成させるにはそれぞれのブロックの使い方を知っている必要がありますよね。また、一度屋根を完成させると別の機会に三角形のテントを作ることは、手順の見立てがついているので比較的容易そうです。

 もう一つの方法として、既に組み上がった屋根自体がパーツとして販売されていたとしたら、それを買ってしまうのも一つの手でしょう。こちらの方法は手早く簡単そうですが、応用がききそうにありませんし、最小単位であるブロックの使い方を学ぶことができません。

 また一方で、多くの人にとってレゴブロック"そのもの"がどのような方法で製造されているかは知る必要はないでしょう。

プログラミングに戻してみます。

最小単位のブロック      =  プログラミング初学者が知っておくべきこ
既に組み上がった屋根     =  便利すぎるフレームワーク
レゴブロックの製造方法 =  知らなくてもよい丸飲みしていい部分

上記のようなイメージでしょうか。


 ここで難しいのは、プログラミングにおいて"ブロック"と"製造方法"の境界線が恐らく明確でないということです。現役エンジニアの間でも意見が別れそうですし、目的が、とりあえずWebサービスを作りたいなのか、"エンジニア"になりたいのかでも許容範囲は変わりそうです。

・ORマッパーは使えてもSQLは書けない…
"エンジニア"としては問題かもしれませんが、Webサービスを作ることに主眼を置くと今はとりあえずOKかもしれません。

・Webサービスを作りたいが、httpを知らない…
さすがに支障をきたしそうです。

 上記は今思いついただけの例ですが、この辺を整理して学べるサービスが出てくるととても助かります。現状なさそうなのでエンジニアの方にインタビューしていくしかないのかなと。そういった意味でもプログラミングを学ぶ上で、エンジニアが周りにいる環境を作るというのは大切なのかもしれません。

(連日宣伝っぽくなりすぎるのでリンクは貼りませんが、私はオンラインサロン入江開発室に所属することでそうした環境にすることができました)

------------------
コバヤシのTwitter

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