見出し画像

初心者がたった2週間でWebサイトを作ってから1年、どうやって学んできたか振り返る(前編)

今からプログラミングを学び始めようと思っている人へ

私は今35歳で、プログラミングを始めたのは34歳の時です。年齢をわざわざ冒頭で書いたのは、年齢を理由になにか始めるのをためらっている人がいれば、背中を押したいなと思ったからです。
学び始めるのに年齢なんか関係ないってことは、去年G's ACADEMYという場所でいろんな人に出会って、ますます強く感じているところです。

さて、久しぶりにnoteを書こうと思ったきっかけはこれです。

この日は、プログラミングを始めた時に勢いでMacBookを買ってからちょうど1年の日でした。「長いようで短い」という言葉をこんなにも噛みしめる日々になろうとは、去年の今頃の私は想像もしていませんでした。

初心者の私がどのようにプログラミングを学んできて、なぜエンジニアになろうとしたのか、転機となった体験からちょうど区切りの1年が経ったので、振り返りつつまとめを書きたいと思います。

学び方のスタイルは個人差があるので、これが絶対とはもちろん思っていませんが、学び方を模索しているだれかの参考になれば幸いです。ちょっと長いです、前後編分けました。5分少々お時間ください。

前編→このページ

後編→ここからもいけます

ハマったきっかけは自分で作れた感動体験

ちょうど1年前、プログラミングスクールの課題で実際に作ったものが、冒頭でも出てきたこちらです。HTMLとCSS、それからコピペしてきたJavaScriptを少しだけ使って、2週間で完成させました。課題に取り組むにあたり、コードについて教えてもらったのは、HTMLとCSSについて4時間の授業だけ。あとはただひたすら、家で分からないなりにググったり、授業の演習で使ったコードをコピペしたり。。。

正直今でも思い出すくらい、分からなさすぎてめちゃくちゃ大変でした。

このような形で、私の通っていたG's ACADEMYでは毎週授業のあとプログラムの自由課題が出ていたのです。全部で10回ほどあった課題の中で、私にとってはこの初回の課題は最もしんどくて最も思い入れのあるものになりました。

というのも私には、独学でHTML&CSSの本を1冊やろうとして、10ページほどやっては数週間放置。また少しやっては放置、の繰り返しの末、最終的に途中で投げ出した過去があったからです。数年前に半年以上かけてできなかったことが、たったの2週間でできたという驚き。その驚きにプラスして、形にできた自信と達成感が混ざりあい、言葉では言い表せない不思議な高揚感で満たされたのを覚えています。

このときから半年間プログラミングを学んでいく中で、この瞬間の「できた!」という達成感と充足感の入り混じった感覚が忘れられず、どんどんプログラミングが好きになっていきました。私にとってはまさに人生を変えたプログラミングとの出会いです。

「分からない」=「できない」ではない

独学と言っても、本1冊すら終わらせることができず挫折した私ですが、自分なりに勉強を進めていたつもりでした。やり方は本の内容を頭からやっていくスタイルで、とにかくひとつずつ理解しながら進めるのが良いと思ってやっていました。でもこれだと当然、分からないことが出てくると止まってしまいます。結果的に行き詰まったあと、嫌になってやめてしまったのですが、不思議とこの進め方に疑問を持ったことはありませんでした。

一方でスクールで課題を出されてサイトを作った時は、全部を理解していたわけではないのに、なぜかできた、作れたんです。「分かること」と「できる(作れる)こと」が必ずしも同義でないことを初めて実感しました。
本を読んでやってみて、分からなかったからできなかった訳ではなかったのです。できるようになる方法で、取り組んでいなかった。

もちろん、ベストは「理解した上で、できる(作れる)ようになる」ことです。でも私個人の実感としては、特に超初心者のうちは理解しようとして手が止まるより、1行でも多く動くコードを書いてみることが成長への近道だと思います。その方が圧倒的に楽しいですし。
まさに習うより慣れろ、の世界。

ちなみにこれも、JavaScriptをコピペしながらなんとか動かして作りました。プログラミング始めておよそ1ヶ月の頃。
習った範囲の表面的な知識&コピペ&ググり力で、こんなのが作れたという、自慢になるかどうかは微妙な実績が私にはあります。でもだからこそ、自信を持って「最初は分からなくてもいい」と言えます。何回でも言いますが、これ作った時のこの人、ソースコードの中身あまり分かってません

授業で習ったFirebaseのリアルタイムデータベースとLocalStrageを使っています。でもその辺の接続は授業で使ったコードを流用しているし、音声認識と左右の出し分けのロジックはググって拾ってきたソースコードをごにょごにょして作ったやつで、アイコン選択のところは習ったばかりのif文で途方もない行数で書かれていた。今ソースコードを改めて眺めると、分かってなかったことがよく分かるやつです。
でも、Firebaseを使った課題が出された時にすぐ「LINEのコピーアプリを作りたい!」と思ったんです。だから必死でそうなるように調べて、あと音声入力を同期がやってたからそれも入れたくて、なんとか実装しました。

だって、音声入力が実装できたら嬉しくないですか?!いつも使ってるLINEみたいなの自分で作れたら超テンション上がりませんか??!

