昨今、プログラミングの人気が高まっていると感じています。少しネットサーフィンをすればオンラインプログラミング教室や、エンジニアの副業を勧める広告が表示され、書店に行けば多種多様なプログラム言語の書籍が売られています。
パソコン1つさえあればできるIT関連の仕事は、コロナ禍により「どこにいてもできる仕事がしたい」と思うようになった人にはぴったりでしょうし、世界的に急速なIT化が進む中で、必然的に必要とされている職業と言えるかもしれません。
そのような背景を受け、現在プログラミングを学習している(または、しようとしている)人の中には、学生時代からみっちり情報科目を学んできた人もいるでしょうが、それまで文系の学問を勉強していたが、わけあってプログラミングの勉強をすることになった人もいると思います。
私は後者のタイプでした。
大学時代は国際関係学というITとはまったく無縁の学問を学んでおり、就職と同時にプログラミングを勉強することになりました。というのもSEとして以前の会社に採用されたからです。
なぜ文系からSEになったのかは割愛するとして、今回は実体験から感じた、未経験からプログラミングを学ぶ際に重要だと思うポイントを4つ紹介したいと思います。
さっそく本題に入りますが、個人的に未経験からプログラミングの勉強をする際は、以下の4つのポイントが重要なのではないかと思っています。
どういうことか、それぞれ詳しくお話します。
突然プログラミングを勉強することになった場合、皆さんはまず何をしますか?
書店に行って勉強したい言語のテキストを買ってくる、という方が多いのではないかと予測するのですが、私はいきなりその行動をとった結果、打ちのめされました。
本に書いてあること自体はわかるのですが、まったく頭に入ってこなかったのです。
突然登場する謎の英単語らしきもの、謎の用語、数学で見た記号の登場などなど・・・。
よくわからないまま1冊読み終わり、勉強した気にはなれましたが、理解したというのには程遠かったです。
あとから分析して思いましたが、そもそもどのような背景があってプログラミング言語があるのか、プログラミングをして何を作るのか、社会はどのようにIT技術を使ってまわっているのか。ほかにもありますが、この辺りのバックグラウンドを押さえずに固有の言語の勉強を突然開始したことが、自分がつまずいた原因ではないかと思っています。
全体を知らずにいきなり細部に目を向けてしまったので、全ての用語が唐突すぎて理解に苦しんだというわけです。
ですので、もし皆さんが予備知識がない状態でプログラミングの勉強をすることになった場合は、事前準備としてITの総合的な知識を軽く頭に入れておくことをおすすめします。
私のおすすめはITパスポート(iパス)の勉強をすることです。
公式サイトによると、この試験の概要について次のようなことが書かれています。
iパスは、ITを利活用するすべての社会人・これから社会人となる学生が備えておくべきITに関する基礎的な知識が証明できる国家試験です。
具体的には、新しい技術(AI、ビッグデータ、IoT など)や新しい手法(アジャイルなど)の概要に関する知識をはじめ、経営全般(経営戦略、マーケティング、財務、法務など)の知識、IT(セキュリティ、ネットワークなど)の知識、プロジェクトマネジメントの知識など幅広い分野の総合的知識を問う試験です。
ITを正しく理解し、業務に効果的にITを利活用することのできる“IT力”が身につきます。
iパスは、2009年の開始以来、多くの方に受験されており、社会人やこれから社会人となる学生など幅広い層から支持されています。
(出典)https://www3.jitec.ipa.go.jp/JitesCbt/html/about/about.html
試験を受験しなくてもよいので(もちろんついでに資格もとってしまえば一石二鳥ですが)、軽くITパスポートのテキストを勉強して、ITに関する知識を広く浅く頭にいれてから個別の言語の勉強を開始するとよいと思います。
本を手に取るにしても、全体像をつかめるような内容が入っているプログラミング本がおすすめです。
事前準備を経てようやくプログラミングの勉強を開始した私ですが、次にうちのめされたのは「文法」や「考え方」です。
あくまで私個人の例ですが、私が最初に学んだJavaという言語では「Int number = 10」と書くと「Int(整数)型の変数numberに10を代入する」という意味になるのですが、この「=」が「イコール」ではなく「代入する」という意味になることに納得できませんでした。
テキストで言われていることはわかるのですが、「数学では「=」は代入じゃなくてイコールなんですけど」という感想しかでてきません。
こういった、根本的なところが気になって仕方がない現象の解決方法は簡単で、いい意味で諦めて、「そういうもんだ」と受け入れる広い心を持つことです。解決になってないじゃないか、と思うかもしれませんが個人的にこれが一番ストレスのかからない解決策だと思っています。
たとえば海外旅行に行ったとして、その国の法律にいちいち文句をつけるでしょうか。
「路上でガムを食べてはいけない」「地下鉄で飲食してはいけない」「◯◯ビーチの砂を持ち帰ってはいけない」など、世界にはさまざまな法律があります。
外国人である私たちとしては疑問には思うことも多いですが、入国するには受け入れて従うしかありません。
プログラミングにおける「文法」や「考え方」もこれと一緒だと思います。そういうルールなのです。
もちろん、さまざまなことに疑問を持って意欲的に調査するのは素晴らしいことですが、考えても仕方のないことについては意味づけをしようとしないで、「そういうものだ」として受け入れるひろ〜い心が大切ではないかと思います。
なぜ突然英語? と思われるかもしれませんが、プログラミング言語の大半は英語圏発祥です。どれでもいいのでコードを見てもらえばわかるかと思いますが、プログラミング言語は英単語または英語をもとにした用語で構成されています。
また、コードだけでなく、プログラムでエラーが発生したことを示すメッセージも英語です。プログラムを動かすというのはエラーとの戦いですので、私たちは頻繁に英語のエラーメッセージを読み解く必要があります。
つまり英語が嫌い、読みたくないという程英語に近づきたくない人は、プログラミングの学習も不可能と言えるでしょう。
したがって、プログラミング言語の勉強をスムーズに進めるためには英語を嫌いにならないことが重要です。好きになる必要はありません。大半のエラーメッセージはWebサイトで検索すれば解決策が出てくるので、TOEIC対策のように激しく英単語の勉強をする必要もありません。
ただ、「英語が嫌い、無理」になってしまうと勉強が苦行となってしまうので、注意しましょう。
ちなみに現在形で英語に苦手意識がある人が、英語に少しでも興味を持って慣れるには、自分の好きなことと英語を組み合わせたコンテンツに接するとよいです。たとえば映画が好きなら洋画を見てみたり、俳優やアイドルが好きなら英語圏の「推し」をつくったりなどといった感じです。
すべての物事に言えることですが、何かを長続きさせるために必要なのはやはり成功体験です。特に未経験からプログラミングを勉強している人にとっては、何よりも挫折しないことが重要です。「わからない」「できない」などの辛いことばかりでは勉強は継続できないので、小さくてもよいので成功体験を積み上げることが重要と考えます。
たとえば、「◯◯について理解できた」「今日はテキストを◯ページ勉強できた」「プログラムが動いた」などです。こじつけでもいいので、「今日頑張った点、うまくいった点」を探してポジティブな気持ちで日々の勉強を終えるようにするとよいと思います。
成功体験を得るために私がよくやるのは、テキストにとにかく書き込んで汚すことです。
マーカーをひいたり、自分なりの用語解説を書き入れたり、そのとき思ったことを書いたりして、読んだページを汚していけば、自分の頑張りが目に見える形になり、「これだけ頑張ったんだ」という気分になれます。
おまけとして、プログラミング的思考をゲーム感覚で学べるサイトを3つ紹介します。
「いきなり本格的に勉強するのはちょっと」という方や、「とりあえず何か動かしてみたい」「ゲームが好き」という方はこのようなサイトを有効活用してみてください。勉強の合間の息抜きとして利用するのもオススメです。
Hour of Codeは世界で1億人以上が利用している学習サイトです。アナと雪の女王、マインクラフト、スターウォーズなど人気キャラと一緒にプログラミング的思考を学ぶことができます。
Scratchでは各命令に対応したブロックをパズルのように組み合わせることで、プログラミング的思考を学びながら、アート・ゲーム・音楽・アニメなどを作ることができます。
RPGをプレイしている感覚でプログラミングが学べるサイトです。コードを作ってキャラを動かし、ダンジョンをクリアしながら先を目指していきます。
ここまで自分の経験をもとに「未経験からプログラミングを勉強する際に重要だと思うこと」を紹介してきました。似た境遇の方に、何か少しでも参考になることがあれば幸いです。大変なことも多くあると思いますが、一緒にがんばりましょう!