なぜプログラミングは難しいのか?

だれでもエンジニア / 山浦清透
4 フォロワー
1 動画再生回数·2024/08/30
【月・水・金の19時】に更新します。
山浦清透のプログラミング講座・エンジニアキャリア情報のYouTubeチャンネルです。
よろしくお願いします^ ^
■独学で自走できるエンジニアになるためのプログラミング学習サービス
https://dokugaku-engineer.com/
■UdemyでAWSやGitの入門講座を販売中
https://linktr.ee/yamaura
■プロフィール
山浦 清透(やまうらきよと)
Web系エンジニア
1987年生まれ、福岡県出身。京都大学大学院卒。
2014年に未経験からエンジニアに転向し、既存サービスの運営、新規事業の立ち上げ等を経験。プログラミングの修得に四苦八苦してきた経験から、開発現場で使えるエンジニアリング知識を発信。Udemy受講者数6万人。
どうもきですえ今日なんですけどもなぜ
プログラミングは難しいのかいやマジね
プログラミングねなんでこんな難いねんと
いやもう無理みたいなえそういう方にため
にねえなんでプログラミング難しいかと僕
もねずっとねプログラミングやってるん
ですけども最初のちねすごい苦手だったん
ですよねでそれがある時からねすごい得意
というか好きになってねえでそれにはま
天気があったんですよねであのま僕先輩の
エンジニアの人でもうこ天才めちゃくちゃ
すって人がいてでこの人とこのへぼちい僕
のね差分は何だろうっていうのすごい観察
してたんですよねでまその先輩にこう聞い
たいとかしながら見よう見まねとかもし
ながらあここが僕と違ったんだだから僕
ずっとプログラミング苦手だったんだ
難しかったんだっていうポイントがあって
それもねしてからねすごい一気に
プログラミング好きにね得意になっていっ
たんですよねで今日はねそのポイントをね
え是非お伝えしたいなと思ってましてこれ
ね知るだけで随分とそれを意識して
プログラミングやるとプログラミングの
難しさってどんどんなくなってね消えて
いくと思うしかつこの情報ってあの本とか
だとなかなか書いてない本とかだと表現し
にくいところがすごくあるところなので
是非ねちょっと最後まで聞いていって
いただけたら嬉しいですでまもう僕の話
するとね僕1番最初はそのプロやった頃
ってあのチュートリアルとかあとはこう
動画こうやったYouTubeとかユで
みたいなみたいなとかとこをねこう真似と
かをしていたんですよねま僕の頃は
あんまり動画そんなに多くなかったほぼ
チュートリアルみたいなのを見てたんです
けど書籍とかねでそれ真似するじゃない
ですかで真似して真似してまうまく動いた
やったってなるじゃないですかおしなんか
ちょっと分かった気もすんなまよくわかん
ないところも多いけどみたいなでそれ真似
してたんですけどえっとそっから次の
ステップすげえつまづいてたんですよこう
なんかお手本があってサンプルコードも
あったらそれをなんか真似することは
できるんですけどこう全然ねお手本のない
ような問題とか課題に出くわしけにえこれ
なんか真似するやつないえ真似するやつ
ないやばえこれそもそもどうやったらいい
のあの右も左もわかんない手も足も出ない
んですけどみたいなもうお手あげです何し
ていいか全然分かりませんみたいな
パパラパみたいなねあのそんな状態だった
んですよねでまこれね結構多くの人がなり
やすいかなと思ってんですやっ
プログラミングやっててねあれ結局なんか
1から自分で作ろうとしたらどうしたら
いいか何も分かりませんみたいなねでこれ
ねどうしてかって言うとあの非常にね
大きな勘違いがあって大体こういう時って
プログラミングてえ行動を書くことだと
思ってることが多いんですよねえ
プログラミングは単に行動書くことですと
思ってことは多いんですけどこれが大
間違いんですよこんなことないんですよ
全然違いますこの考え方をキラっとねこう
書き換えるだけで一気にねプログラミング
の難しさって減るんですこれがね
プログラミングの難しさを生み出してるね
大きな原因なんです
ねでじゃどう考えたらいいかって言うと
プログラミングっていうのは問題解決
だっって考えるんですよ問題解決って何
かって言うとまとある課題問題があります
とでそれをまプログラミングとかこう技術
っていうものを用いて解決するその一連の
手法なんですよねプログラミングとかって
エンジニアリンググっていうのはまずはで
行動確ことってのはその問題解決における
この1部分にすぎないんですよまずは
ちょっとねこの意識を持ってくださいで
これちょっと抽象的なこと言ってると思う
んでもうちょっとねこっから具体的な話を
していきますでそのことを頭に入れた上で
あの大事なのがエンジニアのマインド
セットを持つっていうことなんですよこの
エンジニアのマインドセットま考え方
みたいなものですねこれがあのなかなかね
動画とかチュートリアルとかでねこう行動
真似してるだけだと結局あれでやってる
のってプログラミングの文法を真てるだけ
なんですねでも文法を真似たからって言っ
てプラグ行動ねかけるプログラミング
できるようになるわけじゃないんですよ
これ例えば料理に例えると料理でなんです
かねえまレシピがありますとでレシピを
真似しながらねえ料理するってうのできる
じゃないですか多分で僕も大体ねあの料理
作る時いつもねあのYouTubeとかね
クックパッチとか料理動画とか見ながらね
あの料理毎日して作ってんですよね僕は
ちなみにあの貢献鉄とかさんとかそういっ
たのをねよく見たりとかねあと竜神兄さん
とかよく見たりとかして料理してるんです
けどもあのまそれは僕もできるんですね
じゃ今度えっとそういうレシピがない状態
例えば何かえ料理作ったけどいやこれだと
なんかうんちょっと分かんないですよあ味
の深みが足りないもっと味の深みを出して
くれとかいやそもそもこうもっともっと
こう健康にいい今風引いててそれでこう
なんか勢力が上がるような健康にいいよう
な食べ物出してくれとかそれとかもしくは
もうちょっとノスタルジーな何家庭を昔の
家庭を思い出してほっとするような料理を
作ってくれとか言われた瞬間にまお手あげ
ですよねえどどうしたらいいかわかんない
ですみたいなレシピないと何も分かりませ
んみたいなまあなんか調べてレシピあっ
たらいいんですけど全然レシピもないよう
なリクエストをされた時にどうしようも僕
例えば料理はなくなっちゃうんですよで
えっとそれと僕と多分料理人の違いって
その時にでも料理人のたって自分でなんか
工夫しながらやっていけると思うんですよ
ねそこてこう料理人としてのこのコックと
してのなんかマインドセットとか姿勢考え
方みたいなものがあるんですよでそれで
自分で料理を作っていけるわけなんです
けど僕にはまそれがないとでこれが
プログラミングにおいても全く同じことが
起きてるんですね要は文法みたいなのを
学んで真似してますこれレシピがあって
それを真似してるだけですじゃあこの
レシピが通用しねない世界に行った時に
どうするかっていうとそこを同行できる
問題解決の考え方演者のマインドセットが
必要ですということなんですねこれここな
んですよこれを持った瞬間に一気に
プロミングね本当に簡単になりますじゃあ
これが何かえその具体的な話をしていき
たいんですけどえその前に1つお知らせ
させてください私が運営する株式会社ユル
ではえアプレンティスというねサービスを
運営しております内定直結型のエンジニア
実習のサービスになりますえ学費完全無料
で給与をもらいながらスキルを身に
つつけることができるえ実習サービスと
なっておりますこういったねエンジニア
マインドセット身につけてエンジニアとし
て活躍していきたい方は是非覗いてみて
くださいはいではねえ実際にマインド
セットどういうものかっていう話なんです
けどまず大事なのが問題をがあった時に
それを小さく分解して個別撃破するって
いう考え方姿勢です大体ですねこう
プログラミングで苦労してる人ってのは
なんかこうなんですかねなんかある問題が
出されましたととかある問題出くわしまし
たでこれでなんとかしようとした時にその
問題がでかすぎていや何をどうしたいいか
わかんないどこから手をつけていいか
わかんないみたいになるんですよしかしこ
れって問題そのそてね問題が大きくて抽象
度が高いからなんですねこの問題を小分け
に小分けにそうしていってたらすると1個
1個はそのちっちゃい問題って今の自分の
知識でももしくは調べれば解決できるよう
な問題になるですよでそれを単純にこう
解いて解いて解いて解いてでその解いた
やつを組み合せていくとこれをやるだけで
今まで手も足も出なかった問題が結局は
基礎の積み重ねなんだっていうことにね
繋がっていくんですよねこれがね僕のその
先輩のエンジニアがねやってたねサーブ
最大の秘訣でしたねはい結局見てると
なんか難しい問題もなんか色々調べ
ちゃんと小分けにして簡単な問題にして
からね1個1個個別撃ですでそれを高速に
やってるっていう感じだったんです
よでそれをやる際のポイントがもう1個
あって失敗を繰り返しなから理解を深め
るっていうところなんですねあのまこう
書いてるとえいになったりとかするじゃ
ないですかあとはま昔書いたコード1回
書いてそのコード消すのはもったいない
気持ちがしたいとか僕は結構ねなんか
エラーも嫌だったしコド書いたらもったい
ないなとか思ってたんですけどそれを捨て
たい残しときたいなとか思ってたんです
けどもうその先輩はねバンバン別にエラー
出しても何も気にしないしあの行動もね
どんどんどんどん捨てていく今書いた行動
もどんどん書き直していくみたいなでこう
やって
結局でそれを失敗だと思ってないんですよ
ねもう常に変化しながらえっと再戦なんだ
1番適したものにこうすり合わせていけば
いいとだから別にそのすり合わせ前の過程
は全部ね学習の糧であって別に失敗じゃ
ないよっていうねえそんな感じで何もそう
いうエラーとか恐れることなくねむしろ
そっから色々学べるじゃんはいあじゃあ
これ学べエラーに出ましたあじゃあこれは
ダメなのねえその理由は何あこういうこと
ねじゃこうしたらいいんじゃないほらね
みたいなそれはひたすら繰り返していく
みたいなだ全然苦しそうでもないし
どんどん進んでいくしこの失敗は失敗じゃ
ないよとでやっエラーとかを繰り返し
ながら学んでいく理解を深めていく進めて
いくっていうそのスタンスがねすごく違っ
たんですよまちょっとまとめるととある
問題があった時にそれをちっちゃい問題に
こうやって分けていってでそれでは問題1
つ1つを個別撃破しますとなんか調査して
とかコドを書き換え書き換えたりとか
もしくは場合にあったら何かしらの設定を
ね変えたいとかそういった形でね個別の
問題をえ
クリアしていくとでそれをそれをねこ
トライアンドエラーしながらこれやってみ
たあうまくいかなってことはこうなんじゃ
ないかこうなっていうのかなこうじゃない
かっていうトライアンデを繰り返したら
やっていくこのマインドセットを持ってる
かどうかこれがにいわゆるこの文法の知識
とか組み合わせて使えていくと一気に
プログラミングは楽になっていきますはい
なのでま僕はこれ改めてね今回ちょっと
この話す時にねこれ考えてたんですけどま
これ結構研究者的なねアプローチだなって
思ってますなんか理系でね実験をしてる
ようなねそういった研究者ちょっと
思い浮かべていただきたいんですけどま
研究者に何かを解明したいとかなった時に
ねいきなりその本題は解明できないから
まずはねそれテーマに分けてでテーマごと
にこう実験をしていきますとで実験を失敗
とかもありながらそしたらそれを修正して
何度も何度も繰り返してようやくこの
なんか求めるものが出ましたとでそれをね
こういくつかの場所で組み合わせてること
で大元のね元々を狙うところまでクリア
できましたっていうそういうこう研究者的
なねトライアンドエラーで仮説思考の
アプローチ法問題解決思考のアプローチが
できるかどうかそれがこうねちょっとあの
プログラミング学習されたりとかねやる際
には意識してもらえると随分と
プログラミングというものがね本当に簡単
になると思いますはいというわけでね今回
の動画は以上になりますいかがでした
でしょうか何かね少しでも参考に
したらね嬉しいですし是非ねあの今回の
動画どうだとかね感想もらえるととても
嬉しいですそれではまたお会いしましょう
またね