少なくとも私は、めちゃくちゃ嬉しかったし、超テンション上がったし、とにかく楽しかった。ということで、学び続けるためのガソリンを、学び始めの1ヶ月という超短期間で十分に注入できた私はどんどんハマっていき、できることや分かることを少しずつ増やしながら卒業制作を完成させ、プログラミングを仕事にしたいとまで思うようになっていったのでした。

どう学んできたか

では実際、どう学んできたか。冒頭でも触れましたが、最適な学び方は個人差があるし、プログラミングのレベル感によってもどんどん変わってくると思うので、初心者の頃にやったことを振り返りながら、今ならこうするなー、とか実際に今やっていることというのも含めて紹介していきます。

その前にここで一旦、改めて私のことをお伝えしておきます。
前職は医療法人の事務部門に在籍し、広報や採用を担当していました。その業務でWebサイトの制作会社の方とやりとりするうちにサイト制作に興味を持ったのですが、HTML&CSSの教本を独学でやろうとしてつまづいた経験があります。それから数年、昨年の春にたまたまG's ACADEMYの広告を目にして、

「セカイを変えるGEEKになろう。」

のキャッチフレーズに居ても立っても居られなくなり、即入学決意してしまった人です。なんなら入学前の説明会に行ったのは、まあ入学はするけど念のためどんな感じか確認しとくか、くらいの気持ちでした。

後編の以降の学び方の紹介については、ちょっとだけやってみた独学の経験と、このスクールに通った中での経験談が中心になりますが、一般的な話も結構あると思うので良かったらお付き合いください。

1.学ぶ目的をはっきりさせる

学び方、と言いつつその前段階のお話です。なぜ学ぶかをはっきりさせないと、学習を継続させるのは厳しいと思います。
スクールに通っていた同期のメンバーのほとんどは、起業や就職という目標がありました。他にも何か絶対作りたいものがあるとか、ちょっとかじって楽しかったからチャレンジしてみたい、とかそんな感じでもいいと思いますが、何かしら目的はあったほうがいいです。

私が独学でやってみようと思ったきっかけは「なんとなく興味があったから」程度だったので、実際失敗しました。学び方以前にまずスタートが良くなかったと思います。
一方でスクールに入った時には、明確に自分でサービスをゼロから作ってみたいという想いがありました。これが実際に入学から半年後、1月末の卒制発表に向けて作ったWebサービスです。

リアルな友達との間で使うことを想定し、信頼性の高い口コミだけをもとに、お店をクリップしながら繋がれるSNS的なサービス「RestList」です。
デザイン苦手すぎてUIいまいちだったり、サクサク感がなかったりと、まあいろいろありますが、企画からはじまり約2ヶ月でゼロから作り上げました。自分では満足できなかった点もありますが、とりあえず目標として定めた私の半年の成果物はこれでした。

2.言語はなんでもいい とにかく動くものを作る

学び始めは、小さくて単純なものでいいので、とにかく触って動かせるものを作るのがおすすめです。理由はもちろん、楽しいからです。最初が楽しくないと続けるのが辛くなります。
また、作るものが決まっていると検索しやすくなるのもポイントだと思います。JavaScriptでLINE風のメッセージアプリ作りたかったら、とりあえずそのまま検索すればOKです。なんかでてきます。
ただし重要なのは丸写しではなく、処理を小分けにして調べる→パーツごとに写経して組み立てていくという地道な努力です。私は単純にまるっと写経で実装してしまったことも多々あったので、特に最初の頃のJavaScriptはもっとちゃんと時間をかけてやれば良かったと、あとから後悔しました。

言語の選択については、やりたいことができるなら正直なんでも良いんじゃないかと思います。この先勉強続けるなら、どのみち複数言語触ることになりますので。ただ環境構築は鬼門なので、できるだけ避けるか、詳しい人に一緒にやってもらうか、オンラインですぐ書けるコーディング環境などで始めるのが良いかと思います。

私はスクールで週ごとにJavaScript→PHPとテーマに沿った授業を受け、それを使ったマイクロアプリを課題で作りながら、プログラミングの基礎的な構文を少しずつ学んでいきました。

もし今独学でするなら、最初は絶対に環境構築が必要ないような教材を選んでやります。なぜなら初心者はターミナルが使えないから。
最初は作るものを決めるためにProgateとかドットインストールとかUdemyなど、有名どころのオンライン教材を見比べてみて、分かりやすそうなのを使って、チュートリアルをなぞりつつ書き方に慣れるために手を動かします。そして教材の中で作ったものを今度は自分でちょっとアレンジしながら別バージョンを作ってみたり、他のサイトを渡り歩いて追加機能を増やしてみたりします。

本を買うなら、初心者向けの中で完成物があるものを選ぶと思います。欲を言えば、初心者の頃は1冊を通してひとつのものが作れるタイプより、短いスパンでゴールがたくさん味わえるように小さなアプリケーションが複数作れるタイプの本があれば良いなあと思います。(そういう本あるのかな。。。)

ちなみに今の私は、Udemyの動画教材を使ったり、言語の公式チュートリアルをなぞったりして動かすためのコードを書きながら、新しい言語に挑戦しています。これは私の鉄板勉強法です。

3.〜7.は、後編に続きます

見てくださってありがとうございます。サポートは本を読むときのお供のコーヒー代にあてさせていただきます。