この記事は、「プログラミング初心者」の私の立場から、「プログラミング入門者」の方、挫折したけれど今日からまたプログラミングプログラミングに再挑戦したいに向けて、届けたいメッセージをを中心に書いています。
たまにTwitterなどのSNSで見かける、いわゆる「意識高い系」のプログラミングの先輩の「初心者を不安にさせるアドバイス(??それとも自慢??)」についても、「初心者目線でそれをどう捉えて、どのように行動に移して行ったのか、プログラミング初心者から見た意識高い系の先輩はどう見えるのか」についても書きました。
想定している読者様は、
●これからプログラミングを始められる方
●(何度か)挫折してしまったが、もう一度、もう2度・・・リトライされたい方
になります。
また、プログラミング挫折経験者の立場から、学習するプログラミング言語の順番や、学習コンテンツのドットインストールとpaizaラーニングの比較についても書いています。プログラミングの単調な文法習得を少しでも楽しめる方法や、プログラミングは暗記なのか、暗記では無いのか、学習に便利なツールについても触れています。
私の自己紹介はこちらからご覧になれますので、ご興味のある方はご覧頂けますと、大変喜びます!!
プログラミングを学習するのに、王道とも言われている順番があることを知りました。
先に結論を書きますと、
1.HTML
2.CSS
3.JavaScript
4.PHP
になります。
個人や目的によって、変わってくるのでこれが全てではありませんが、迷っている方は参考にしてみても良いでしょう。
私は、順番について全く考えておらず、比較的文法が簡単だと言われているPythonで、Kivyというフレームワークを使って、iOS及びAndroidのアプリ制作を目標にして、プログラミングを学習していましたが、基礎文法を習得した後の学習につまずき、その後機械学習に挑戦するも難しすぎて混乱して、やりたいことを見失い、見事にプログラミングに挫折をしてしまいました。
この時点でプログラミングは向いていないのだから、さっさと諦めて新しいことでも始めようという選択肢も思い浮かびましたが、それでは基礎文法をほぼ習得したのに費やした時間と労力が報われないと悩みました。
そこで、アプリ制作という目標から、他の目標に方向転換してでも、プログラミングの学習を続けたいと考えるようになりました。
これについては、プログラミングは作りたいものを作るための「手段」であり、プログラミング学習を「目的」にしてしまうのは良くないという考え方があることを十分理解した上で、それでもプログラミングを続けたいと私は選択しました。
そこで、「Web制作」に方向転換をして、それを新たな目標にしました。
ではなぜ学習順序でHTMLが1番最初に来ているのか考えてみたいと思います。
HTMLは比較的学習の難易度が低い上に、書いたコードをブラウザで見て視覚的に確認することが出来ます。今自分が書いたコードが結果として反映されるのを成果物として見ることが出来るので、モチベーションが保ちやすくなります。
また、コードを書くのにVSCodeなどのエディターを使うので、プログラミング初心者の段階からVSCodeに慣れ、次のステップに進みやすくなります。
それでは具体的な学習方法に入って行きます。
プログラミングの学習方法の中でも最も敷居が低い勉強法は、学習コンテンツによる動画レッスンです。その中でもドットインストールとpaizaラーニングについて簡単に比較してみます。
私は2年間paizaラーニングを使って、スキルチェックと呼ばれる様々な問題を解いてBランク(中級プログラマ)まで獲得したのですが、自分の方向性が変わったので、paizaラーニングを退会して、現在はドットインストールのプレミアム会員(有料会員)になっています。それでは両方使った者の立場で、それぞれのサービスを比較していきます。
●paizaラーニングが向いている方
・特に「この言語」と決めていない
・環境構築無しで色々な言語を試してみたい
・アニメのキャラクターと楽しく勉強したい
・問題集やスキルチェックに挑戦して技術を磨き向上させたい
・エンジニアとして正社員でスカウトをもらって働きたい
paizaラーニングについて補足しますと、動画学習では演習課題があり、スキルチェックではDランクからSランクまでランクアップを目指せる様々な実践問題や、スキルチェックに挑戦するのに「計算ドリル」のような感覚でコードを書いて学べる、「レベルアップ問題集」も用意されています。
関連記事:paizaレベルアップ問題集をPythonとGASの両方で解いてみた集
●ドットインストールが向いている方
・具体的に学習するプログラミング言語を決めている
・環境構築がある程度済んでいる
・1回3分程度の短い動画で効率よく学びたい
・副業やフリーランスとして稼げるようになりたい
・ポートフォリオの作り方を学び、実務にいち早く活かしたい
paizaラーニング、ドットインストールの両方に共通していることは、「無料レッスン」があることです。この記事を読んでも、私の文章力不足の為、どっちが自分に合うのか正直分からない方もいらっしゃると思います。両方の無料レッスンを受けてみて、こっちかな、と思う方に決めるという手もあります。
関連記事:ドットインストールの学習ロードマップとレッスンの感想
● プログラミング学習が楽しくなる方法 ●
プログラミング学習において、C言語だったらprintf文、Pythonはprint文、JavaScriptはconsole.logやalert、HTLMではpタグやh1タグなどのタグで出力をする機会が相当多いでしょう。そこで、
「私は天才プログラマー!!!!!!!」
「俺は超イケメンで女にモテまくり!!」
「私はめちゃめちゃ美人で可愛い!!」
「私はキムタクと超ラブラブ!!」
「橋本環奈は俺の嫁!!」
など、出力文に自分を褒める言葉や、好きな方とリア充ラブラブになるような言葉を入れてみましょう。
それを何度も繰り返すことで、自分に自信が付きますし、幸せで楽しい気分になれます。
プログラミング学習は、頭脳よりも「どれだけ折れない心を持って自信を付けて保って、更にアップしていくか」が大事です。
キムタク(=木村拓哉さん)や、橋本環奈さんに限らず、好きな芸能人や、または絶対人に見られないのであれば、学校や塾、バイト先、職場で好きな人の名前を入れてもOKです。
定数や変数に例えばJavaScriptでしたら、
const genius='【私は天才プログラマー!!!!!】';
などとして、console.logを使うタイミングで、定数geniusをテキストの文字列に「+」で連結して表示させると便利かも知れません。
そうすることで、「受け身」から「能動的な学習」に変わって行きます。
私は、この定数geniusをグローバル領域に定義しています。
人前で「私は美人で可愛い」、「俺、超イケメン!」なんて言ったら、「この人危ない人かも・・・」って思われるてしまいますが、自分のプログラミング学習の環境で、人の目に触れないのであれば、あなたはいくらでも自分のことを褒めて、自信を持っても良い方だと思います。
これから先、printf文、print文、console.log、alert、pタグ、h1タグなどのタグはいくらでも出てくるので、そこで可能な限り自分自身を褒める、ハッピーな気分になれるメッセージを入れて、単調な文法でも出来る限り遊びの要素を取り入れて楽しんで勉強してみて下さい。
これは、単なる「おまじない」に止まらず、以下のような効果があることを、基本情報技術者試験でアルゴリズムの正答率が88%取得した者の意見として申します。
頭の中で変数、定数の値を自然に追えるようになり、ループの中でどう動くのか、条件分岐ではどっちに分岐するのか、どの関数(メソッド)に引数が入って、戻り値はどのようになり、実行結果にどのような影響を及ぼすのか、プログラムの流れをトレースする習慣が自然と身に付くのです。
プログラミングとトレースは切っても切れない関係なので、本を写経しているだけだと、自分のスキルが付いているのか自信がない・・・という方は、是非とも自分褒めメッセージをプログラムの中に組み込んで、積極的にプログラムをトレースする習慣を付けて下さい。
また、そのことを実行前に行うと、事前にエラーを発見しやすくなるというメリットまで得ることが出来ます!!これは、プログラミング学習を効率よく進めやすくなる効果まで発揮できることになります!!
(エラー文を調べることで、人は成長するのは分かりますけれど、出来る限り、サクサク学習を進めたいですよね。)
子どもの頃から、「スクラッチ」などのプログラミング言語を始めている今の子どもたちは、プログラミングが出来ると、先生やパパさんママさんから沢山褒められるかと思います。
しかし、子どもの頃にプログラミングに触れる機会が全く無い環境で育って、大人になってからプログラミングを始めると、褒められて伸びると言う機会は子どもに比べて極端に少なくなります。
そうすると、学校でプログラミングが学べる環境の子どもたちと、大人になってからプログラミングを始めた私たち昭和生まれの中高年とでは、ますます差が開くばかりです。なので、プログラミングの学習を通して、可能な限り自分で自分を褒めて伸ばしてあげて下さい。(世の中冷たいもので、頑張って勉強していても、現実は誰も褒めてなんてくれませんから・・・。)
先ほど、基本情報技術者試験の話をしましたが、私は基本的にはプログラミングに資格は必要ないと考えています。興味のある方はこちらの記事をご覧ください。
● プログラミングは暗記??暗記じゃない?? ●
プログラミングの先輩の中でも、私に直接的に影響のある方(仮に、A先輩とB先輩とします)から、プログラミングは暗記なのか暗記ではないのか意見が別れている為、初心者の私は少々混乱してしまいました。
(A先輩とB先輩の個人情報保護の為、多少表現は変えています。また、アドバイスを聞いた順番で、最初に教えてくれた先輩をAさん、次に教えてくれた先輩をBさんとしています。どちらも大変お世話になっている尊敬している方です。)
A先輩曰く、「プログラミングは暗記!」まず、覚えていないと、そもそもコードが書けない。私がプログラミングでフリーランスとして月100万円以上稼げるようになったのは、コードを何回も書いて覚えたから。プログラミング学習の専用ノートを作って何回も見直して、模写出来なかった所は何回もコードを打ち込んで体で覚えること。
B先輩曰く、「プログラミングは暗記では無い」覚えるよりも実際に手を動かして簡単なプログラムを作ってみる。プログラミングは暗記ではなくて「身につけるもの」である。コードを書く時は試行錯誤して「どのようにプログラムが動作していくのか考えてプログラムの流れを掴み、トレースをすることが大事」であり、そこに比重を置いて学習を進めて行くことがプログラミング上達の近道である。
と相反するような、それでいて共通する部分もあるようなアドバイスを頂きました。
どちらも既にプログラマーとして既に大きな結果、実績を出している方です。
人間でも動物でも「刷り込み効果」というものがあって、「最初に見たものを親」だと思ってしまう傾向があるようです。
なので、A先輩のアドバイスが私の脳裏に深く刻み込まれていましたが、B先輩のアドバイスも論理的に考えて正しいと私は思います。
で、結局どっちなの!?プログラミングって暗記なの?暗記じゃないの????って、ことで私はかなり悩みました。
そこで、「折衷案」つまり、両方の先輩方のアドバイスの中間や共通している所を取ることにしました。
具体的には、入門書でプログラミングの模写をする前に、「これは何をするプログラミングなのか」を1〜2行程度の短いコメントで書くようにしました。例えば「文字列を検索して下線を引く処理」など、何をするプログラミングなのか、コードを書く直前にコメントで書いてから、実際に入門書の模写コーディングをしました。
また、ノートを取るのではなく、私が知らないメソッドやオブジェクトが出てきたら、例えば、「getName()は名前を取得するメソッド」などと短いコメントを入れるようにしました。ノートを取る代わりに、コメントにメモ書きというふうに学習方法を変えました。
コメントを書く際、きっちりコメントを書くというよりも、「自分が分かる最小限のコメント文でまとめて、コメントにかける労力を最小限にして、その分を”思考して理解をすること” に回す」ようにしています。
更に、暗記科目みたいにガチガチに「さぁ、覚えるぞ!!」と力むのではなく、プログラミングの処理をざっとこんな感じに動くんだろうな・・・と頭の中でイメージすることにしました。これは、プログラミングのトレースをもっとふんわりさせた、気軽にやれる感じで、コーディングしながらイメージをして学習しています。
● お節介な先輩学習者 ●
「本でコードを模写するよりも、自分で何かアプリを作って、検索(ググりながら)勉強した方が実力が付く」などとTwitterで呟いている先輩学習者もいます。
しかし、プログラミングを始めたばかりの方は、入門書やドットインストールなどの学習コンテンツの通りに動かすだけで、一杯一杯でヘトヘトなかつての私のような方もいます。
そんな時、「本を写しているだけの私はダメなんだ・・・」って落ち込んでしまったこともありましたが、そういう先輩は大きなお世話だ!!って今となっては断言できます。
初心者に自慢して、マウントを取りたいだけでしょうか?
それはアドバイスではなく、クソバイスです。
そんな時間があったら、自分のスキルを磨きましょう。
マウント取りアドバイスのもう一つに、「学習コンテンツを何回も回っていないで、さっさと成果物を作れ!」というのもあります。
1番良く無いのが、「プログラミング学習をやめてしまうこと」なので、自分が納得して続けられる方法でないと勉強がしんどくなってしまいます。
勿論、スランプや体調・家庭の事情などで、プログラミング学習を中断してしまうことは仕方のないことですが、そうでないなら、なるべく自分に合った納得の行く方法で学習を続けることが望ましいです。
また、print文などの出力を覚えたての人に、「そこは関数を使ってこう書くとスムーズになる」と言われるのも、初心者の立場からしたら、勘弁して欲しいです。
確かに基礎文法をある程度習得するとその通りだと納得するのですが、初心者の段階ではそのアドバイスでは混乱するだけですし、初心者にとっては、print文を書いてそのコードを人前に晒すだけでも、物凄い勇気のいることなんです。混乱によって挫折のリスクも高まるかも知れません・・・。
「あ、この人、初心者ながら頑張っているんだな・・・」と余計なことを言わず、温かい目で見てあげて下さい。
そうすると、必ず基礎文法を習得して、関数を使って処理をまとめて呼び出すことや引数を自在に使って出力結果を変えることも自分で出来るようになりますから。
プログラミングに限らず、スポーツでもダンスでも楽器でも、その段階、段階に応じて、必要な工程が異なります。
今の自分の段階、レベルに合った方法で学んでいくことが最も挫折しずらいですし、そういう余計なことを言う先輩のせいでプログラミングに挫折してしまうのは余りにも勿体無いと思います。
なので、プログラミングの先輩方に初心者の私から申し上げたいとは、余計なアドバイスをせずに「温かい目で見守ってあげること」が、最も成長を促すのではないかと私は思います。
くどいようですが、アドバイスは「段階に応じて」異なって来ます。
先輩方は初心者を見て、色々言いたくなるかも知れませんが、その時間をあなたのスキルアップにした方が、プログラミングの挫折者を減らすと思います。
(挫折させたくて言っているのだとしたら、そう言う先輩は、プログラミグの前に「道徳」を学んで下さい。)
関連記事:プログラミング学習で関わってはいけない人と逃げるべき環境
● プログラミング学習に便利なツール ●
このセクションでは、プログラミング学習に、「あったら便利だなぁ」と思えたツールを紹介します。
ドットインストールやpaizaラーニングなどの動画の講義を終えたら、実際に本を買う段階になります。
まず、プログラミングの本を紹介する前に、ブックスタンドを紹介します。
(デュアルデスプレイを使う方はそれでも良いと思います。)
プログラミングをやっているとずっと座りっぱなしなので、適宜ストレッチをしていますが、パソコンで入力して本を見て・・・となると結構疲れるのでブックスタンドを紹介します。
これ、手前の金具にゴムがついていてストッパーになっていて、本を抑えることが出来るんです。これでプログラミングが捗りました。
表側はこんな感じです。
本の著作権があるので、カバーを向けています。
ここから、本やプログラミング学習の助けになるグッズなどを紹介して行きますが、決して全て揃える必要はございません。
興味のある商品のAmazonレビューを1つか2つぐらい見て、「ふ〜〜〜〜〜〜〜〜〜ん」と眺めてみる程度で十分です。
まず、「独習Python」ですが、Pythonの動画レッスンを終えた方には丁度いい難易度になっています。読んでいて分からないことも殆ど無いですし、多少あった時は少し調べたり前に戻ったりしています。
プログラミングのノートとして、本を読みながら特に覚えておきたい事をまとめるのに使っているノートアプリ、「Notion」が便利です。このアプリは、Windows、Mac、Android、iosで使え、GoogleのID、パスワードでログイン出来るので、書いたノートをいつでも見直せます。このアイコンが目印です。
直感的に使えて、使い方として覚えておく事は、プログラミングのコードを書くときに、「/code」スラッシュにcodeと書いて言語を選択してノートに載せることが出来ます。
ただ、私はこのノートよりも、Googleドキュメントの方が使いやすかったので、今はそっちを使っています。先ほどの先輩のアドバイスにより、ノートを取る学習は、あまりオススメでは無いようなので、私がノートに書く内容は、学習した単元の日付などを「自分がどこまで進んだのか忘れないためのメモ書き」程度に収めています。
プログラミングだけでなく、テレワークなどでデスクワークも増えていて腰に負担がかかるので、私は骨盤ベルトを利用しています。
「骨盤整隊カシャーン」というベルトで、巻き付けてマジックテープで止めて、両脇の調整ストラップをカシャーンと引っ張って、強力に骨盤を固定出来るので、プログラミング時の疲労が半減しました。
Lサイズのものです。
IT企業の研修などでベテラン講師の方のこの本が各言語のことやアルゴリズムが学べて、プログラミング言語を学ぶおススメの順番がストンと納得いくように書かれて、興味のある方は是非お手に取ってみてください。
これからプログラミングを始める方だけでなく、中々上達しないで悩まれている方は、高額なスクールやオンラインサロンに入る前に、コンピューターの仕組みやハードウェアの理解、プログラミングの本の選び方、プログラミングを伸ばす教え方を学ぶことで、SNSでインフルエンサーの方々がおっしゃていることに惑わされず自由にプログラミングを勉強出来る本を紹介します。講座の雰囲気が味わえる本なので、先輩プログラマーからアドバイスを受けている感じで読み進めています。C言語を用いたコードが掲載されていますが、Pythonの学習をしていた私でも安心して読める内容になっています。
◆ifとelseの思考術 プログラマ脳育成講座
著:矢沢久雄
◆10代からのプログラミング教室
著:矢沢久雄
Windowsで標準にインストールされているメモ帳を使って2つのプログラムを作成します。10代の若い方を対象に書かれていますが、もっと上の年齢層の駆け出しエンジニアの方にも基礎力UPに繋がると思います。
この本で特に大事だと思うのは「プログラムを改良すること」です。
プログラムを学ぶ上での考え方も学べます。
私は基本情報技術者試験でヒートアップした頭をクールダウンする目的でこの本を読みました。実際にサンプルプログラムを作ってみて、キチンと入力したのにエラーが出て調べながら知識を増やしました。環境によるものかもしれませんが、文字化けや”日本語”の部分がエラーになってしまったので、”日本語”を”nihongo”のように半角英数のローマ字で入力した所無事実行できました。
ちょっとネタバレになってしまうかもしれませんが、小学生に二分探索を教える時にこういう風に伝えればいいんだなと思いました。
◆超頻出 ITエンジニア英単語150
著:松元大地
エラーが出た時に、どうしたら良いのか分からなくなることが多く、
英語力の不足を感じる今日この頃。
中1から英語をやり直そうかと思っていましたが、
IT、プログラミングにピンポイントで学べる英語の本を
探して購入しました。
安価でコンパクトながら実用的です。
「エラー系」、「なんか上手く行った系」などに分けてあり、
コマ切れな時間やプログラミングの息抜きに学べます。
スマホで読むユーザの為に、大きめのフォントで書かれています。
◆子どもといっしょに コンピュータとプログラミングを学ぶ本
著:矢沢久雄
タイトルに「子どもといっしょに」とありますが、
独身実家暮らしの43歳でも、1人楽しく遊べました。
子育て、孫育て中の、パパさん、ママさん、じいじ、ばあば
向けに書くと、2020年4月から小学生のプログラミングが必修になり、
子どもに聞かれても、どうやって教えたら良いのか困っている
ご家族様もいらっしゃると思います。
この本では、Excelと、Windowsに最初から入っているメモ帳、
ペイントを使って、入力ゲーム、掛け算九九、円周率、数当てゲームなどの
簡単なプログラミングで遊べます。
また、子育てに関わらず、これからプログラミングをはじめる成人の方、
シニアの方、今後、プログラミング必修で教育を受けてきた方と
ビジネスの現場で一緒に働く可能性の高い中学生、高校生、大学生の方も
作りながら遊べると思います。
◆プログラミングとロジカルシンキングが一気にわかる本
著:木田知廣
冴えない営業マンのビジネスでのストーリーを使って、
小説を読む感覚でロジカルシンキングを学べます。
プログラミングに関しては、ExcelのIF関数や文字列操作・検索関数の理解出来て、
マクロの基本的なことがなんとなく分かれば、
コードの部分を除いては、スラスラ読めると思います。
フレームワークやlogicツリーを使って、プログラミング的思考、
プログラミングの基本が分かるので、ExcelはMOSのExpertレベルは
分かるけれど、これからプログラミングをはじめるのに、
何か読んでおいた方が良い本あるのかな、と探してる方には
おススメです。
◆速読関連の本
プログラミングも言語ですよね。
言語と言えば読解。
読解と言えば速読と辿って行って、
速読に興味を持ち始めました。
「長文読解が苦手で学生の頃勉強でしんどい思いをした」~
「もうちょっと早く読める様になりたいな」と考えている方まで、
速読の入門的な所+食生活や健康についても役立つと思います。
この教室に通いたかったのですが、丁度コロナの第一波の頃でしたので、
ユーキャンの通信教育を利用していて、
プログラム2の課題提出まで終わりました。
プログラミングと言うと、情報商材などもありますよね。
決して情報商材が悪いとは申しませんが、私個人の意見では、そういうのに飛びつくのは情弱だと思うんです。(ゴメンナサイ。言っちゃった(;^_^A)
なので、動画レッスンや本など、自分で調べて学ぶ努力をして、情弱を私自身も直していきたいです。私自身も情弱なので、情報商材には手を出さず、自分が尊敬している方が出版された本などで勉強しています。
本を読むのもアタマの回転も遅くて弱弱のダメダメな自分を変えて、人生の質を高めたいと思って、ユーキャンの速読講座を利用しています。
プログラミングのアンケートにご協力頂ける方はこちらのフォームで勉強法など色々と教えて下さい。
を作成しました。
メインメニューに戻る
ドットインストール無料レッスン学習ノート
プログラミング学習で関わってはいけない人達と逃げるべき環
プログラミングと資格について