テクノロジー

2022年7月22日

はじめよう。本当のプログラミング学習

多くの人は、本当の意味でのプログラミング学習を始める前に挫折してしまっています。
正しいプログラミング学習方法に学び、身のある学習をはじめましょう。

目次

1. はじめよう。本当のプログラミング学習
2. WebアプリケーションとWeb業界
3. Webエンジニア職のレベルとロードマップ

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

手を動かす

プログラミング学習において一番大切なことは、手を動かすということです。
初心者の方は、ただテキストやサンプルコードを読むということをやってしまいがちですが、サンプルコードを実際に書くということが重要です。
実際のプログラミングはテキストのようにうまくいくことは少なく、実際にプログラムを書こうとすると、インプットした知識だけでは思うように手は動きません。
プログラミングもスポーツや武道、楽器などと同様に、やり方を知ってるだけでできることではありません。できるようになるには練習あるのみです。

手を動かすための準備をしよう

手を動かす準備とは、いつでも動作確認ができる状態にしておくということです。そして手を動かすために、動作確認に使うツールを瞬時に切り替えることができるようにしておくことが必要です。

動作確認に使うツールとはコードを書くためのアプリケーションであるコマンドラインツール(mac: ターミナル, windows: コマンドプロンプト)とエディタ(VSCodeなど)です。

テキストを見ながらこれらのツールを動かす必要があるため、画面を2分割にしましょう。
半分はテキスト、半分は手を動かすためのツールというディスプレイの体裁にします。

Image from Gyazo

できるだけ早く動作確認をしよう

準備ができたら、ツールとテキストを瞬時に切り替えられるようにします。以下のショートカットを使うことで、マウスやタッチパッドを使わず画面の切り替えをすることができます。

mac: ⌘(Command) + Tab ↹
windows: ⎇ (Alt) + Tab

いかにキーボードから手を離さずにPC操作をして作業に没頭できるか、ということは実用的なITスキルのひとつでもあります。
マウスを使わずに作業できる分スピードは速くなり、学習効率も上がります。ショートカットキーは宝物になるので、積極的に取り入れていきましょう。

守破離を実践する

守破離とは剣道や茶道などで、修業における段階を示したものです。これをプログラミング学習にも当てはめることができます。

プログラミング学習における守破離とは

「守る」
テキスト通りにコードを書く
例えば、puts "Hello World"というサンプルコードをテキスト通りに実行してみます。

「破る」
異なる結果を見るためにコードをいじったり、コードで遊ぶ
例えば、”Hello World”以外の文字列を入れてみたり、puts "Hello World" puts "Hello World"と、2回繋げて実行してみます。
2回繋げるとエラーが発生します。どんなエラーか調べてみて、puts "Hello World"; puts "Hello World"とセミコロンを入れるとエラーが起きないことがわかります。

「離れる」
異なるソリューションを試す

自分の身近なものごとや経験をサンプルに、学んだことでどういいうアプローチがとれるか置き換えて考え、それをプログラミングでつくってみます。
例えば、自分の名前を教えると、自分に呼びかけてくれるロボットを想像し、それをputsを使って実現することを考えてみます。
ここでは文法について詳しくは触れませんが、以下のようなメソッドを作ることができました。

def greeting(name)
  puts "Hello #{name}"
end

Image from Gyazo

なぜ守破離の実践が必要なのか

現実には何かを自分で作ろうとプログラミングをすると、教科書通りにはいきません。多くの問題に直面し、行き詰まり、効率的なコードや特定の問題の解決策を見つけるように求められ、頭をかきむしりながら実装することになります。
プログラミングをスキルとして使いこなすには、どれだけ色んなことをやってきたかという引き出しと、問題解決決能力・論理的思考能力が必要です。守破離を実践することでこれらが鍛えられます。

紙に書く

プログラミングはループの連続であり、それらをPCの画面で完結させようとするのは至難の技です。
紙に処理の流れを書き出して理解することも有効な手段です。
手書きでコードを書くことで、構文やアルゴリズムを明確に理解することができ、脳の中でより深いつながりが生まれます。
プログラミングに馴染むためのコツのひとつとして、ぜひ紙とペンを活用してきましょう。

誰かに教えるつもりで学ぶ

誰かに教えることができるということは、自分が本当に理解しているということです。
誰かに教えたり、知識を共有したり、他のエンジニアと話をしたりなど、アウトプットすることは最良の学習方法のひとつです。

アウトプットの一つとしてブログや記事を書くということもおすすめです。
初心者の学んだことを公開するのは恥ずかしいとつい思いがちですが、今のあなたにしか書けないこともあります。
例えば、初心者の不安やつまずきはベテランにとっては忘れていることですし、ベテランのノウハウや勘は初心者にとってわからないことです。
また、あなたの初心者目線での学んだことの再記述は、他の初心者にとってありがたいものになります。

そして、アウトプットをしなければフィードバックをもらうことはできません。フィードバックをもらうことは自分の成長に役立つ大切なファクターです。恐れずにアウトプットしていって、全部自分の成長の糧にしていきましょう。

もし、不特定多数の人に見られるのが嫌だという場合は、DIVER Learningsの学習日記を使うのも良いです。非公開設定にすれば、自分以外の人はみることができません。

Image from Gyazo

知識をプールする

学習したことを学習日記やノートアプリなどを使って記録していきましょう。
エンジニアであれば、同じようなタスクに遭遇することも多いです。
学習したことを記録しておけば、後で同じような作業があったときにすぐに参照することができ、生産性を高めるのに役立ちます。
またプールしてコードや知識が再利用できるということは、それらが将来の宝物になるということです。

避けるべきこと

学習をする上で、避けるべきことは以下の3点です。

完璧主義
初心者のうちは、完璧を求めることは何のメリットもありません。進歩するどころか、先延ばしや停滞を余儀なくされてしまいます。完璧を求めると、ものごとは実際よりも複雑になるため、ただ実行する、進めることが重要です。

他者との比較
環境が異なる他者と比較することは何の意味もありません。昨日の自分に勝てればそれだけでいいのです。昨日と言わず先週でも先月でも去年でも、過去の自分と比べて、どれだけ自分が成長しているかというものさしを常に持ちましょう。

複雑さ
複雑なものを複雑なままにしないということです。問題をより小さな問題に分割し、簡単に解決する方法を学びましょう。その問題はなにで構成されているのか。成要素を洗い出してシンプルに考えましょう。

関連記事

次回:WebアプリケーションとWeb業界

*上記のリンクにアクセスすることで、続きをDIVER Learningsで確認できます。

DIVE INTO CODEのことをもっと知ってみませんか?