kansiho's memo

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

文系大学生がどうゼロから実務レベルまでプログラミングを勉強したか

https://www.pakutaso.com/shared/img/thumb/Photoelly037_TP_V.jpg

自分がどうやって勉強したかについて詳しく振り返ろうと思います。なかなかに恐縮ですが誰かの参考になれば……。

私は大学1年次にプログラミングを学びたくなって、まずprogateというゲーム感覚で学べるサイトで

  • html (webの設計図のようなもの)
  • CSS (デザインなどを決めるもの)
  • PHP (条件に合わせてhtmlを変えたり、データベースを動かしたりできるもの)

をやりました。その後、モチベーションを維持するためにも、もっと実践で学びたいなと思い、とあるweb制作会社のエンジニアインターンの面接に行きました。

しかしながら初心者はあまり役立てない(当然ですがこういう会社が殆どですね)ということだったので、別の部署のインターンをしつつ、エンジニアの人に宿題をもらってそれを解いてくる、という日々でした (この時非常に良い方に教わることがでましたが、別の部署の諸々の条件が合わず、ほどなく辞めてしまいました…)。

その後、友人に「お前ヒマそうだからなんかした方がいいぞ」と誘われヘルスケア系の事業をやっているベンチャーのイベントに行き、なんだか同世代のアルバイトが多くて楽しそうだったし、初心者からのエンジニアインターン歓迎ということだったので働いてみることにしました。1ヶ月半の研修期間のあと、大学2年の終わりから大学3年の半ばまで週3,4日程度1日5~12時間ほど勤務しました。

そこからはゆるゆると自分でサイトを作ったり受注したりしつつ…で、大学4年生になってからは工学部の情報系の授業を多めに取ったので日夜どこかしらで触れている日々です。内定先の会社のプログラミング研修でTECH::CAMPさんにも通いました。

▼ざっとまとめてこれから学ぶなら

エンジニアインターンにいく

週20時間以上の時間を空けられる人向けのパターンです。

キャリアバイトやwantedlyで探すと見つかると思います。私のインターン先では、

に至るまで、1ヶ月半程度で学ぶことができました。終了時点で、twitterのようなマイクロブログサービスが自分のPCで動かせるくらい(その気になれば公開もできる)の段階になります。

学び方のスタイルは、基本的にはオフィス内で自習して、区切りごとにメンターに発表して、詰まったときの質問はメンターや社員さんにできるといった感じで、方針だけ教えてもらって基本的に自学自習したいトロい自分にはとても合っていました。 研修後に業務に参加したときも、手を上げれば要件定義やヒアリングも任せていただいたり、営業に同行させてくださったり、セキュリティ系の勉強もさせてくださったりと、すごく学生を育てる会社でした。

エンジニアインターンを選ぶ時のポイントは

  1. 同世代が多い(やっぱり同世代が多い方が楽しいです! 学生エンジニア向けのイベントの情報なども入りますし、ハッカソンに一緒に出たりもできます。FiNCのインターン辞めた今もその時のメンターさんは同じ大学の先輩ということもあり、お世話になってます)

  2. 社員さんとの距離が近い

  3. オフィスに借りれる本が多かったり、会社内のエンジニアで定期的に勉強会が開催されている

  4. きちんと労働契約を書面で結んでくれる、時給制。(ブラックインターンが問題になっていますが、業務委託でインターンすることになって、あとから時給換算したらまさかの500円程度だった…ということはよく聞く話です。私も1回経験あります笑。そういう面も明快に説明してくれる会社にしましょう)

ですね。

webで学ぶ

根気がある人・とにかくまずは触れて判断したい人・インターンに行く前に基礎だけやっておきたい人向けのパターンです。

  • Progate https://prog-8.com/ 本当に分かりやすいです。セットアップ不要で、ウェブブラウザ上でサクサク進められます。全体像がつかみやすいカリキュラムで、いっちばん最初の入り口として取り組ませていただきましたが、全然ストレスなかったです。 代表の加藤さんを取材した記事がUmeeTにありますので良かったら。(http://todai-umeet.com/article/4936/)

  • ドットインストール 3分動画で細かい点も含め解説してくれる教材が沢山あります。課金すると高速再生できるようになるので、高速再生で2回見て、rubyを学ぶときとtwitter的なミニブログを作るときに参考にしました。 http://dotinstall.com/

  • Code academy (https://www.codecademy.com/) 私は英語という障壁により選びませんでしたが英語もプログラミングも両方触れられてええやん!って気持ちになるハイスペックな方は良いと思います!

ほかにもたくさんあります。問題に正解すると美女が服脱いでくれるサイトまであって笑いました。https://codebabes.com/

スクールで学ぶ

時間がなくて集中的に身に着けたい人・プログラミングを使って明確にやりたいことがある・エンジニアとのコミュニケーションのため身につけたい人におすすめです。元はすぐに取れると思います。

  • TECH::CAMP(https://tech-camp.in/) 内定先の研修で通わせていただきましたが渋谷からのアクセスもよく、いつでもオフィスを使えてメンターさんに質問ができるのは最高です。オフィスに行かなくてもslackで質問ができます。この気軽さはインターンにはないです。紹介で最高1万円くらい安くなるみたいなので興味ある人は言って下さい。

他にも、ハッカソンに無料での講習会がセットになっているイベントや、プログラミング学習後のエンジニアとしての斡旋モデルを取っているため授業料自体が0円のところなど色々あると思うので是非探してみて下さい。

サークルやゼミなど学生同士で学ぶ

各大学にプログラミングサークルは2つ以上ある印象です。やはり同世代で学ぶのは面白いですし、progateの加藤さんも最初はそこから始まったとか。

まとめ

理系の学生も、情報系でないかぎりバリバリ授業でプログラムを書くことはないので、高度な数学的知識が必要とされる機械学習やデータ解析以外のジャンルでは、あまり有利だという印象は受けません。むしろ、授業外の時間が沢山ある文系の方が、webエンジニアとして実務を行うために必要な知識を身につける余裕があるのではないでしょうか。じっさい、文系のヒマな学生をエンジニアインターンのメインターゲットとして設定している会社もあるくらいです。

エンジニアインターンしていたころ、社員さんにエンジニアはググり力、と言われたものですが、じっさい、問題にぶちあたったとき、その言語を使っている人が世界に何万人もいる以上、同じような問題に遭遇して解決した人というのは沢山いるはずですし、オンライン上にその記録も残っていることがほとんどです。あとは、それを探し当てる力、すなわち、問題を分解し、他のユーザーがどういう検索ワードで質問する/回答する か予測し、段階的に探す、という「ググり力」があればなんとかなることが99%です。つまり、やる気があれば、インターンに行かなくても、スクールに通わなくても、基礎力は身につけられるものであると思います。

頑張ってください!