プログラミングスクールで挫折した後に気づいた、初級者がプログラミングを上達させるうえで必要な3つのこと

プログラミングスクールで挫折した後に気づいた、初級者がプログラミングを上達させるうえで必要な3つのこと

はじめまして、フリーランスエンジニアのかけはしです。

大学を卒業してプログラミングスクールに通うまで

僕は大学を卒業して、何を仕事としてやっていこうか相当悩みました。今から3, 4年前くらいのことです。

当時の僕は、自分には何ができるんだろうと思って「HP制作くらいならできるかも!」と思いました。
思い返せば、小学生の頃はパソコン部、中学生の頃はパソコン検定部、高校生の頃はパソコン愛好会に所属するような人間でした。
また、当時のYahoo!ジオシティーズで簡単な HP を作っていたのを思い出しました。

その技術を武器に面接を受けましたが、残念ながら最終選考までいくこともありませんでした。
そこで、やっぱり自分でサービスが作れるくらいの技術力を身に着ければ、雇われることもなく生きていけるのではないかという風に当時の僕はひらめき、プログラマになろうと決意します。
そのときはリバ邸六本木というところに住んでいたのですが、そこの住人の口コミで「TECH::CAMP」に参加することにしました。

プログラミングスクールに参加した結果

10万円以上の大きな投資でしたが、結論を書くと、ほとんど身になりませんでした。
本気でプログラマになるという覚悟は当時はなかったのでしょうか、渋谷のレンタルスペースに作業しにいくことや、わからないことを遠慮なく聞くことなどができませんでした。
そうして、あっという間に1ヶ月は過ぎていきました。とにかく最悪でした。
しかも、当時は卒業と同時に学習コンテンツが見られなくなる仕様だったので、なんともどうしようもない状況になってしまったのです。

上京したときの資金も底をついていましたし、これ以上親に迷惑もかけられないので、働きながらプログラミングの学習をしていこうと思いました。

アルバイトでもなんでもいいから、Webサービスを開発している会社に忍び込もうと思いました。

プログラマになるための第一歩

ある日、目黒駅近くのベンチャー企業の面接に行きました。
そこで、スキルとして具体的にどのようなことができるかという話になりました。

僕は「HTMLとCSS、あとjQueryなら少し書けます」といったようなことを答えました。
スクールの学習のカリキュラムとして、プログラミング言語 Ruby をやる前に HTML/CSS の勉強をしていたのです。

その御蔭で、面接者に実際に自分が書いたHPを見せることができました。
しかしよくよく考えると、そのHPはほとんど学習教材をコピーして作成したようなものでした。
「jQueryできます」と言ったものの、当時は JavaScript と jQuery の違いもろくにわかってなかったと思います。

「実力以上にアピールしてしまったし、落ちてしまったらいいのに」と当時の僕は思いました。
しかし。幸か不幸かすぐに合格の電話を頂いたのです。

そこからは、フロントエンドエンジニアとしてHTML/CSSをメーンに扱いLPを作ったり、ECサイトのフレームワークの変更を手伝ったり、頑張って働きました。

そして、Ruby on Rails という Web アプリケーションを作るためのフレームワークを徐々に触るにつれてプログラミングの面白さに気づいていきました。

プログラミングを仕事に

1年ほど経って、プログラマとして成長するための環境を探しGMOペパボという会社に入社しました。
ただし、ディレクター職としてでした。まだまだ実力が見合っていませんでした。

しかし、周りの人たちのサポートもあって、Webプログラマとしてのキャリアを歩むことができるようになりました。
周囲には優秀なプログラマがたくさんいて、そのおかげもあり実務の中でどんどんWebアプリケーションをつくる技術が身についていきました。

そして、2年ほど経った後、2018年からは新しい試みとしてフリーランスになりました。
今は受託開発をしたり、プログラミング言語を教えたりして生計を立てています。

プログラミングを学んできて気づいたこと

振り返ると、プログラマになりたいという気持ちで約3年間仕事をやってきました。

そこで、少なくとも Ruby や Ruby on Rails といったプログラミング言語・フレームワークを学ぶうえで大切なのは、以下の3つだと思ったのです。

1. 実際に自分で手を動かしてWebアプリをつくってみること
2. ググってもわからなかったらすぐにメンターに質問できること
3. メンターも自身で手を動かしてアプリを作っていること

1. とにかく実際に自分で手を動かしてWebアプリをつくってみること

実際にWebアプリを作るとなるとプログラミング言語Rubyだけでなく、DBを操作するための言語知識や、HTTP、REST、公開鍵暗号、権限周り、Gitなど最低限知っておくべきことがたくさんあります。

これらの知識を得るためには、プログラミング言語の教科書やフレームワークのドキュメントを読むだけではなく実際に作っていくことが最も効率的であると思います。
初めに基礎的な知識を身に着けた後は、実務がそうであるように、実際に何をつくるかを決めて、それに必要な知識を身につけていくといった順番がよいと思います。

2. ググってもわからなかったらすぐにメンターに質問できること

最初のうちは、自分が何をわかってないかもわかってない状態だと思います。
もしかしたら、何をググったらいいかもわかってないかもしれません。

そういうときには誰かに聞いてしまったほうが圧倒的に早いです。

何もかも質問して回答を引き出すだけでは、ソースコードをコピペしてなんとなく動いたと言っていることと同じなので好ましくないですが、行き詰まったときに気軽に質問できる存在はあなたに大きく役立つと思います。

3. メンターも自身で手を動かしてアプリを作っていること

質問する相手も誰でもいいわけではないと思います。希望を言えば、メンター自身も業務あるいは趣味でなにかしら作っていることが望ましいと思います。

もしかしたら、プログラミングスクールで先生をやっている人たちの中には、自分の力で何かアプリケーションをつくったといった経験がない人もいるかもしれません。
そういう人たちと実際にサービスをつくっている人たちとでは、1. に書いたような点で知識の量も異なってくるので、アドバイスの内容も変わってくることでしょう。


そこで、僕は、自分がプログラミングを学んで来た経験を踏まえて、もっとも効率的に学習できる環境をつくろうと思いました。
そして今回 KAKEHASHI CAMP というサロンをつくりました。

このサロンを簡単に説明すると、Slack というチャットツールですぐにメンターやメンバーに質問ができるコミュニティです。

教材は今の所用意していません。正直、Progate や Rails チュートリアル、書籍など優れた教材はすでにあるのでそちらを活用してもらうのがよいと思っています。
メンターとしてはいまのところ僕だけですが、規模が大きくなり、協力してくれる仲間がいれば、そのときに考えようと思っています。

とはいえ僕自身、まだまだ学ぶことが本当にたくさんあります。

特に最近思うのは、データとアルゴリズムやデザインパターンについては学習が足りてないなあということであり、これからもプログラムを書く人間を辞めない限りは学習を続けていくつもりです。

しかし、実際に Ruby on Rails を用いて作ってきたサービスは5つ以上ありますし、またそれだけでなく直近では PHP を使って WordPress で決済機能を導入するなど様々なことにチャレンジしています。

そういった実際にサービスとして動かすまでの知見も含めて、これからプログラミングを学びたいという方に共有していけたらよいなと考えています。

ここまで読んでくださったあなたが、もし少しでも興味・質問がある場合は Twitter でも お問い合わせフォーム でも、気軽にメッセージいただけると嬉しいです。