見出し画像

絶対に挫折しない! 医療者のためのプログラミング連載講座 Part 4.


こんにちは!
BeatFit エンジニアの飯塚です。

今年もあとわずかですね!




2020年、小・中学生は
プログラミングが必修化されますが
最近は、70, 80才以上 の方々も
プログラミングを始められてて



すごいことが起きてます!

30- 50代の働き盛りである私達も
負けてれませんね!


-------------------------------------------------------

第1回で、
複利思考が大事!


第2回で、
プログラミングはスポーツである!


第3回で、
暗記ではなく、二時記憶を有効活用しよう!
プログラミングの学習は、基礎と応用どちらからでも
大丈夫!



とお話ししました。
今回は、総論編 Part 4 をお届けします。


総論編は全部で 6部の予定で
1ヶ月に 1,2 記事のペースで更新します。
一度に全部知りたい方は、こちらをご覧ください!
  


対象となる読者 


・プログラミングをこれから始めよう!と思っている「未経験者」の方。
・プログラミングを始めたけど、勉強につまずいている「初級者」の方。


本連載は、吉岡さんとの共同連載となります。


この記事で学ぶこと

・守破離を意識する!


では、始めます!

1. 守破離とは?


Wikipedia によると守破離とは、
日本の茶道や武道などの芸道・芸術における
師弟関係のあり方の一つであり、それらの修業における
上達過程を示したものです。



つまり、
初学者が、何かマスターしたい!と思うときに、
こうしたらいいよ!という指針となります。


守:   徹底的に真似る
破:   自分の味をちょっとだす
離:   師匠を離れ、自分のオリジナル流派を生み出す



守破離は、学問や習い事を超え、万物全てに
当てはまります。 



国際社会での競争でも当てはまります。
中国は最初、日本やアメリカの
技術を丸パクリしてましたが
今は完全に、のステージにいます。



IT に関しては、もはや中国は、当時の見る影もなく、
完全に IT 超大国となりました。その勢いはとどまることを知らず、アメリカを抜くかもしれません。


日本はというと、インターネットの波に乗り遅れ


内閣のIT担当大臣に、IT と無縁の人が任命され
デジタルヘルスの有識者という謎の人種が脚光をあび
IT評論家、コメンテーター、ITコンサルトなどが増え


この20年の間に、日本は、諸外国と比べ
完全に周回遅れになってしまいました。 



このままでいけないと思ってます。
この平成からの負の連鎖や文化を
令和の時代では、完全に断ち切らなければならない
と思ってます。
-------------------------------------------------------

もしあなたが、
プログラミングを1から学ぶ初心者であるならば
 


を強く意識することが大事です。
医療者は、勉強が得意な方が多いと思いますが
プログラミングは、受験の勉強法とは異なります。 
(詳しくは、第2回 記事をご参照ください。) 



最初から、我流の勉強法を取り入れるのではなく
自分よりスキルがある誰かのやり方を
徹底的にパクることが上達への近道です。



なんだか全然ピンと来ないな!って方は
バケモノの子、という映画を一度、みてください。
主人公が、どうやって成長していくのかかが
わかります。

スクリーンショット 2019-10-07 18.08.45


もし、あなたの身近に、エンジニアがいるならば
(なんて、恵まれた環境にいるのでしょう・・・!)
ぜひ、その人に師匠になってもらえるか
お願いをしてみてください。


教えを乞う時は
あなたは頭を下げなければならないかもしれません。
師匠には最大級の敬意を持って接し
あなたが、師匠の大切な時間を奪う takerになりうるという事実を重々噛み締めた上で
失礼のないように接してくださいね。


もし幸運にも、師事することができましたら



師匠の考え方、ただずまいを徹底的に真似し
コードの書き方、エラーへの対処法、文献の探し方
ショートカットキー、ターミナルの使い方
効率を上げるツールの使い方など
ありとあらゆるもの全てを、吸収してください。



パクって吸収するのはそれ以外にも
師匠のルーチンワーク、仕草、ただずまい、服装
考え方、あらゆる全てを、真似してください。
一挙手一投足、真似してください。



少し、きつい言い方すると 
初心者のプライドや、今まで得た成功体験や
あなたの権威や今までの業績などは



プログラミングの上達には、全く無関係です。
鼻紙と一緒にいますぐ、ゴミ箱へ捨てましょう!



素直さは、あなたの伸びしろに直結します。
師匠のいうことを素直に真摯に受け止め
徹底的に、守を意識してくださいね。

-------------------------------------------------------

少し、医療の話をします。
自分には、医者3年目の時に、
理想の上司が近くにいました。


その先生は、循環器内科を専門としており、
どんな困難な症例も、
カテーテル治療であっという間に治してしまう
最高の名医でした。


