学習

【くじけない裏技】文系エンジニアが伝授するプログラミング勉強方法

こんにちは。文系エンジニア君です。

今回はプログラミング初学者・未経験者の方向けに、
私の失敗談、成功談を元に、プログラミング勉強方法をお伝えいたします。

あまりこの勉強方法を勧めてる人がいない、我流な少しだけ裏技チックな方法です。

対象読者

・プログラミングの勉強を始めようとしている
・プログラミングの勉強でくじけた経験がある
・エンジニアとしてキャリアアップしていきたい
・自分で世の中を変えるサービスを作ってみたい


まず、簡単に私がプログラミング学習をくじけた、失敗談からさせてください。





私がプログラミング学習をくじけた理由

どれほど多くのエンジニアがこの「くじける」を経験したか想像もつきません。
それほど「くじける」はプログラミング学習と隣り合わせな関係なのです。


そして、もちろん私も「くじける」を経験した中の1人です。


エンジニアになりたての頃意気込んで、Laravelを用い、PHPを使える環境を構築しプログラミングを学んでいました。
今思えば非効率な勉強学習方法をしていたため、くじけてサービス作成自体を諦めてしまいました。

下記が、「今考えたらわかるくじけた理由2つ」です。


1日1.5時間ずつくらいしか時間を取らなかった

このやり方は学習効率が悪すぎるのです。


当時は、時間配分がかなり下手くそで毎日1.5時間くらい時間を作り、学習をしていました。


なんとなく参考書に書いてあるサンプルサービスのようなものを淡々と作っていました。


すると毎日最初の30分くらいは、「これどうなってんだっけ??」
と、昨日の自分が書いたコードを思い出す作業をしなければなりませんでした。





毎日、毎日昨日の自分に「お前は何を書いているんだ」と腹が立ってしょうがなかったです。
その効率の悪さから来るストレス+身になっている感が得られなかったのが、確実にくじけ要因の一つでしょう。


体系的に学ぶのを避けていた

ある程度最初に体系的に学んでいないと、知ってて当たり前な前提知識が欠如し、大周りになってしまいます。

当時の私は、作りたいサービスがあったので、それを作る過程でプログラミング学習をしてしまおう。というコンセプトで勉強を進めていました。


このコンセプト自体は良かったのですが、
とことん「体系的に学ぶ」を避けていました。


要するに、最初から下記のフローで学習を進めていたのです。


会員登録画面を実装したいな・・どうすればいいの・・?

ググろう。このコードを使えばいいのか。コピペしよう。
このコードの「<?」って何? ググろう・・・・

「ture」って何? ググろう・・コピペしよう・・ググろう・・・



これを永遠にくりかえす学習方法でした。
「ググれば全ての答えがあるでしょ」という過信が、私をこの勉強方法に導きました。



ググって出てくる、コードを解説してくれるページをまともに読むには、
ある程度の前提知識がやはり必要なのです。



少し、極端な例えかもしれませんが、
ゴリラがいきなりWHOの国際会議に出席しても、ゴリラは何も理解できませんよね。



ゴリラは会議に参加するにあたって、「社会情勢」「人間の言語」などの前提知識がごそっと抜けているからです。



私はこれと全く同じことをしたのです。




しかし、この勉強方法でもうまくいく人はいると思います。きっとこんな人でしょう。

・1つのプログラミング言語を実務レベルまで習得した人
・SUITS(スーツ)のマイク・ロス並に記憶力がある人
・天才



残念ながら私は上記のどれでもなく、くじけ倒し、
乱れたPHPコードが書かれたファイルは、今も私のPCのどこかで眠り続けています。







文系エンジニアが伝授するプログラミング勉強方法4選



そんな失敗談を踏まえて、私が実践して効率的に感じたプログラミング方法をお伝えします。

前述しましたが、あまり他では紹介されていない「裏技的な」やり方です。
疑問が残る方は、いいなと思ったところだけ掻い摘んで勉強してみてください。

作りたいサービスをまず考える→設計

まずは、作りたいサービス構想からやってみましょう。
遠回りに感じるかもしれませんが、一旦やってみてください。


この段階から始めるのを勧める理由は、自分の作りたいサービスを作る過程で、プログラミングを学ぶのが、効率的かつ実践力が身につくからです。


プログラミングというのは、あくまでサービスを作る手段に過ぎません。


その作りたいサービスがない状態で勉強するのは、ゴールが見えていないので、モチベーションの維持がしづらく、とても難しいです。


サービス構想→設計ってどうやるの?

難しく考える必要はありません。

「マッチングアプリにこんな機能あればいいのに・・」
「釣りが好きだから、釣り専用SNSをつくろう」

などふとしたアイデアが出てくれば、もう「サービス構想」は完了です

また、どうしてもアイデアが出なければ、既存のSNS等のサービスのロゴを自分の名前に変えたバージョンを作る。でも全く問題ありません。


