NAKKA-Kの技術ブログ

技術に関する知見や考え方などを投稿します。

専門学校生がプログラマーとして新卒月収42万で入社するまでにやったこと

専門学校に入学した頃はまともに就職できるのかすら不安でしたが、なんやかんやでちゃんとした会社に入れたという事実に困惑しています。 実際に業界の人たちと話してみないと案外わからないことだらけだなという印象を持ちました。 なので、プログラミングほぼ初心者で専門学校に入学し、そこから約2年半で内定に至るまでに役立った情報を書こうと思います。

あくまでも新卒目線から見た個人的意見です。

記事を書こうと思い立った理由は、ゲーム系のこの手の記事を見たからです。 ai-gaminglife.hatenablog.com

対象読者

俗に言う今を時めくWeb系企業とやらにプログラマーとして入社したい人

筆者の経歴

  • 出身高校

    地元では1、2を争う低レベル校

  • 専門学校

    関西にある某デジタル分野の専門学校

  • 専門入学当初のPC経験

    PCゲームにはどハマりして最低限扱えたが、プログラミングはほぼネットでコピーした20行程度のじゃんけんゲームが最大作品(1日勉強したら作れる)

専門入学からの経歴(半年毎)

1年目前期

この頃はプログラミングなんて全然わかってなかったので、学校で配られたC言語の課題をただひたすらに進めていました。 課題とは言っても10〜20行程度でAtCoderに出てくる一番簡単な問題くらいの難易度。 それと同時期になんか成長できそう、くらいの感覚でプログラミング系の部活に入部しました。

テストの点数は悪かった......

1年目後期

部活の活動で、文化祭に出すための作品を作ることになりました。高校時代まではグループになると端っこで一言も喋らず傍観している私でしたが、何か変わらねばと焦燥感にかられプロジェクトリーダーに立候補。(なんでそんな決断ができたのか今でも謎に包まれています) 初めてのゲーム作成に携わり、当時はC言語とDxライブラリでクイズゲームを作成。 デスマーチを重ね、見るも無残ながら完成させたゲームはなんとか展示され多くの人にプレイしていただきました。

この時期には体力の持つ限り開発をし続け、冬休みにサボりつつも大小合わせて4本のゲームを作りました。

2年目前半

学校ではJavaの授業が始まっていましたが、学校で習うレベルのことは1~2週間程度でさっさと済ませてしまいました。

java.sevendays-study.com

地域のイベントに無料WiFiを敷設するボランティアの手伝いをして、インフラの知識とネットワークの知識を学びました。

この頃は言語開発に興味が出てC言語でなんやかんやしてました。

2年目後半

この時期にリーダブルコードという綺麗にプログラミングするための要素が詰まった本を読みました。 この本のおかげで一つのブレイクスルーが起きて、ガリガリコードを書けるようになりリファクタリングが趣味になりました。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

この時期からインターンというものに興味を持ち始めて探すんですが、関西にはこの時期からインターンをやっている会社は非常に少なくて見つけるのに苦労しました。 しかし1社だけ2dayのインターンに参加してwebアプリケーションの勉強をしてきました。 勉強会にもハマって週1で大阪の勉強会に出没していました。 この頃はPythonにハマってフレームワークを作る勉強をしていました。

3年目前半

春休みの時期にサポーターズの1on1逆求人イベントに参加して、多くの企業さんとつながりを作って7,8月には学校を1ヶ月サボった上で東京にある3社のインターンに参加しました。 ここでインターンに参加した3社のうち、1社ではその後にリモートアルバイトをやらせていただき、1社には入社することになりました。 Railsをやったり、Goをやったり、Reactをやったり、Scalaやったり。

3年後半

インターンに参加した企業さんの面談やらアルバイトやらをこなしながら10,11月に内定が出ました。 その後もインターンで学んだことを怒涛のアウトプットで作品を作りまくりました。

4年目前半

// TODO: これから

就活について

この時代にプログラマーとして就活をするなら逆求人イベントが一番です。私はほぼこれでしか就活をしていません。 サポーターズさんやジースタイラスさんのイベントしか参加していませんが、自分にあったイベントに出会うとトントン拍子に話が進んでいきます。 参加条件は簡単で何か作品を作っておくことさえできれば大丈夫だと思います。

インターンについて

逆求人イベントからの流れが一番早いと思いますが、特に夏のインターンに参加することをお勧めします。 夏のインターンは多くの人が就活を始めるよりも随分と早い時期に開催されますので、その分レベルの高い人材が集まっている傾向があります。 インターンに参加すると濃縮された学習ができたり、インターンに参加するための勉強でもっと強くなれたり、他のインターン生とのつながりができたり、結構なお金がもらえたり、とメリットが多すぎるので絶対に参加した方がいいです。 Webアプリ、スマホアプリ、ゲーム、AIなどかなり幅広い分野での募集があるので、自分にあったインターンに参加するといいです。

面接について