医者3年目の仕事に慣れはじめた9月頃、その先生が幸運にも、直接の指導医になって頂ける機会をえました。
ICU (集中治療室)で、重症患者さんをみていた夜11時頃
その先生から言われた一言は、今でも忘れられません。


「お前が今の時点で、自信を持ってできることは、
 便秘の処方くらいだ。
 今まで学んだことは、全部忘れろ。
 その代わり、これから、一挙手一頭足、俺の真似を
 しなさい。」


その先生は、悩んだ時に、左手で頭頂部の髪の毛を
くるくるくねる、癖を持ってました。


私は教えの通り、必死で、一挙手一投足、2年間、その先生を真似ました。まだまだ未熟ですが、この時に、鍛えられた気がします。
会社のみなさん、もし仕事中、くるくる髪の毛をくねっていても、そっとしてくださいね。

-------------------------------------------------------

プログラミングに戻ります。
私は以前、CSS animation というもので、
作品を作り、ブログ記事にアップしていました。



その時に、たまたま  Chris Ganon さんという
世界トップクリエイターの方の作品に出会いました。


作品 ↓



天才すぎる!
ため息がこぼれます。



作品に初めて出会った時の衝撃は、
今でも忘れられません。
興奮冷めやらぬまま、すぐ twitter で
メッセージを送りました。


画像2

画像3



訳します。

twitter で、どうやったら
あなたのような
人類史上最高峰の作品を作れるでしょうか?」


俺は、好きな作品を、
コピーすることから始めたんだよ!


そして、今でも毎日、練習しているのさ。

コピーは、最高さ。
自分でアイデアを思いつく必要ないから。

数年コピーをし続ける経験を積めば、
あなたのskill はめちゃすごくなるぜ

Good Luck !


こんなすごい人も、守破離と、複利効果を意識し
当たり前のように毎日の地道な努力を
積み重ねてきたんですね。
私たちも頑張りましょうね!


そうはいっても・・・

守が大事!
エンジニアに色々教えを乞うのがいい!
って言われても


ほとんどの人が、近くにエンジニアいないし
そもそも何を真似したら良いのか
想像がわかないと思いますので



個人的にみんなにおすすめしてるものを
書いていきます。


初心者におすすめなサービス

Udemy


こちらは、個人的にも
とてもお世話になっているサービスで
現役エンジニアで、Udemy を知らない人は
いないのではないでしょうか?



例えばですが
あなたがもし、アプリを作りたいって言った時
React Native という爆速で開発できる言語を
選ぶとします。

検索項目に、React Native と入れて検索すると


上のようなクラスが、たくさん出てきます。
 

スクリーンショット 2019-10-26 15.21.39


講師が、実際に動画の中でコードを書いてますので、
あなたがすることは、動画みてそれをただ
真似するだけです。


国試の時の、三苫みたいな感じです。
(身内ネタですみません)


この勉強法は、本を読んで勉強する方法より、
少なくとも数倍はわかりやすいです。


もしかしたら
途中で、少し難しくなるかもしれませんが
完全に、理解できなくても大丈夫です。
そのまま、進めてください。



なぜなら
初学者が最初にしなければならない
もっとも大切で本質的なことは、
アプリができるまでの
一連の流れを把握すること なのです。


Udemy をみて
実際に手を動かして
真似をしてコードをかいて
アプリを作るということを一通り経験することで、

 

あ、こんな感じなんだな。

細かいことはよくわからなかったけど
なんとなくイメージできたな!

これくらいなら、自分でも作れそうだ。

すごい、こうやって、アプリってできてるんだ!
すごい、動いた!やった!


っていうドキドキ、ワクワクを
存分に味わうことができます。


やってることは、ただ、講師の書いたコードを
真似をしているだけですが
1ヶ月くらい続けると
メキメキ実力がついていると実感するでしょう。

 

一旦全体像を掴んでしまえば、あとは簡単です。
オリジナルのアイデアを落とし込めば
あなただけのオリジナルアプリを
3ヶ月くらいで作れるようになります!



Udemy は
アプリ以外にも、Web サイトとか
AI とか、ブロックチェーンとか
色々ありますので



あなたの要望に応じた動画を見て、
勉強をしてみるといいでしょう。


定期的にセールをやっているので、
1500円くらいで買える時に、買ってください!
もし内容が気に入らなかったら
最初の1ヶ月以内であれば、返金対応付きですので
安心して、購入することができます。


中級者以上の方におすすめな教材


Codewars 

こちらは、Progate のように
勉強を進めて問題を解くと
経験値が得られてレベルアップができる
プログラミング問題集のサービスです。



私は今でも、Codewarsを、毎日解いてますが
プログラミングの実力up にとても効果的と感じてます。



Codewars は、何がすごいのか?


を一言で言うと 

「世界中のエンジニアの回答がみれる」 

ということです!



イメージがわかないと思いますので、
具体例をあげます。