次に設計です。
これも全く難しく考える必要はありません。

作りたいサービスをExcelや、スプレッドシートに落とし込むのです。


この画像は、実際に私が作った設計書の一部です。




このように、必要な画面ごとにシートを増やし、
「ここを押したらどこに飛ぶ」「ここを押したら何が出る」レベルの情報を書いていくだけです。


一見難しいように思えるかもしれません。
しかし、ほとんどは既存のサービスを参考にしています。
世の中にはサービスがありふれているので、自身の作りたいサービスはほとんど流用できるはずです。

自分の作りたいサービスに近しい既存のサービスは、「どんな動きをしているか」を観察し、
設計書を作ってみてください。



そして、設計書が完成したら、使用する言語を決めてください。

ご自身で作りたいサービスにはどんな言語を使えばいいかをしらべてみてください。


ちなみに以下は王道パターンかなと思います。ご参考までに。
WEBサービスなら、「Ruby」「PHP」
iOSアプリケーションなら「Swift」

体系的にプログラミングを学ぶ

 

設計書が完成したら、いよいよプログラミングの出番です。

ここで大事にしていただきたのは、「まず体系的に学ぶ」です。
体系的に学ぶというのは、基本的な部分から順序立てて学ぶということです。

例えば、順序立てて学ばずに、いきなり設計書に則って「会員登録」部分を作ろうとすると、
「私がプログラミング学習をくじけた理由」で先述したように、多くの人は詰みます。


昨日野球を始めた少年が、日本シリーズ中のジャイアンツのマウンドに立たされるようなものです。


周りにプログラミングを教えてくれる講師がいたら別かもしれませんが、
個人で学習するなら、体系的に学ぶのは必須と言えるでしょう。


 

体系的にプログラミングを学ぶのに使えるサービス

1.Udemy

動画で教材を購入できるサービスです。
様々な業界の動画がありますが、もちろんプログラミングの動画も大量にあります。

簡単なサービスを作りながら、解説付きで体系的に学ぶことができます。

2.Progate

ご存知の方も多いでしょう。
実際に手を動かして基礎の基礎からプログラミングを学べるサービスです。

もし、ご自身が学びたい言語がProgateにあるなら、まずやってみてください。

3.良書

良書とは、評判の良い技術本の事を指しています。
ググって良書を見つけ、体系的に学ぶこともできるでしょう。



このようなツールを使いつつ、体系的にプログラミングの勉強をしてから、
設計書をプログラミングしましょう。

 

意味不明なコードは隈なく調べ尽くす

体系的な学習が終わったら、いよいよ自身で作成した設計書をコードに起こしていきましょう。


そうすると、基礎学習で出てこなかった応用技術を使わなければならない場面に遭遇します。


「Swift 会員登録画面 コード」のようにググってください。


すると、パイオニアのように詳しい先人が「こう書くといいよ」とコードを紹介してくれる記事が大量に出てきます。


このコードのわからない記述は隈なく調べてください。
体系的な学習を終わらせたあなたなら、調べ尽くせば理解できるはずです。


逆に調べずに、ただコピペしてくだけだと後々詰む可能性が高いです。


後々何か問題が出た時に(プログラミングは大小問わず問題がしょっちゅうおきます)、
理解せずにコピペしたコードだらけだと、コード自体がブラックボックス状態になり、
何が原因が特定するのに膨大な時間を要するからです。


遠回りに感じるかもしれませんが、疑問点はなるべく潰して、進んでいきましょう。


 

勉強時間は多く確保する

これも失敗経験からの学びです。

1日3時間くらいは時間を確保したいですね。

毎日1時間程度しか確保できないと、その1時間が「昨日のこれなんだっけ?」と思い出す作業に時間の多くがとられ、
なかなか進みません。

これは感覚的な話になってしまいますが、プログラミングという新しい概念を習得するには、
一回の勉強時間を長くとった方が定着しやすい気がします。

もし、平日に3時間とるのが厳しい方は、思い切って毎週土日にどっぷり10時間ずつやる。
でも良いかもしれません。





さいごに どうしてもくじけそうな時は


文系出身の未経験者がプログラミングを個人で学習するのは、決して簡単ではありません。

どうしてもくじけそうな時は、下記のことを強く意識してみてください。


「エンジニアにとってサービスを作りきったら得しかない」

理由

・マーケティングを頑張って作ったサービスが当たれば、IT社長に
・圧倒的に実務力がつく
・サービスがポートフォリオ(経歴書)に書け、実績が証明できる

 

どうしてもくじけそうな時はこのことを思い出してみてください。
どうにか踏ん張れるかもしれません。

以上、私のオススメするプログラミングの勉強方法でした。

-学習
-, , , ,

© 2022 文系エンジニア君 Powered by AFFINGER5