企業さんから遠い場合、Skypeなどのツールを使って顔を写しながら遠距離面談をやることが多いです。上がりやすい人は遠距離面談だと余計緊張してしまうかもしれないので、少し慣れが必要かもしれません。思っているよりカジュアルな面談であることが多いのであまり気負いすぎないのがいいです。

SNSツールについて

企業さんと連絡先を交換するときは複数のパターンがあります。単純に電話やメール、Facebook、Lineなどが多いです。特に特定の人事さんと繋がる場合はFacebookが使われやすいのでできれば登録しておきましょう。

業界の情報収集にはTwitterが一番だと思います。 数は力、とはよく言ったもので、フォローした人たちの調べた情報が一箇所に集結して日夜有益な情報が流れ続けるわけですから、情報の宝石箱やーと叫びたくなるような素晴らしい情報ツールです。 そのほかにも、自分でインプットした内容をアウトプットしてみたり、他の人からモチベーションをもらったり、素敵な画像や動画で癒されたり、炎上ツイートを眺めて癒されてみたり、たまにはDMでスカウトが来たりとTwitterさまさまです。

Web系に就職するには何をすべきか

めっちゃアウトプットしましょう

インプットはもちろんTwitterやQiita、はてなブログなどなんでもいいですが常にする必要があります。 でもインプット3割:アウトプット7割が一番いい比率と言われますから、やっぱりアウトプットをどんどんしていかないとせっかくインプットした知識も使えないんですよね。 具体的なアウトプットの例というと、アプリを1年で5本作ってみるだとか、技術ブログを1月に1本投稿してみるだとか、目に見える作品をどんどん作っていく必要があります。

これは自らの成長のためという側面が大きいですが、就活するにあたって目に見えにくいプログラマーの能力を表すには大量のアウトプットがあった方がいいんですよね。 なので就活までに最低でも年1本はちゃんと物を作り、5本くらいは技術記事を書いていると非常にいい感じだと思います。 実際にやってみるとわかりますがこれは難しくもなんともない量です。働きながらでも余裕でこなせる量ですので、とりあえずやってみましょう。

人として最低限の文化的な会話能力をつけましょう

技術があればコミュ力はいらないなんて嘘です。 ここでいうコミュ力とはうぇーい力ではなく、人として最低限の文化的な会話ができるという能力のことです。

物作りを楽しみましょう

結局のところモチベーションの大元は物作り自体を楽しむことです。 ちなみに私は専門入学当初、プログラミング楽しいけど家でやるほどでもないかなー、なんて思ってましたができるようになってくると楽しくなるものです。1年後半や2年前半あたりからはひたすらプログラミングするようになっていました。

そして物作り自体を嫌々やっていると、作ったものにその気持ちが反映されてしまいます。 本当にいいサービスを見ると、作者がこのサービスを本当に愛しているということが伝わってきます。

自己防衛

この業界、死ぬその時まで常に学びが終わりません。 やはり学び続けるにはモチベーションが大事です。 モチベーションを上げる方法はいっぱいありますが、まずは下がりにくい環境に身を置くことが大事だと思います。 もともと学習意欲の高い人たちに囲まれていれば自然とモチベーションは上がりやすくなりますが、逆の環境に身を置けば みかん箱の中のカビのように悪い空気が伝染します。

特に学力の低い学校などにいるとこういう空気を持った人が多いです。 専門学校は悪い空気を持った人が半分、それなりにいい空気を持った人が4割、異常なくらいいい空気に包まれたガチ勢が1割という分類が多いです。 普通の大学以上にこれらのグループが独立するので、一度最高の1割に入ればあとは最高のサイクルをひたすら回すことができるのでどんどん成長できます。 最初のポジション取りは重要です。

自分が思っていた事に答えます(Q&A)

Q. 学歴は必要?

必須ではないです。(必要なところもそれなりにありますが) 日本の優良企業やメガベンチャー、世界でも有数の学歴社会であるアメリカにあるGoogleAppleIBMなどでも学歴不問であるという記事が多く見られます。 (とと言いつつ学歴は免許証くらい便利な身分証です)

※実際に日本人がGoogle等の企業で働くのに学歴がいらないとかそういうことではなく、学歴不問で募集しているところもあるよという話です。参考資料

ただ、学歴がいらない == 勉強しなくてもいい、と単純に考えると死にます。 いい学校に入っていると言うことはそれだけ勉強して脳回路が鍛えられている訳ですから、そこに差が出る可能性は高いです。 なので学歴がなかろうと、もう就活まで時間がなかろうと、少しでも自分の頭を鍛える必要はあります。

(補足) もし就労ビザを取得してアメリカ等で働きたい場合は、特殊技能職ビザ(H-1Bビザ)というものを取得する必要があります。 このビザは「4年制大卒以上の専門職、大学の専攻と関連した職種、アメリカ人の雇用を侵さないこと」という条件が必要だと思います(おそらく)。 なのでその場合、4年生大学を出ておく、またはそれ相応の経験(実務3年=大学1年とか)を積んでおく必要がありますのでお気をつけください。 もし後から4年制大卒の資格が欲しければその時に大学に入ればいいと思います。 また4年生専門学校は「高度専門士」という学士相当の資格がもらえるので、これでもいけるのかな?という感じです。

