これからプログラミング学習を始める方、もしくは、すでに始めている初心者の方へ向けて、この記事では、プログラミング学習を始める上で大切なマインドセットについて書いていきます。
いや、そんなことより、早くプログラミングを教えてくれよー
という声も聞こえてきそうですが、マインドセットは本当に大切ですのでどうか少しの時間をください。
でも、そんなに大切ですか?
めちゃくちゃ大切です。
このマインドセットを知っているか知っていないかで学習の効率が大きく変わってきます。
マインドセットが大切な理由
正しい努力は報われるが、ただの努力は報われない
これをわかりやすく例えるなら
- ただの努力とは「九州を目指している。そうだ、自転車で埼玉方向へ全力で走ろう!」
- 正しい努力とは、「九州行を目指している。飛行機のチケットを取るためにバイトしてお金を貯めよう」
明らかに2の正しい努力の方が先にゴール(九州)に効率的にたどり着きますよね。
これからお伝えするマインドセットはプログラミングを学ぶ上でこのたとえくらいの効率の違いを生みます。
こちらの記事では、具体的なプログラミングコードなどを解説するのではなく、学び方に対してのマインドセット(考え方)を記載しています。
そのマインドセットを持つことで、効率的な学習方法を知り、最短で目標を達成できる可能性が高まります。
大切なマインドセットとは。概要の解説
マインドセットとは考え方の方向性、行動パターンをまとめたもので、習慣と似たようなものです。
ゴールは同じでも、ゴールまでの進み方は自由だよね。
自由だからこそ、はじめの例で出したように
- 自転車で向かうという判断をする人
- 飛行機で向かうためにお金を貯めようと判断をする人
というように考え方の違いによって行動、手段が変わってくるのです。
行動が異なると同じ目標でも、達成スピードとコストが大きく違ってきます。
目標をあっという間に達成する人と、なかなか達成できない人の違いはこれなんですね。
お金持ちになる人はお金持ち特有の考え方や行動パターンがあります。またその逆もありです。
ですので、大切なことは既に目標を達成した人がどのようなマインドセットを持って、どのような考え方、行動パターンをしていたかを知り、それを真似する事が大切です。
「学ぶ」とはもともと「まねぶ」からきているといわれています。
学ぶこと = 真似なんですよね。
まずは先輩の行動をまねることからです。
マインドセットの目次
- なぜプログラミングを学びたいのか、しっかり認識しておこう
- 世の中の99.99%の課題は既存の知識の組み合わせで解決できる
- 学ぶ上で大切なのはやっぱり基礎力・基礎知識
- プログラムを書くトレーニングも大切だが、それ以上に読むトレーニングが大切
- プログラミングは暗記じゃない
- 細かいことはどうでもいい。メンタルモデルを構築しろ
- ラーニングピラミッド理論で効率的な学習方をする
そもそもなぜプログラミングを学びたいのか
あなたはなぜプログラミングを学びたいのでしょうか?
- 今よりお金を稼ぎたい?
- 今より自由な時間が欲しい?
- 一拠点にとどまらず、海外などいろいろな場所に行きたい?
- 単純にコンピュータが好き?
どんな理由であれ、すべて一人一人の大切な理由で、皆少しずつ異なりますが必ず共通するものがあります。
それは、
- お金
- 時間
です。
タイムイズマネーというように、この2つは密接につながっております。
そして、時間は今の人類の技術では増やすことはできません。
地球で暮らす以上、皆平等です。
めちゃくちゃ余談ですが、地球外の何かと比べた時は時間は平等ではないということ、知ってました??
ですが、お金は増やせます。
どんな理由でプログラミングを学ぼうとも、どう効率的にお金を増やし、どう自由な時間を作るか、それがすべての根底にあるものになります。
1. お金
お金ではなく、夢なんだ。
お金よりも愛が大切だ。
よくこのような言葉を聞きます。
ですが、これはを現実世界で実現しようとするとなかなか難しいところがあります。
実際は、「夢」にも「愛」お金が必要です。
西野亮廣さんの「夢と金」という本の紹介がyoutubeでありますが、これはとても参考になります。
こちらの動画は気になったら見るくらいでよいと思います。
それよりも後で紹介する武井壮さんの「大人の育て方」という授業がとても大切ですので時間が取れないかたはそちらを優先してご覧いただければです。
そしてこちらはデヴィ夫人の「大好きな年収200万円の男性」と「好きでもない年収1億円の男性」では、どちらと結婚するべき?【デヴィ夫人の婚活論】というyoutube動画です。
プログラミングを学びたい理由が「お金」という明確な理由ならわかりやすいのですが、「自由な時間」「海外に行きたい」「作りたいサービスがある」というように直接お金に結びつかない場合は、イメージしにくいかもしれません。
夢のためでも、自由な時間が欲しいためでも、絶対にお金の問題はついてきます。
きちんとお金の知識をもち、効率的に稼ぐことができれば、夢の選択肢も広がりますし、働かなくてよい時間が増え、自由も手に入れることができます。
実はITエンジニアが取得する情報系の資格にも、決算書の読み方や財務に関する項目が出くるんですよ。
ITとビジネスは密接にかかわりますので、お金に関する勉強はエンジニアとして転職する際に必要になってくるんですね。
何を目標し、自分が向かっている先は市場全体でどのくらいのお金が動いていて、自分がどのくらい稼ぐことができそうなのか、それを知るっておくことはとても大切なことなのです。
この考え方について、とても大切なことを気ずかせてくれる武井壮さんの「大人の育て方」という授業がyoutubeにあるのでこの動画はぜひ目を通していただきたいです。
かなりおすすめで、学び方と、教育に関して「ハッ」とさせられます。
前半の基礎についても大切ですが、「後半の社会的価値とは?」につて、とても学べるものがあります。
2. 時間
どんなにお金を持っている人でも、持っていない人でも与えられた時間は同じ24時間です。
そして、寿命もある程度決まっています。
その中で目標を達成していかなければいけないわけですが、だれも、時間を無駄にはしたくないですよね。
効率的に目標を達成するには、時間のリソース配分がとても大切になってきます。
時間を増やすことはできないですが、お金で買うことができます。
九州へ自転車で行く例がそうですよね。
自転車で行けば大きなお金はかかりませんが、時間がとてもかかります。
飛行機で行けばお金はかかりますが、時間を圧倒的に短くすることができます。
これは時間をお金で買っているのです。
このように、増やせない時間をせめて無駄に消費しないよう、お金で買う必要があります。
そのためにはお金が必要です。
ですが、多くの人ははじめからお金が潤沢にあるわけではありませんので、稼ぐ必要があります。
稼ぐにはどうしてもある程度の時間が必要です。
となると、最小限の時間を投下して、最大のお金を稼ぎたいですよね。
上で紹介した武井壮さんの「大人の育て方」でもありましたが、
- かけた時間をギャンブルにしない
- これから進もうとしている道がどのような経済的価値を持っているのかを知る
- 経済的価値の高いポジションは何なのかを知る
そのためになぜ自分はプログラミングを学びたいのかを改めて明確にし、↑で上げたことを知っておくことが大切です。
いや、でも、何が稼げるのかなんて全く知らないですよ、、、
ですよね。
安心してください。
わかりやすいように表にまとめましたので、表から自分のポジションや目指すべきものを探していきましょう。
プログラミングの技術を使ってお金を増やすには時間をどこに投下すればよいのか
以下の表はエンジニアのキャリアマトリクスです。
この表を見ることで、どういったポジションがあり、どのくらい稼ぐことができるのかを簡単に知ることができます。
この表をもとに自分の目指す場所を明確に持っておき、その軸からぶれないように積み上げ、最短距離で目標を達成する事が大切になります。
ターゲット/商品 | 労働集約型(自分で働く) | 資本集約型(他に働いてもらう) |
一般ユーザー | コーチ メンター 記事執筆(売り切りタイプ) フリーランス 金額:5万 – 10万/月 自由度: 難易度: | サービスの開発運営 ブログ運営 金額:0万 – 50万/月 自由度: 難易度: |
一般の会社 | 一般の事業会社での勤務 一般のIT企業での勤務 金額:30万 – 60万/月 自由度: 難易度: | なし |
IT企業 | Google,Twitter,Meta,LINEなどの 高いITの知識を必要とする 企業への就職 金額:50 – 250万/月 自由度: 難易度: | サービスの売却 金額:契約次第 自由度: 難易度: |
経営者/投資家 | コンサルティング CTO フルスタックエンジニア 相談役 金額: 0 – 300万/月(契約次第) 自由度: 難易度: | サービスの売却 金額:契約次第 自由度: 難易度: |
この中でも特におすすめのポジションが、「IT企業×資本集約型(他に働いてもらう)」と「経営者/投資家×資本集約型(他に働いてもらう)」のポジションです。
このサービス売却がなぜおすすめかと言うと、ミドルリスクとハイリターンと、もっともコスパが良いからです。
そして次におすすめなのが「経営者/投資家×労働集約型(自分で働く)」のポジションです。
ん?サービスの売却?
すごく難しそうなのですが…
一見難しそうみ見えますが、コツをつかめばそんなに難しくないですよ。
まずはサービス売却につて解説します。
[もっともおすすめ]サービス売却の手順
サービス売却と聞くととても難しそうに聞こえますよね。
私もプログラミングを勉強し始めたころはそうでしたが、やってみると以外と簡単でした。
実際。私は自分で制作したサービスを売却し、売却先の企業で開発に関してアドバイスを行うというポジションについています。
売却の手順
まずはサービスを作ることです。
サービス開発と聞くと、0から1を生み出さなければいけないように思えるかもしれませんが、ここでの戦略は真似ることです。
今流行っているサービスを徹底的に真似、同じものを制作します。
例えば、現在はChat GPTをLINEから使用する事ができるAIChatくんがユーザー数150万人を達成しました。
ですのでこのAIChatくんと同じサービスを制作するのです。
はやっているサービスは必ず真似をして儲けようとする人が必ず出てきます。
必ず出てくるといい切れる理由はそれがお金持ちの考え方だからです。
例えば、ウーバーイーツが日本に上陸したとたん、似たようなデリバリーサービスが一気に増えましたが、あれも同じです。
儲かるとわかったビジネスを徹底的に真似るのがこの世界のセオリーなのです。
なので、いかに早く真似る事ができるかが勝負です。
ビジネスは陣取り合戦です。
先にシェアをとったやつが勝ちですので、早くリリースする事が大切になってきます。
ですので、今はやっているサービスを、他の開発会社などに時間をかけて0から制作してもらうよりも、すでに似たよなサービスがあるならそっちを買って時間を短縮することが合理的なのです。
制作したwebサービスを売却しましょう。
売却なんてやったことないし、敷居が高そう、難しそう。
そもそもどうやって買い手を見つけるの?
といろいろ疑問があるかもしれませんが、売却をサポートするサービスや、サービスの売却専用のマッチングサービスもあります。
そのようなサービスを使用する事で問題なくスムーズに制作物を売却する事が可能です。
このようなステップで制作から売却までを行う事で、比較的低リスクで、大きなリターンを得る事が可能です。
ここでのリスクとは、最初に投下するコストの事を指しています。
この場合、初期のコストは自分の時間です。
金銭面でのコストは、しいて言うなら公開するためのサーバー費用くらいですよ。
これは、自分でサービスを開発し、そのサービスを運用して利益を得るよりも圧倒的にコストと失敗のリスクが小さいです。
自分でサービスを収益化しようすとすると、マネタイズやマーケティングなど、もっと幅広く、膨大な知識、スキルが必要となってきます。
そして、売却時には、ある程度の金額が入って来ます。
しかもサービスの売却という実績はかなり大きな武器ですよね!
何かの交流会などで売却経験ありと自己紹介してみてください。
一目置かれると思いませんか。
たとえ、売却金額が、10万円や1万円と金額が低かったとしても関係ありません。
webサービスを制作し、売却したという経験はこれからビジネスを行う上で、必ず大きな武器になります。
時には売却金額が1000万を超えてくる場合もあります。
私と一緒にスクールを運営しているメンバーの中にはメディアを制作し、7000万円ほどで売却した実績を持っている方もいます。
うまくいけ金銭面で大きなリターンを得ることができ、
もし高く売ることができなかったとしても売却実績が付くという
どちらに転んでもハイリターンな戦略です。
[次におすすめ]経営者/投資家の近くでエンジニアとして働く
次におすすめなのが経営者もしくは投資家の近くでエンジニアとして働くことです。
私のキャリアはこのパターンです。
でも、そんな高いポジションにつくのは難しくないですか?
たしかに、大きな企業なら難しいですが、スタートアップなど立ち上げたばかりの会社なら、売却実績などあればかなり現実的になります!
簡単とは言いません。
ですが、立ち上げたばかりで人手が欲しいという会社ならかなり現実的に可能となってきます。
立ち上げ初期の会社人手が足りないことが多いです。
さらに仕事を教えてくれるわけではなく、むしろ自分で問題を解決でき、教えることができる人、つまり即戦力を求めてきます。
そこで、サービス売却の実績は最も即戦力をアピールできる実績になりますので、売却実績があれば高確率でそのポジションにつくことができるでしょう。
なるほど…
でも、どうやって決裁権を持っている人を探すのでしょうか?
そんな人脈私にはないのですが…
そうですね。
確かに決済権を持つ人は少ないですので、なかなか人脈を作るのが難しいところはありますね…
そこは、特別な方法はなく、とにかく動いて人脈を広げるしかありません
そんな…
すごい人の会話や人脈作りなんて私には無理です
その気持ちわかります….
なので、実際に私が行ったおすすめの方法を紹介します。
決済権を持つ人と仲良くなり、エンジニアとして働くおすすめの方法は、「今、決済権を持っている人は対象から外す」ことです。
どういうことかと言うと、これから決済権を持ちそうな人と仲良くなっておき、その人が後々決済権を持った時に連絡を取ってみるという戦略です。
将来のための種まきですね
そのためには、なるべく沢山のクリエイターと交流をしておきましょう。
現在すでに成功しつつある決裁者は話をする内容のレベルが高すぎたり、とても忙しく、会うことすら難しいでしょう。
ですので、気軽に話すことができる決裁者の卵となるような人物とつながっておきます。
これは、いい大学に行くメリットに似ています。
いろいろな経営者や、その周りで働いている人の話を聞くと、
企業間の大きな取引や、会社でいいポジションにつく時に以下のよな話があります。
- 大学時時代同級生だった人が取引際で決済権を持っていたので、そのつながりで○○億の契約を取れた。
- 同級生からの紹介で働いている/起業した
仕事は結局は人です。
いい大学に行くと、成功する可能性の高い人と成功する前に知り合いになることが可能です。
この「成功する前に知り合いになる」これがもっとも重要です。
想像してみてください。
あなたはビジネスで成功しました。お金も地位もあります。
そのタイミングで寄ってきた人知らない人と仲良くなり、何かビジネスを一緒にやろうとおもうでしょうか?
「地位が目当てで寄ってきているんだろうな」と思うのではないでしょうか。
一方、成功する前からずっと知り合いの人の場合はどうでしょう。その方のほうが一緒にビジネスをしたいですよね。
このように、いい大学に行くメリットは、勉強や肩書、就職へのチケットという面もありますが、一番は、成功前の人脈を作ることができることだと思います。
このように、成功前の状態の知り合いを増やすことで驚くほど仕事がしやすくなります。
これは私の実体験でもあります。
類は友を呼ぶという言葉の通り、決済者またはその近くで働く人の友達は似たような人であることが多く、そのつながりで売却先を紹介してもらい、そこで現在もアドバイザーをしています。
私はいい大学を出ているわけでもないです。
成功しそうな人を見極めることもできません。
どう知り合いを増やせばよいのでしょうか?
人を見極めるのは無理です。
なので、とりあえずビジネスとクリエイター色の強いコミュニティに属するが正解です。
見極めはあきらめてとりあえずコミュニティに属する事が大切です。
まずは、コミュニティサービスに入ってみるという一歩を踏み出してみましょう。
[セーフティーとして]一般のIT企業への就職
サービスの売却と、決済権のある人の近くで働くという話をしましたが、これら2つはどちらも中期的に見た場合の戦略です。
デメリット、リスクとして、
- 来月のお金は稼げない
- 貯金がある程度ないと実行するのが難しい
- 時間をかけて知り合いやサービスを作ったとしても必ずお金になるわけではない
と言ったことがあります。
ですので、リスクヘッジとして、まずは一般のIT企業へ就職、転職し、上記2つは平行して進める形が理想的です。
プログラミング未経験の場合、IT業界の立ち回りや常識がわかりません。
職につき、プロのエンジニアとして活動した経験がある人とそうでない人とでは、スキルや信頼が大きく違います。
IT企業へ就職
↓
サービス売却
↓
高いポジションで働く or 起業する
↓
投資家になる
の順が最もおすすめのキャリア戦略です。
世の中の99.99%の課題は既存の知識の組み合わせで解決できる
IT企業へ就職するにしても、自分でサービスを制作するにしても、エンジニアがやることは変わらず、以下の内容です。
これにつきます。
そして、世の中の99.99%の課題は既に解決済みです。
つまり、世の中のほぼすべてのエンジニアの仕事は誰かが解いた問題をもう一度解いているだけです。
ある程度プログラミングを勉強すると、自分がやっていること、エンジニアがやることは毎回書くコードも違うし、お客さんの課題も違う。
オリジナルだ!
と思うようになります(自分がそうでした)が、ほぼ確実にオリジナルではありません。
過去にやったことの繰り返しです。
本当にオリジナルであれば、それは論文にして学会に発表すべきです。
そうならないということは、すでに解かれた問題であり、それらが組み合わさって、全体で見るとオリジナルになっているだけなのです。
ということはつまり….
Googleなどで働いている給料の高いスーパーエンジニアと、給料の低いエンジニアの違いは「過去に解決した似た問題のストックをどれだけ持っているか」これです。
完全に、これです。
なるほど!
確かに、なんとなくわかる気がします!
でも、その解決した問題というのはどんなことを知識としてもっておけばいいんでしょうか?
そうですね。
結論から言うと「データ構造とアルゴリズム」の2つです。
え、難しそうですね…
まぁ、少し難しいところもありますが、大切な基礎ですので必ず習得したいところです。
これらの知識は主にコンピュータサイエンスと呼ばれる分野で勉強します。
アメリカやインドなどの情報系の大学では当たり前に学ぶ分野となっており、就職するにはコンピュータサイエンスの学位を持っていないと応募で落とされるらしいです。
それぐらい基本的な知識であり、この知識がない人は足切り対象になるくらい大切なものです。
ですが、日本ではまだまだ一般的ではなく、この知識がない人でもエンジニアになれてしまうことが残念なところです。
逆に考えると、日本はアメリカの10年遅れでやってくるといわれていますので、ライバルが少ない、今勉強する事で一歩先に進むことができるかもしれません。
ちなみに、最近、大手IT企業が採用条件にコンピュータサイエンスの知識を含めることが増えてきた印象です。
これから日本でも徐々に増えていく予感がしています。
学ぶ上で大切なのはやっぱり基礎力・基礎知識
何かを学ぶ上で大切なことはやっぱり基礎をどれだけ習得しているかどうかです。
初めのほうで紹介した武井壮さんの「大人の育て方」という授業でもあるように、基礎力がなければ学ぶことができる土俵にすら立てません。
これは私の実体験ですが、昔エンジニアとして企業に勤めていたころ、外部のアドバイザーの方がいました。
私はその方にプログラミングを教えていただいていたのですが、その方が何を言っているのかすら理解できず、私にとってその学びの機会は全く役に立ちませんでした。
その会社は教育や学習の機会を設けてくれるいい会社だったのですが、私の知識がなさすぎてその場を生かすことができなかったのです。
その時私は初めて「自分が学ぶことすらできない状態」ということにきづました。
例えるなら大学の数学の講義に数学の知識がない小学生が出席していようなものですね。
学びの場を与えられてもそれを生かすことができるかどうかは自分の知識量しだいです。
ですので、まずは徹底的にプログラミングの基礎を学びましょう。
昔から守破離と言いますが、改めて基礎は大切だと感じます。
確かに基礎って大切なイメージあります。
でも、webエンジニアに必要な基本的な知識ってなんですか?
なにを学べばよいのでしょう?
webエンジニアに基本的な知識は以下です。
- webの仕組み
- webサイトの制作方法
- プログラミングの基礎
- 変数と参照
- 条件分岐
- 繰り返し
- 関数
- データ構造とアルゴリズム
- データベース設計とSQL
多くのプログラミングスクールを見ると特に、データ構造とアルゴリズムを教えているスクールがほとんどありません。
データ構造とアルゴリズムは本当に大切なプログラミングの基礎知識で、数学に例えるなら小学生の算数です。
基本的な算数がわからないのに大学の問題を解かされているようなものです。
「○○を動かすには□□というコードを書けばいい」このように公式を暗記すればスクールの問題は解くことができるかもしれませんが、そのような人はその公式を分解して応用する事ができなくなりますので、すぐに限界が来ます。
さらに、そのレベルなら今はChat GPTで代用可能です。
ですので、ただただ公式を覚えるのではなく、その本質である基礎の知識を習得する方がとっても大切なのです。
プログラムを書くトレーニングも大切だが、それ以上に読むトレーニングが大切
プログラミングの勉強法に「アウトプットが大切!」「とにかく書け!」と言っていることを多く見かけます。
たしかにそうです。
初めの事はインプット3割、アウトプット7割くらいに。とにかく書くこと、アウトプットする事はが大切だと思いますが、忘れてはいけない大切なことが正しく読むトレーニングです。
最終的に価値を生む(お金が発生する)のはアウトプットに対してです。
なので、アウトプットのトレーニングに目が行きがちですが、
そのアウトプットは何から生まれるのでしょうか?
インプット?
そう!
正しくインプットできなければ正しいアウトプットもできません。
なのでプログラムコードの読解力はとても大切なのです。
これは先ほどの「学ぶ土俵に立つ」にも関連する事ですが、
正しく読むことができない = 勉強する事すらできない
ということです。
読むことができなければ学ぶことすらできないのか….
読めることって大切なんですね!
読むトレーニングはどのようにすればよいのでしょうか?
プログラムの読解力を一番鍛えるには、プログラムのメンタルモデルを構築する事が一番のポイントだよ
メンタルモデル….?
次の章でプログラミングのメンタルモデルについて解説します。
細かいことはどうでもいい。メンタルモデルを構築しろ。
メンタルモデルとは「○○をすると□□になる」というような物事に対する認識やイメージです。
といってもよくわからないかもしれませんので例を用いて解説します。
メンタルモデルとは?森のくまさんのメンタルモデル
例えば、「森のくまさん」という歌がありますが、歌詞は以下のようになっています。
あるひ もりのなか
くまさんに であった
この文章を見ることで、頭の中には熊にであったことでその人が襲われるかもしれない危険な状態であるということを想像できるかと思います。
これがメンタルモデルです。
文章ないには、熊が襲ってきたというような内容は一切記載されていませんが、
- 熊 = 力が強い
- 熊に襲われるというニュースを見る
というような情報があらかじめ脳内に存在する事によって「襲われるかもしれない危険な状態」ということが予想されたのです。
これが、「○○をすると□□になる」というイメージ。今回の場合は「熊に出会うと危険である」というメンタルモデルということです。
日本では….
実は森のくまさんはアメリカ人が作った曲ですが、アメリカでは銃を持っていることが当たり前の価値観です。
と言うことは森で熊に出会っても撃ち殺すことができるので危険な状態なのは熊さんかもしれません。
このように、環境や経験によってメンタルモデルが事なると、人によって認識が異なってきます。
ですので、プログラミングに対しても正しいメンタルモデルを構築しておかないと、話が通じなくなることがありますので重要なのです。
なんとなくメンタルモデルとは何なのか理解できましたでしょうか?
もう1つ、次はメンタルモデルがないとどうなるのか例を紹介します
メンタルモデルを気にせず勉強するとどうなる?数学のメンタルモデルで解説
人間は自然とメンタルモデルを構築する生き物ですが、仮に全くメンタルモデルを構築できないとどうなると思いますか?
メンタルモデルは経験などからくるイメージや価値観、予想ですので、それがないということはすべて暗記に頼るしかなくなります。
覚えていることしかアウトプットできなくなるのです。
メンタルモデルを構築しない学習 = 暗記
学生の頃、同じ授業を受けても人によってテストの点数が異なるという経験はないですか?
それはもちろん、宿題をやっているだとか、塾で学んでいるという面もありますが、一番はこのメンタルモデルの構築をうまくできるかできないかの差なのです。
例えば、掛け算の仕組みである、足し算を繰り返しているというメンタルモデルが構築されないまま、掛け算九九を暗記させられるとどうなるでしょうか?
んー
九九以外の計算ができなくなる?
そうです。
暗記に頼るしかないので、9 × 9より大きい計算ができなくなります。
ですが、掛け算の仕組みである足し算を知っていれば9 × 9 = 81に9を足して90ということが導きだせます。
さらに、引き算が可能ということを知っていれば、20 × 19という問題があったときに
細かい計算が面倒なので、
まず19を20にして、20 × 20 = 400
そして、先ほどの計算で増やした19を後で引くことで381という答えを導き出すことができます。
メンタルモデルがないと、このような応用した計算ができず、暗記勝負になってしましい、未知の問題を解くことができなくなってしまうのす。
プログラミング学習においても全く同じことが起こります。
プログラミングを勉強したけど、いざ自分で何かを作ろうとした時に何もできないとなってしまうのはこれが原因なのです。
ですので、プログラムの世界の○○をすると□□になるという仕組みを理解し、しっかりメンタルモデルを構築する事を意識しましょう。
プログラミングは暗記じゃないし、言語の問題じゃない
これまでの説明からこのようなことが言えます。
プログラミングは暗記じゃないし、言語の問題じゃない。
学校での勉強のせいか、プログラムを丸暗記しようとする人を多く目にしますが、暗記してはいけません。
メンタルモデルを構築する事を最優先にしてください。
そして、ともに多く目にする的外れな事がもう一つあります。
それは、「どの言語を勉強すればよいですか?」という質問です。
「森のくまさん」で説明したことを思い出してください。
あそこでのポイントは文章をイメージ化し、見えたストーリーについて話していました。
言語は関係ないのです。あの文章が中国語で書かれていても、英語で書かれていても、読み取れるストーリーは同じであり、大切な事はストーリーなのです。
森のくまさんというストーリーを書きたいのに、「どの言語を勉強すればよいか?」と聞く人は少ないでしょう。
プログラミングも同じです。
プログラムを書く上で大切な事は「世の中の99.99%の課題は既存の知識の組み合わせで解決できる」の章でも説明したように、問題を解決する方法を素早く導き出すことです。
その解決方法を日本語で記載しようが、英語で記載しようが、Java Scriptで記載しようが、phpで記載しようがなんでも書くことができるのです。
大切な事は問題を解決する手順を知っているかどうかです。
プログラム言語を知っていても、解決方法を知っていなければ、プログラムを書くことはできません。
ですが、逆に、プログラム言語を知っていなくても解決方法を知っていれば、それをChatGPTに入力し、phpで書いてと命令すれば書いてくれます。
プログラムを書くことは単なる翻訳作業でしかないですので、実際の現場ではおそらく全体の20%程度の作業量でしかありません。
残りの80%はどうすれば問題を解決できるのかを考えることに頭を使っています。
とは言いつつも、先輩エンジニアに「どの言語を勉強すればよいか」という質問をすると、ちゃんと答えを返してくれることが多いです。
ですが、それは、以下のような意図が含まれていることを認識しておきましょう。
- 今はアメリカが勢いがあるから英語かな…
- 中国やインドも勢いが出てきているから中国語とヒンディー語もいいかも…
上2つは例えですが、このように、勢いのある言語の方が稼ぎやすくなるのでおすすめとして答えているイメージです。
ラーニングピラミッド理論で効率的な学習方をする
マインドセットを構築することが大切といいましたが、マインドセットを構築するにはアクティブラーニングが必要です。
アクティブラーニングとは、ラーニングピラミッドの下3つの「討論・体験・教える」という学習方法の事を指します。
ラーニングピラミッドとは、学習したことの定着率、言い換えるならメンタルモデルの構築度合別に分類したものです。
ピラミッドの下に行けば行くほど、定着率が上がります。
ですので、なるべくアクティブラーニングを心掛けながら学習を進めていきましょう。
アクティブラーニングとそれ以外との違いはインプットかアウトプットかの違いです。
アクティブラーニング = アウトプット
それ以外 = インプット
ここがよく言う、インプット3割、アウトプット7割論につながります。
アクティブラーニングを多くすることでより学習したことの定着率が上がり、メンタルモデルの構築も早くなります。
「他の人に教える」か…
僕には教えるほどの知識もないですし、今の僕が教えるなんて申し訳ない気がします….
そういう場合は、ブログを書いてアウトプットするとよいですよ!
他の人に教えるということにハードルを感じる場合、学んだことをブログなどにまとめるのがおすすめです。
ブログを書く際に、だれが特定の人物を想像し、その人に自分の学んだことを教えるつもりで記事を書いてみてください。
そしてそれをweb上に公開してみるのです。
実際にそのブログが検索され、ユーザーが訪れると、モチベーションにもつながります。
さらに、何より、ブログを書く際はWordPressを使うと思いますので、WordPressの勉強にもなるという一石二鳥な勉強方法です。
サーバーの解説からブログの立ち上げ、カスタマイズ、記事の制作、SEOなどをアクティブラーニングを通して幅広く学習する事で、将来できる仕事の幅がかなり広がります。
ですが、最終てきにはやはり、実際に人に教えてみるということがおすすめです。
ですので、何かしらのコミュニティへ属し、新しい学習者やメンバーの方に教えることで、どんどんアウトプットしていくということを目指したいですね。