5 という数字を与えたら、 1, 2, 3, 4, 5 と返す。
8 という数字を与えたら、1, 2, 3, 4, 5, 6, 7, 8 と返す 関数を作りなさい

という、CodeWars 8 級の問題があります。  

スクリーンショット 2019-10-26 13.05.50



この答えは、以下のようになります。
(ちょっと難しいので、理解しなくても大丈夫です)

スクリーンショット_2019-10-26_13_08_42


n という数字(引数といいます)を関数(consecutiveArray)に渡すと
Array(n) で、[undefined, undefined, .... ]  と、undefined(未定義) が n個できる配列が作られます。


その後、fill(0) で、配列を一旦全て
[0, 0, 0, 0, .... 0] と、全部 0 にして 
その 0の配列に、map で中身を一個ずつ、順番を示すindex に 1 ずつ足すという処理です。
(この辺の説明は、ちょっと難しいので
飛ばしても大丈夫です)


これで正解なのですが
Codewars の真骨頂はここからです。
答えのページに行くと


スクリーンショット_2019-10-26_13_16_13


このように、世界中の超一流エンジニアの回答が見れ、
BestPractice や Clever だと思った回答がわかります。


そして、このコードを真似してもう一回問題をといて、
体に染み込ませるのです。(また、この素晴らしいコードをただ暗記するのではなく、Evernote に書き込んで、自分の二次記憶へとしまうとなお良いでしょう。)


先ほどの問題に戻ると、
別回答は以下のようになります。
(よくわからなくて、大丈夫です。)

スクリーンショット 2019-10-26 13.21.09

スクリーンショット 2019-10-26 13.24.38


このように、少なくとも3通りの正解があります。


Codewars を解くことで
部分的最適解への問題解決能力が手に入るばかりか
洗練された、美しい超一流エンジニアのコードを、
目で見て盗むことができます。



「問題に対する回答は一つだけではない。
 いくつか選択肢を考えなければならない。」



これって、医療に通じることと思います。
私達は、患者さんの治療方針を考えるときに、最低 3つくらいの治療法を考えます。この時は、こうなる、この時はこうなる、この時は副作用のリスクが高いから、心配だからやめようなど。



プログラミングも似てます。
ある問題に対し、クイズのように一問一答で
正解を探すのではなく
 

他にどんな回答があるだろうか?
最低 3つくらい考えたいな。
世の中の凄腕エンジニアさんは
どう回答するんだろうか? 


こういう思考訓練の積み重ねが
実際に現場でチーム開発をする場合
どんなコードなら他のエンジニアさんが
苦労せず読めるか? という想像力に繋がります。


Codewarsの学習するタイミングとしては、Progate を卒業するくらいの力がついてからでいいと思います。
もし良かったら、ぜひご検討ください!

-------------------------------------------------------

他の、真似する方法として
GitHubを使うというものがあります。
中級者というより、上級者向けなので
さらっと説明します。



あなたが、例えば、Firebase というサービスを使ってて、ログイン機能をつけたい!けどコードがよくわからなくなった!という状態だとします。


こういう時に、Github を使います。
左上に検索窓がありますので

スクリーンショット_2019-10-26_15_39_03


firebase, auth と入力し検索すると
Code って欄が、出てきます。

スクリーンショット_2019-10-26_15_42_07


クリックすると、
上部にHit した数一覧と、サンプルコードが読めます。

スクリーンショット_2019-10-26_15_43_41


(補足ですが、今回の場合、firebase, auth の他に、例えば、onAuthStateChange(API) などのword を入れて検索すると、なお良いでしょう。)



このように、世界中のエンジニアが
書いたコードを読めるので
安心して、真似することができます。
私はよく困った時に、Github でコード探してます。
上級者の方は、ぜひ一度試してみてください。 



最後に


今回は、守破離というお話をしました。


ある程度の力がつくまで、まずは、守をしっかり意識し
プログラミングの型を、自分の中に作ってください。


そこからちょっとずつ、その型を破っていき
毎日の鍛錬を積み重ねた結果
ある日、自分の流派が生まれていきます。


私もまだまだ守を意識してる身なので
早く離、破のステージに
行きたいと思う毎日です。
お互い頑張りましょうね!


この記事が、皆様の参考になれば幸いです。
それでは、また来月〜

PS

先日、あしなが募金に無事、note の全売り上げ 5000円分募金することができました。この場を借りて、御礼申し上げます。


11月中旬に、あしながい育英会の本部にお邪魔し
今後のIT の取り組みに向けた、お話をして参ります。


あしなが募金は、病気や災害などで
親を亡くした子供達や
親が重度後遺障害で働けない子供達を支える
民間非営利団体です。

子供達の無限の可能性を形にすることができる
ITという翼を届けたいと思います。
もし、ちょっとでも興味があるという方がいましたら


御連絡お待ちしております!


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