Q. Web系の給料は?

それなりに高いです。世界的にエンジニアの需要や技術力は高まっており、新卒800~1000万なんかも珍しくありません。 しかし日本企業は世界の流れから壊滅的に外れており、いまだに3~500万あたりが多いです。 ですが、ゲームやCGなどの給与水準よりは随分と改革が進んでいます。 400万超の企業はどんどん増えており、優良企業はその流れに取り残されないように徐々にですが水準が上がっています。

ですが優秀な人が低給で働いている事も多いのが現実です。そんな不条理が許されて欲しくないので一人でも多くの人が正当な報酬を貰うために情報発信したい。

Q. 働く環境はブラック?

ブラックな会社が多いのは事実ですが、今時の優良企業であれば一切ブラックとは無縁だと思います。 残業なんてありえない企業も多いですし、まともな企業なら常時月45時間を超えるということはあり得ません。

Q. プログラミングを始めるには?

Progateというプログラミング学習サイトでRails、HTML/CSSJavaScriptSQLなんかをやっていけば取っ掛かりはつかめるので、とりあえず始めてみましょう。

Q. 全てにおいてプログラミングを優先したいほど好きじゃない場合は?

ほとんどの人はそんなのです。その上、ある程度上達した上で言うならまだしも、やり始めてほんの少しではまだまだわかりません。 ゲームをプレイするときにも、上手くなってきてからが一番楽しいのと同じです。

Q. 才能がない場合は?

たいしてやってもないのに才能が〜と言われても困るので、とりあえず10000時間やってから話してくれますか? それだけやれば才能なくても余裕で稼げます。

もちろん飲み込みが遅いとかはあると思いますが、その分効率の良いやり方を模索したり、脳を鍛えるトレーニングをしたり、人より多くやってみたり、いろんな施策である程度切り抜けられます。 なんならその不向きを武器にしてブログを書いたり、マネジメントしてみたり、教えてみたりするのもアリです。 最早やりたいと言う気持ちが才能です。 私がそうでしたし、3年間でアプリ等を30本以上作ったり、50冊くらい本を読んだら、相当戦えるようになりました。

というか才能ってなんだろうって感じなので、この本にある限界的練習というものを参考にしてください。

超一流になるのは才能か努力か?

超一流になるのは才能か努力か?

Q. 専門学校と大学、どっちにいくべき?

専門学校に通うメリット・デメリット

メリット

  • 通常科目などはなく、技術的なことだけ勉強できる
  • 卒論などもなく結構な自由時間ができる
  • 周りは全員プログラマーなのでその手の話やグループ開発の機会に恵まれる
  • 授業としてプログラミングができるので、独学より最初のハードルが低い
  • 常にその話題で溢れているのでモチベーションを維持しやすい
  • 現場で働いていた先生や同級生から話を聞いたり、人脈作りなどがやりやすい
  • 学割や学校の一括購入でソフトウェアなどが安く手に入る
  • 資格を取りやすい nakka-k.hatenablog.com

デメリット

  • 大体馬鹿(微分積分?なにそれおいしいの?)
  • 授業進行が遅いので自ら動かないものは落ちていく
  • 授業のスケジュールは全て決まっている
  • 授業時間が固定で大体9時~15,6時などのスケジュール

専門学校とは

結局専門学校だろうが大学だろうが、どこにいっても自ら動かない限り上は目指せないというのは当然な話です。 専門学校は大学以上に自ら動くことが成功への鍵になっています。自ら動くだけの力がない人の落下速度は大学以上に激しいと思います。

どちらがいいのかと聞かれると大学と答えますが、実際に私が大学に行っていたら今ほどプログラミングはできていなかったと思います。 専門学校の方が最初のハードルが低く、そのハードルさえ超えてしまえば自走できるようになるタイプの人は専門学校をお勧めします。

Q. 大体何時間くらい学習時間かけた?

私はいろんな技術に興味が湧いてすぐに取り入れてしまう癖があるので、バックエンド、マネジメント、フロントエンド、アプリ、ゲーム、インフラ、デザイン、認知心理学、教育、英語などこの業界で役に立ちそうなものは片っ端から勉強してしまっています。

なので単純なプログラミングの時間という訳ではありませんが、3年間で最低でも7500時間(~9000時間)はやっていると思います。 明確に数えていた訳ではありませんが、365日×3年×8時間=8760からたまに少ない日や逆に多い日を足し引きして大体こんな感じというものです。 この3分の1も時間をかければ普通に大丈夫だと思います。

まとめ

ここまで頑張る必要があったのは、私がこれまで勉強を随分とサボっていたせいです。 ピカソが30秒で書いた絵について「30年と30秒かかっている」と言っていた理論と同じく、今までの勉強分をここで取り戻すため人より頑張っただけなのです。 今まで頑張っていた人はもっと楽に達成できることだと思います。

  • 専門学校からでも余裕です
  • 逆求人イベント参加しましょう
  • 環境を武器にしましょう
  • アウトプットが命です
  • Twitterは良いぞ