見出し画像

プログラミング思考でパフォーマンスを高める5ステップ ~前編~

お待たせしました。昨日予告した『プログラミング思考の5ステップ』で競技力を高めるための工夫についてお送りします!!

~再掲~
いつかの記事でも書いたように、私は小学生のころからゲームが大好きで、中学生の頃には自作のシミュレーションRPGを年1作ペースで作成していました。
そこからご縁があって、やや理系の部署を転々とすることになり、文系&体育会という属性にもかかわらず、少しだけプログラミングをかじった何とも不思議な要素を組み合わせた人材になることができました。

そんな中、「プログラミング」をする時の思考というのが、実は競技(特に弓道)に取り組む時の状態に非常に似ているなぁ、と常々感じておりましたので、本日は『プログラミング思考の5ステップ』で競技力を高めるための工夫について書きたいと思います。

【Step1】言葉とルールを理解する
【Step2】先駆者の軌跡をなぞる(リバースエンジニアリング)

【Step3】スモールステップから始める
【Step4】『楽をしたい』テーマを見つける
【Step5】『美しく』デザインし『泥臭く』進める

本日は、Step1~2まで!

【Step1】言葉とルールを理解する
プログラミングを学習しようとする人の中で最も高い壁がここなのではないでしょうか。『なんか、ものすごい文字の羅列(しかも英語!!)があって小難しそう…』というのがごく普通の反応だと思います。この反応は、多くの人々が英語などの他国語の学習を行う時と全く同じです。
この反応は、これまで使い慣れた言語や自らの常識の範囲から超えた文化を見た時に「違い」を強く感じ、その世界に飛び込んで染まっていくことに躊躇を感じている状態です。そして、この反応自体は悪いものではなく、動物の本能として、危険を感じているにすぎません。
それでは、その中でどのようにしてこの壁を越えていくのか?それは「強い目的意識」に尽きます。例えば、仕事の都合(就職・転職・転勤・海外赴任etc)で必要に迫られれば、たとえあまり乗り気でなかったとしても、取り組まざるを得なくなります。これは【外発的要因】によって動機付けされている状態です。これでもこの壁を超えることはできますが、必要最低限の努力を行うにとどまる可能性が高いです。
やはり目指すべきは【内発的要因】によって目的意識を高めていくことです。すなわち、「ありたい姿・理想の自分」を明確に思い描き、それに対して『そうなれたら本当に素晴らしい!』という納得感をどれだけ持てるか、ということです。わかりやすく英語学習の場合で例えると、『将来は海外の***という国で****という仕事に就き、*****と感じている人々のために*****を提供したい!!』といった具合に、自分の未来の姿をありありと思い描くことができれば、喜んでこの「新たな世界」に飛び込むことができるはずです。『やるからやる』ではなく、『やりたいからやる』というのが大事。

【Step2】先駆者の軌跡をなぞる(リバースエンジニアリング)
最初の壁を超え、意思疎通のために必要な言語やルール(文化)を学んでも、いきなり自分ならではのプログラム(価値)をつくっていくのは難しいものです。なぜなら、具体的なゴール(成果物)のイメージが湧かず、『何を』つくったらいいのかがわからないからです。
先ほどのステージが『なぜやるのか?(Why?)』を問うものだったとすると、ここは『何をつくるのか?(What?)』を問われている段階になります。
実際にプログラムを書いて何かを作り上げた経験が無い状態では、まずそのイメージを持つために、「先駆者が既に作り上げたもの」を見ることをおススメします。
既に「言語とルール」をある程度勉強している状態であれば、誰かが作ったものを目で見てなぞることくらいはできるようになっているはずです。ただし、まだ「理解できる」状態にはたどり着いていないでしょう。
そこで、ひとつひとつのコード(パーツ)を追って行きながら、「ここはなぜこのように書かれて(構成されて)いるのか?」、「このコードの意味するところは何か?(何をやるためのものなのか?)」と問いかけながら、時に書籍や有識者(先輩)の力を借りて、ひとつずつ理解を深めていくようにします。
このようにして既に完成されているものの要素を分解し、ひとつずつひも解いていくことを【リバースエンジニアリング】と呼んだりします。この手法は、スポーツ、特に武道で非常に有効な方法です。先人たちが築き上げた『型』を分解して研究し、その動作の理由や意味を理解していけばいくほど、自分がしなければならないことを腹に落としていくことができます。


本日はまず、実際の行動に移る前の準備段階のところまでお送りしました。学校教育にプログラミングが取り入れられたのも、ITリテラシーの向上だけでなく、もしかしたらそれを通じた『思考プロセス』の育成を狙ったものなのかもしれませんね。
ぜひ皆さまも、この思考を応用して、いろいろな場面で活かしてみてください!

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