はじめに
この記事をご覧にいただき、ありがとうございます。
Instagramでプログラミングに関する情報発信をしている、ぶべと申します。
2023年から、発信活動を始め、
大変ありがたいことに、想像よりも多くの方にフォロー頂け、
DMを通して、フォロワーさんとお話しさせていただく機会も増えました。
簡単に、僕のエンジニアとしての経歴を紹介すると
2020年に30歳で未経験からプログラミング学習開始
2021年に自社開発企業の正社員に
2022年にフリーランス独立
2023年、売上げ向上により法人成り
と、エンジニアとして、色んな働き方を経験してきている方だと思います。
現在は株式会社として活動し、直近では6つの開発案件を並行して進めています。
自分が開発に入ってコードを書いたり、PMとしてチームマネジメントしたりなど、
色々な形で仕事をさせていただいています。
また、Instagram上では、これからエンジニアを目指す方などから、
勉強やキャリアについての相談を受けることが多くなりました。
具体的には、以下のような相談です。
未経験から、どういう手順で学習したらよいか
どのレベルになるまで勉強したらよいか(転職できるレベルと判断するか)
フリーランスになりたいが、初めはどうやって仕事を獲得するのか
質問はできるだけ返すようにしているのですが、
なかなか、その場のチャットコミュニケーションではニュアンスが伝わっていないのでは、
と心配になることが多いです。
もう少し僕の過去の経験だったり、取り組んだことを細かくお伝えした方が
その方の、次のTODOのイメージが湧きやすいのかなと思うのです。
なので、この記事では、
僕のこれまでの、学習や案件の取り組みを振り返った上で、
頂くお悩みについて僕なりの考えを述べたいと思います。
読んで頂いた方に
「なんか自分にもできそう」と思っていただければ嬉しいです。
この記事は、以下の構成で作成しました。
第1部:僕自信の、プログラミング学習開始〜現在 の全取り組み
第2部:今、自分が未経験者だった場合のロードマップ
読んでいただき、感想などあれば、InstagramのDMで送っていただければとても嬉しいです。 「この情報も欲しい」なども、ご連絡いただければ随時追記していければと思っています。
それでは、本編に入ります。
目次
【第1部】プログラミング学習開始〜現在 の全取り組み
元はメーカーの会社員
元々僕は、化学系のメーカーの会社員でした。
大学院まで化学系を専攻、そのまま化学系のメーカーに就職し、研究の部門で働いていました。
当時の仕事は、プログラミングとは全く無縁の仕事でした。
独立志向もなく、
このまま、この会社で一生働くのだろうなと思っていました。
そんな中、
6年目の頃、海外(トルコ)に赴任することになりました。
海外で働くことには憧れていて、いつか赴任したいと思っていたので
夢が叶った気持ちになったのを覚えています。
しかし、
実際に赴任してみると、スーパー激務。
朝から深夜まで仕事をした後、時差の関係で、深夜から早朝まで日本からのメール対応や資料作りをこなして
2,3時間寝て、そのまま出社
みたいな生活を週5日繰り返していて、相当疲弊したのを覚えています。
給料は上がるものの、
「積み上がらない労働を毎日繰り返し」
「会社に人生を握られている」
「会社の中でないと価値提供ができない」
こういったところに、不安というか、コンプレックスを感じるようになりました。
そんな過労+やりがいに疑問がある中で、
運良くというと不謹慎ですが、
当時2020年、トルコでも新型コロナが感染爆発し、
日本人駐在員は全員、強制的に帰国することになりました。
突然の帰国、日本側の受け入れ体制も整っていなく、
しばらくの間、特に仕事もなく、家でひたすら待機するような日が続きました。
そこで、特にやることもないので、
自分のキャリアについてじっくり考える時間ができました。
そこで、駐在中に感じていたコンプレックスだったり将来の不安が大きくなり、、
何週間も考えた結果、
一度会社を辞めて、自分個人のスキルで収入を得ていく人生に切り替えようと、決意をしました。
30歳でいきなり会社を辞め、プログラミング学習を開始
普通は転職先を決めてから会社を辞めるものですが、僕の場合は転職先どころか、
何系の仕事をするかも決めないまま会社を辞めました。
会社を辞めて2週間くらい、特に目標もなく、
「なにしようかな?」なんて考えながら、仕事を辞めた解放感で毎日飲み歩いてました。笑
その中で、Web開発の会社を経営している幼馴染の友人に会い、話を聞く機会がありました。
その友人は1人社長で従業員はいないですが、
1人で案件を獲得・開発をしていて、同年代の会社員より遥かに稼いでいて、時間に縛られない自由な生活。
当時の自分が1番憧れる姿でした。
非常に安直ですが、そこで自分も
「プログラミング極めるしかない」
と、プログラミグ学習を初め、仕事にしていく決意をしました。笑
その翌日から、ニート状態からのガリ勉生活が始まります。
初期の学習内容
その友人から
「Web制作なら数ヶ月の勉強で仕事を獲得することも可能」
と助言をもらい
Web制作の勉強から始めることにしました。
とはいえ、具体的に何から始めて良いものか。
SNS上はスクールや情報商材屋の発信で溢れかえっていて、気づいたら課金しそうになっている。
とりあえず僕は、友人の助言や、色んな人がオススメしているProgateから始めました。
そこからの、僕の学習履歴は以下のような流れでした。
ProgateのHTML/CSSコース
ProgateのjQueryコース
ProgateのJavaScriptコース
ProgateのPHPやRubyコース(謎)
Webサイトの模写コーディング2つくらいやってみる
ワードプレスの本を買って読みながら書いてみる
ワードプレスのテーマを自作して、コーダーとしてのポートフォリオを作ってみる
Webサイトが動く仕組みを知ったいく過程が、とても楽しかったのを覚えています。
ただ、Progateって他にも色んなコースがあって
PHPやRubyコースにも手を出してしまい、数週間無駄にしてしまったこともありました。
手を広げてしまうと、
前に勉強したことを忘れてしまうんですよね。
この辺りは反省点です。
クラウドワークスで仕事を取ろうとするも挫折
ここまで2ヶ月くらい
「ホームページを、調べながらならなんとか作れる」状態になって
もうフリーランスとして仕事できるやん(安直)
と思い、仕事を探すことにしました。
とはいえ、
実務経験なし
実績なし
コネなし
の状態でクラウドワークスなどで応募しても、
提案文には「作れます」くらいのことしか書けません。
今思うと当然なのですが、
もちろん採用されるはずもなく、絶望したのを覚えています。
一度、転職して会社員で実務経験積むのが良いかな〜と思い始める頃でした。
初めてのWeb制作案件
そんな中、たまたま高校時代の友人と久しぶりに会った際に、
その友人は歌手活動をしていて、ホームページを作ることを検討していると聞きました。
その場で、
「全然作れるよ?3万円でやろうか?」
と、半分ハッタリでしたが提案し、発注してもらうことができました。
主な機能は、
ブログ機能
イベント告知ページ
Youtube動画埋め込みページ
プロフィールページ
こんな感じでした。
経験のない機能も多く、ひたすら調べながら、
デザイン〜コーディング〜ワードプレス化までして、納品しました。
2ヶ月くらいかかったと思います。
終わってみると時給数百円レベルの仕事でしたが、
とてもスキルアップできましたし、友人にも満足してもらえて、
一生記憶に残るような経験になりました。
Vue.jsの勉強を始める
この案件を終えた頃、
めちゃくちゃ早いのですが、やや、Web制作に飽きている自分がいました。
その頃、しまぶーさんか誰かの動画で「SPA」なる言葉を知りました。
SPAはSingle Page Applicationの略で、
昨今のWebアプリでは一般的な、
サイトの全ページをHTML1枚で表現して、
ページ移動はJavaScriptで行う技術です。
最新の技術を知ってワクワクした気持ちになって、
Vue.jsの本を1冊書い、勉強を始めました。
仕事よりも勉強に走ってしまうのはあまり良くないのですが、
始めてモダンフロントエンドの知識に触れ、とても楽しかった覚えがあります。
なかなかJSが書けるようにならない
楽しいものの、これまでよりも難易度はあがりました。
生のJavaScriptを扱うことが多くなりますが、なかなか自分で書けるようになりません。
頑張って実装して動作はするものの、
模範解答を見た後は、自分の書いたコードは汚く見える。。
スラスラ書けるようになるイメージが湧かず、心が折れそうになることもあったのですが、
友人に教えてもらった、競技プログラミングの問題集を毎晩解くようにして、
少しずつ自分の頭で組み立て書けるようになっていきました。
後述しますが、
競技プログラミングでJSの独走力を鍛えるの、おすすめです。
ベンチャー企業でフロントエンド開発のバイトを始める
この頃になると、フロントエンド開発を仕事にしたいと思うようになっていました。
ただ、この分野で未経験でフリーランスとして案件獲得は難しそうだし、
でも転職も面倒だなあと感じていた時、
バイトなら、合わなければ辞めやすいし、良いかもとひらめき、
「Vue.js バイト 東京」で検索して、最初に出てきた会社に応募しました。笑
社員が20名以下くらいのベンチャーで、開発は5人程度、
フロントエンドの改修が追いつかなく、Vueを扱える作業者が欲しかったようです。
僕の学習用のGithubリポジトリを見ていただき、
「まあ、大丈夫そうだね」
といった感じで採用していただけました。
バイトということもあってか、面談もかなり緩い感じだったのを覚えています。
時給は1,500円、今思うと高くはないですが、
勉強しながら給料をいただけ、最高の環境でした。
ここで半年ほど、がっつりVueの開発に携わり、
後半ではバックエンドの開発(AWSのサーバーレスフレームワークメイン)も担当させていただきました。
個人開発をしてみる
バイトを始めて数ヶ月した頃、VueでWebのフロントエンドも作れるし、
バックエンドも、サーバーレスのサービスを用いれば結構簡単に作れちゃうんだなということを学び、
1人でWebアプリ開発をしてみることにしました。
これがとても楽しく、
決まった仕様を開発するだけでなく、マーケティング施策やマネタイズの方法まで
全体を見ながら作っていく過程がとても楽しく、3, 4ヶ月ほど没入しました。
そこで作ったのが「PiTARI」というサービス。
飲食店を探すためのサービスなのですが、
僕自身、会社員時代にグルメが好きで、Instagramでグルメ系の発信をしていて、フォロワーが1万人近くまで伸びたこともあり、
知人のインフルエンサーの方に拡散をお願いしたりして、結構多くの方に使っていただくことができました。
一時はInstagramのグルメ界隈では少し話題になり、
テレビ番組(深夜枠ですが)でも紹介してもらうことができました。
ちなみに現在はサービス売却の話も進んでいます。
自分の商品を広める事を日々考えていると、マーケティング知識も自然と身に着きますし、
技術的にも
Nuxt.jsでのサーバーサイドレンダリング
認証機能
ストレージ機能(画像を保管)
DB
決済機能(Stripe)
その他さまざまな外部サービスのAPI
についての知識が一気に身につき、
自分のエンジニアキャリアの中で最もインパクトのある経験になりました。
自社開発企業に転職
個人開発がひと段落した頃、
バイトの方はというと、結構慣れてきてしまっていて、新たな学びというのがなかなかない状態になっていました。
この頃の僕は「稼ぎたい」よりも「技術力をあげたい」志向に変わってきており、
もっとエンジニアが沢山いる環境で働きたいと感じるようになっていました。
バイト先から正社員昇格のオファーはいただいたのですが、
経験を増やす意味でお断りし、他の会社で正社員になるために転職活動を始めることにしました。
まずは履歴書か?なんて考えていた矢先、
個人開発サービスの問い合わせフォームから、1通のお知らせが。
それが、企業からの転職オファーでした。
しかも、上場間近のかなり大きめの自社開発企業。
個人開発のメリットはこういうところにもあるのかと感動しました。
その企業と面談し、無事、正社員エンジニアになります。
React, TypeScriptの開発に1年半没入
転職した企業で扱っていた技術は
フロントエンドはReact+TypeScript
バックエンドはRuby on Rails
というものでした。
プロダクトの規模は、前にバイトしていた企業のものよりも数倍大きく、
コードの記述ルールやレビューも厳格に行われていて、全く違う世界を見たようでした。
強強エンジニアに囲まれ、技術に向き合う日々が続き、
自分の中でも、堅牢なシステムを作るための技術力が養われた期間でした。
またその企業は、フロントエンドとバックエンドの開発担当を分けることはしていなく、
全員がフルスタックみたいな環境だったので、自分もRailsをキャッチアップできました。
副業を始める
正社員になり半年ぐらいたった頃、
個人開発アプリの問い合わせフォームに、また、1つの連絡が。
飲食関係の経営者の方からの、サービス開発のお誘いでした。
個人開発のサービスが飲食関係のアプリだったため、
その点に興味を持って連絡していただいたようで、話を聞いてみることに。
その方はシステム開発の経験はこれまで無いようでしたが、
飲食事業を大きく成長させており、次のステージとして、飲食業界を変えるためのオンラインプラットフォームを作りたいとのことでした。
「開発チームに入ってほしい」というよりは「こういうシステムを作ってほしい」という相談でした。
自分にできるかという不安もありましたが、
「自分個人の力で稼げるようになりたい」というメーカーにいた頃に持っていた感情を思い出し
実現させるチャンスだと、思い切って引き受けることにしました。
そこから、
本業に加えて、毎月副業に100時間投下する日々が始まります。
休日もひたすら開発で大変でしたが、
技術スタックを全て自分で決めれたりなど、本業よりも舵取りのしやすさがあり楽しかったです。
1年半でフリーランス独立
その後、副業の飲食アプリ開発はメンバーも増えていき、
自分が開発のリーダーとして、プロダクトマネージャーポジションで動くようになりました。
この辺りは、前職での経験があって、マネージは得意でした。
この頃から、副業の収入が本業を大きく超え始めました。
元々の大きな目的である
「個人の力で稼いでいく」を叶えた生活がもう手にはいるなと確信し、
会社を辞めることにしました。
1年半という短い期間で辞めるのは多少罪悪感はありましたが、
メーカー時代の経験からも、そういった場面で遠慮してはいけないと分かっていたので、
躊躇なく辞めることに踏み切れました。
メーカーを辞めて2年半、フリーランスエンジニアデビューです。
月の売り上げが100万を超え始める
辞めたと言え、会社からは引き続き業務委託で仕事をいただくことができました。
なので、仕事としては2つある状態で、会社員+副業時代の収入をキープすることができました。
またその後、半年間バイトしていた企業からも仕事を頂くことができ、案件を3つ抱える状態に。
自分はフリーランスエージェントは使ったことがないですが、
エージェントは、中抜きも大きいし、パワーバランス的にも弱くなりがちなイメージなので、
個人的には、良い形で仕事をキープできたと思っています。
そして、3つ並行していると、月収も100万を超え始めました。
いつか超えてみたいと思っていたラインだったので、とても自信になりました。
はじめは、会社員時代の雇われ感覚がなかなか抜けず、価格を設定したりなどがとても苦手(遠慮してしまう)でしたが、
だんだん、もの応じせずに主張できるようになっていきました。
良い意味で、自分の中での基準値が大きく壊れた時期だったと思います。
法人化
呑気に「よっしゃ100万超えた〜」なんて喜んでいたのですが、
翌年の確定申告、税金がスーパー高くて腰が抜けました。笑
会社員マインドが抜けずに税金のことを全然考えていなく、
個人で稼いでいくゆえ、税金のことはシビアに対策していかないと大損することを学びました。
周りのフリーランスや経営者の方にも「法人にしたら?」と言われることが増えました。
初めはビビっていたのですが、
本やYoutubeで調べると、エンジニアの一人社長というのはよくあることで、
試しに税理士さんに相談もしたところ「ああ、では会社にしたら良さそうですね」というノリだったので
じゃあ、と、株式会社を設立しました。
とはいえ今って、会計Freeeに会社設立なる機能があり
流れに沿って入力していくだけで、作れてしまいました。
法人にしても、業態は変わらないですし、税的なところ以外は変わらないのではと思っていましたが、意外と責任感が強く生まれました。
自分個人とは別に法人格が存在することになるので、設立した会社を絶対に潰しちゃいけないという使命感が生まれるようになりました。
これが、結構日々の活力にもなっている気がして、設立当初よりも売上も伸びましたし、
法人化してよかったなと思っています。
ここまでのまとめ
メーカーを辞め、ここまでちょうど3年。
会社を辞めた当時に、話を聞いた1人社長の友人と、同じ姿になれたと思います。
今は働く時間も場所も自由ですし、法人1期目の売上は3,000万に到達しそうな見込みです。
(エンジニアは在庫を抱えたりしないので、ほぼ利益です。)
自分は物欲は少ない無い方ですが、
コンビニやスーパーなどでは値段を見ることがなくなった
都心に引っ越し、ほぼ電車に乗らずタクシー移動
数十万級のコンサルなどの自己投資が躊躇なくできる
ができる程度には、生活に余裕も生まれました。笑
ただ、今になって過去の自分の学習内容を振り返ると、
無駄な努力も結構あったなと、反省点もあります。
半年ほどのバイト期間も、結果的にはショートカットすべきだったかもしれません。
なので、続く第2部では
今、自分が完全未経験でエンジニアを目指すとなった場合
「この手順で勉強し、この戦略でキャリアを積んでいく」
という話を、具体的にstep by stepで書いていこうと思います。
【第2部】今、自分が未経験者だった場合のロードマップ
第2部では、
今僕が未経験だった場合、どういうジャンルでどういう勉強をしていくか、
また、どんなキャリアを狙っていくか
について書いていきます。
ここはあくまで、
僕の価値観での話なので、参考程度にしていただければと思います。
(独立志向のある方向けです。)
目指すキャリア
まず、
エンジニアとしてのキャリアは、大きく2つに分かれると思います。
会社員として勤め切る
独立を目指す
この2つは、どういう人生を目指すかによって変わりますが
僕の場合は、確実に「独立を目指す」キャリアを目指します。
理由は2つです。
自分が集中できる時間や場所で働けた方がストレスがない
頑張っただけ稼げる
そもそも、Webエンジニアという職業は、非常にポータビリティの高いスキルです。
(スキルを身につければ、どこの会社でも使える。)
なので、逆に独立思考がない場合は、Webエンジニアという職業を選ぶメリットはほぼ無いくらいに思っています。
その前提で、
目指すロードマップは以下になると思います。
フロントエンド基礎学習(HTML/CSS, JS, TS, React)
↓
ポートフォリオ作成
↓
正社員転職
↓
個人開発
↓
個人開発をフックに副業案件獲得
↓
独立
どの領域で攻めるか
僕は、初めはWebフロントエンドに全振りして勉強すると思います。
Webエンジニアを目指す上で、一般的にはサーバーサイドのから入るのが硬いルートかと思います。
ですが僕の価値観のように、
会社員として働く時間は最小にして、自分の事業としてサービスを立ち上げ、
初期の開発は自分でしつつも、最終的には開発は外注化を目指し、自分は意思決定だけをしていきたいという場合、
技術力を追っていくキャリアは非効率なように思います。
最近はWebサービスに溢れ、
どんなサービスを使っていても、コアの機能は大体どれも同じ、リプレイス先はいくらでもあります。
こう言った中で、
サービスの差別化要素は機能面よりも、UI/UXであることがほとんどだと思います。
特に、大企業の中で大きなサービスを作っていくよりも、
個人レベルでサービスを立ち上げ、そこそこまで育てて売却を狙っていくみたいな場合は、
機能の新規性よりも、
特定のユーザーに特化したコンセプト設計や、そのコンセプトに沿ったUIUXの設計と実装を
高速で回していくことが、サービスを伸ばす上で最優先事項だと思います。
自分自身、この考えに沿って個人開発を行い、
現在はバイアウトの話を頂くまで来れているので、
間違いなかったなと思っています。
また、現在はサーバーレスの技術が素晴らしく、
インフラ構築や、バックエンドのコアの機能(認証など)を0から作ることはほぼありません。
アプリケーションを作るエンジニアがAWSを直接触ることも、今後はなくなっていくと思っています。
サーバーレスのサービスはこう言った部分を数行のコードで完結できたりします。
また後述しますが、サーバーレスや最新のフレームワークは、大体JavaScriptでの記述が可能です。
フロントエンドを集中学習した後、
個人開発のためにサーバーレスを学ぶ際、言語的なハードルはほぼない状態で始められるという点も大きいです。
自分の個人開発も、完全サーバーレスでした。
ということで、初期の学習は 「Webフロントエンドに特化」です。
学習の手順
大きな流れとしては
HTML/CSS
JavaScript
React, TypeScript
の手順で進めます。
Web制作分野を目指すわけではないので、
jQueryやWordpressはノータッチで進めます。
初め自分は、Web制作とWeb開発の違いをよく分かっていなく、
Wordpressの勉強にかなり時間を割きましたが、
WordpressではモダンなWebアプリは作れません。(作れなくはないですが、相当難しい)
もちろん、Web制作分野で進んでいくのも全然ありだと思います。
ただWeb制作の分野で登っていくためには、営業力や、顧客のニーズを汲み取るコミュニケーション力など、ソフトスキルの方が重要なように思います。
自分は対人的なところがあまり得意でないので、「そこそこ技術力も売りにしつつ」という塩梅で攻めていくかなと思います。
ということで、モダンフロントエンドに必要な部分だけを学んでいきます。
HTML/CSS
まずは、Progateのコースを受けます。
いろんな教材がありますが、自分はProgateが1番、インプットと、アウトプットのバランスが良いと思います。
道場コースというアウトプットメインの箇所があって、
最初は本当に難しく挫折しそうになりますが、
すごく初期の実力形成に有効だと思います。
道場コースを2周はしてみてください。正直1番きついフェーズかもしれませんが、
ここを乗り越えれば、後の学習は取っ掛かりやすいと思います。
模写コーディング
ここからはひたすら、アウトプットの練習です。
「模写コーディング 題材」などと調べると、
簡単なレイアウトのWebサイトを紹介していたりします。
なんでも良いので、1つ選んで、
それと全く同じサイトを自分で書きます。(公開するのはダメですよ)
1px単位で、元のサイトと合わせることが重要です。
HTMLタグやCSSプロパティの種類は大量にあります。
Progateだけでは到達カバーされていないので、
このフェーズでは、
アウトプット⇨わからない箇所はググる(この辺りはググればなんでも出てきます)
の繰り返しで、自分の中のコーディングの引き出しを増やして定着させていきましょう。
模写コーディングは、レイアウトの異なる2サイトほどやってみると良いでしょう。
(PC, スマホ両方対応させてください。)
ちょっとしたコツですが、
日本語テキストなど、コーディングスキルに関係ない部分は積極的にコピペしましょう。
重要なのはレイアウトの組み方なので、テキストを打つ労力は無くしましょう。
デザインカンプのコーディング
アウトプットの練習は変わりませんが、
デザインファイルからコーディングするという練習もしてみましょう。
実務でコーディングを行う際は、必ず発生する工程です。
デザインファイルはなんでも構いません。
ただ最近のWebアプリ開発の現場では、Figmaの採用率がかなり高いように思います。
カンプは数千円とかで購入できたりもするので、ここは課金して良いところかと思います。
Instagramではコーデイングやデザインの発信をされている方で、無料でカンプをプレゼントしている方もいるので、そういうのも良いと思います。
カンプコーディングの練習でも、1px単位でデザインを再現することを徹底しましょう。
カンプからのコーディングは1サイトやればOKです。
実務でよく、px単位でズレているものを納品する人をみますが、
これは良くないです。デザイナーさんの設計を崩してしまうことになるので。
実務ではデザイナーさんとの調整で、この限りでもないですが、
練習なので、pxコーディングを当たり前に行うようにしましょう。
ここまでくると、jQueryでサイトに動きをつけたくなったり、ハンバーガーメニューを実装したりしたくなるかもしれませんが、我慢しましょう。笑
Reactを始めるとjQueryの知識はほぼ無駄になってしまうので、将来を見据えて効率重視で行きます。
JavaScriptの基礎学習
ここまでくるとHTML/CSSのアウトプットにある程度慣れてると思うので、
JavaScriptの学習を始めましょう。
Web制作では、生のJSを扱うことはほぼありません。
なので、ここまでHTML/CSSの学習を進めてきた方は、
「JavaScriptってどういうタイミングで使うの?」という疑問が浮かぶかもしれません。
その疑問は当然とは思うのですが、
この後の、ReactやVueを使ったフロントエンド開発でめちゃくちゃ使うことになります。
ただ、いきなりReactなどを学び始めても、JSの領域とライブラリ領域がごっちゃになるので、
まずはJSの基礎から学ぶことをおすすめします。
JavaScriptも、Progateから始めると良いと思います。
これも、インプットとアウトプットのバランスが良いからです。
また、ProgateのJavaScriptは、そんなに大きなボリュームではないですが、Reactで頻出の構文がほぼほぼ網羅されています。
ProgateでJavaScriptを学んでいても、「これがWebサイト作るのにどう活かせるの?」状態になると思いますが、気にしなくて大丈夫です。後で繋がってくるので。
ProgateのJSコースも2周は行いましょう。
JS学習のおまけ JSの基礎はProgateで済ませてReactやVueの学習に入って大丈夫ですが、
もう少しJSをスラスラ書けるようになりたいという方には、
競技プログラミングの問題を解くことをオススメします。
競技プログラミングは、特定のお題に対して、正確性と速度を競う競技です。(言語や書き方は自由)
僕は「AtCoder」という競技プログラミングサイトを用いていました。
競技に参加しなくても、練習用の基礎問題なども公開されていて、それを順番に解いていくだけで大丈夫です。
それぞれの問題には番号が割り振られていて、その番号でググると、解き方を解説したブログなども多く出てきます。
最初は難しいかもしれませんが、頭の中でロジックを組み立てる練習になって、ここでトレーニングしておくと、フロントエンドで扱うJSはかなり簡単に感じると思います。
学習期間に余裕のある方は、競技プログラミングにもチャレンジしてみることをおすすめします。
Reactの学習
ここまできたらReactの学習を始めます。
よくReactとVueどっちが良いかという議論がありますが、どちらでも良いです。
ただ、こだわりがなければReactを選びましょう。
最近は、圧倒的にReactの方が案件が多い印象です。
VueをReactに置き換えるという話もよく聞くので、Reactがかなり優勢のようです。
そもそも、Vueは日本以外ではあまり使われていないので、この流れも当然とは思います。
Vueを採用している企業もたくさんあるので、Vueでも全く問題ないと思います。
どちらかをしっかり習得すれば、もう一方を学ぶ学習コストは一気に下がるので、
このタイミングではそこまでシビアに、どちらかを選ばなくても良いと思います。
学習方法は、本をおすすめしています。
僕は、「React.js&Next.js超入門 第2版」という本で進めました。
書籍について
僕は上記の本で進めましたが、昨年末、
これからはじめるReact実践入門 という書籍が新しく出まして、
そちらの方が内容も最新でおすすめです。
Reactには公式のチュートリアルや、ProgateにもReactコースがありますが、
どちらも、若干古い書き方(実務では使わない)がメインになっていて、やや非効率だなと思います。
この本は、比較的新しい記法がメインですし、Next.jsについて触れているのも良いと思います。
本に沿って、手を動かしながら学習を進め、
Chapter4の最後に、メモアプリを作る練習課題があるので、それを実際にやってみましょう。
ここまでできれば、Reactの基本動作は理解できた状態になると思います。
転職活動用ポートフォリオの題材
基礎学習を終えたら、ポートフォリオの作成に入りましょう。
ポートフォリオは、転職活動をする際、その人の技術力や実行力を確認するものになります。
ここまでの学習内容は、本当に最低限という内容なので、
ここでいきなりオリジナルのポートフォリオを作るのは、結構ハードルが高いかもしれません。
ただ、絶対に、それくらいの負荷をかけた方が成長は早いです。
ポートフォリオを作ると、似たような実装を繰り返したくさん行うフェーズも出てきます。
そういった箇所の反復練習で、技術が頭に染み付いた状態を作っていくので、修行だと思って頑張りましょう。
転職活動におけるポートフォリオで最も大事なことは、
オリジナリティ
それを作り切る実行力
だと思います。
※ 「この技術も、あの技術も使った」といったアピールはあまり響かないと思います。知識の広さは、経験の多さがものをいうので、会社に入って経験を積んでいれば誰でも身につくものです。「この人にしかできない」みたいなオリジナリティの方が、「一緒に働きたい」という感情を産みやすいと思います。
よく、プログラミングスクールなどではお題が用意されていて、
それを作ってそのままポートフォリオにする人がいますが、その内容で転職は厳しいです。
僕もよくエンジニア採用を行いますが、テンプレのようなポートフォリオを提出されると、面接前に見送ります。
技術的に難しいことは全くいらないので、
オリジナルで
自分が使いたいサービス
あったら需要があるだろうなと思うサービス
身内の人に実際に使ってもらえそうなサービス
そんな観点で決めると良いと思います。
全く案がない人におすすめなのが、ブログです。
ご自分のオリジナルデザインのブログを作るというものです。
ブログは、技術的には簡単なものになりますが、
ブログも深掘りすると、
ページネーション
検索
記事のプレビュー
下書き保存
コメントやスレッド機能
有料記事機能
などなど、いくらでも機能を拡張していくことは可能です。
また、バックエンドの開発は、RubyやPHPなどを学ぶ必要はありません。
サーバーレスのフレームワーク(Firebaseなど)や、microCMSといったSaaSを用いて、最小労力で作るようにして、
フロントエンドのUI/UXにこだわりましょう。
こだわる例として
自分のブログジャンルは「●●」
このジャンルの記事をみる人は「性別は●●、年齢は●●、職業は●●」
大体みんな「●●の時間に、スマホで見るだろう」
この対象者にとって使いやすくするために、一覧表示は写真よりもテキストメインのUIにしよう
といったような考え方です。
転職の面接では、技術的なことを云々語るよりも
「顧客の満足度を上げるためにこういう工夫をした」といったことを語る方が、とても魅力的に見えます。この人と一緒に働きたい、と思います。
顧客志向の考えを、ポートフォリオ作成の段階から意識しておくと良いと思います。
転職活動
ポートフォリオを作ったら、転職活動を始めましょう。
今回のロードマップ的に、転職先は、上場しているような大手中堅よりも、
社員20名以下くらいの小さい会社の方が良いと僕は思います。
なぜなら、
開発全体(フロントもバックエンドもインフラも)関わりやすい
マーケや営業のノウハウにも触れやすい
こういった点も経験しやすいので、独立する際に武器になるからです。
大手に行ってしまうと、どうしても歯車の一部になりやすいので、
なかなか独立のイメージも湧きにくくなってしまうと思います。
自社開発か受託開発のどちらが良いか、という疑問もあるかと思います。
ぼくは自社開発企業におり、片方の経験しかなく、ここはなんとも言えないのですが、
自社開発のほうが、エンジニアが自社プロダクトに対して思い入れがあり、
そういった意味では、濃い開発体験を得やすいとは思います。
またマーケや営業部隊も社内にいて距離が近いので、
サービスが普及していく様子も直近で見れるのは、自分でサービスを運営する際の参考にもできます。
受託開発企業に入るのは、クライアントワークの流れが学べることがメリットなのではと思います。
(経験ないので推測ですが、案件がたくさん合って、開発フローやリソースの組み方、見積りの作り方などを学べるのはとても良いと思います。)
独立した場合、しばらくは受託開発が収入のメインになるのが普通なので、
クライアントワークは自社開発企業では学べないので、
「独立して、受託開発企業として大きくしていきたい」という場合は、受託開発企業に就職するほうが良いのかと思います。
面談では、僕の経験上、技術的な話よりも、
ポートフォリオの拘ったポイント
大変だったポイントと、その時どう取り組んだか、どう解決したか
チームと上手くやっていくだけの人間性・コミュニケーションができるか
この辺りが最も重要視されるイメージです。
経験者の転職はもう少し技術力を直接確認しそうですが、
そもそも、未経験者に技術力を求める企業はありません。(あったとしてもちょっと危ないかも..)
「この人が入ってくれたら、良いサービスのために色々考えて実行してくれそう」と思った時に、一緒に働きたいと僕は感じます。
あと、ベンチャーは本当にフランクな人が多いので、言葉遣いとかマナー面は、
大事ではありますが、そこまでシビアに気をつけなくて大丈夫だと思います。
あと、重要なポイントですが、このロードマップでは副業をする前提なので
「副業OK」であることはよく確認しておいてください。
就職活動か、いきなりフリーランスか
よく、この話題についても質問をいただくので触れておきます。
僕個人の意見として、
エンジニアとして活動していく場合に、未経験者がいきなりフリーランスになるのはオススメしません。
理由は
• フリーランスは教育をしてもらえない(教育コストをかける対象じゃない)
• ゆえに、自走力が低い場合、技術スキルが伸びにくい
• ゆえに、質より量の仕事が多くなり、単価を上げるための自己投資時間を作りにくい
• ゆえに、低単価から抜け出せない
このように、負のサイクルが生まれがちだと思います。
全然、食べていくくらいに仕事を受けることは可能と思いますが、
食べていくのが精一杯、という状態から抜け出しにくいという感じです。
例外として「最低限の資金を受託で稼いで、さっさと自分の事業を始めたいんだ!」と、エンジニアキャリアを積むよりは、事業を作るために最短で稼ぎたい場合はアリかもしれません。
プログラミングをあくまで種銭作りの手段と捉える場合です。
(実際にそういうフリーランス、結構いますし、そこから成功する人もいます。)
基本はまず、転職をすることをオススメします。
企業のエンジニアになれば、強強エンジニアがたくさんいて、たくさん時間を割いて教えてくれますし、勉強会や、書籍も会社の経費で買えたりします。
バイトでも全然良いと思います。僕はバイトから入りましたし、
特に少数のベンチャーは正社員とバイトの垣根もほぼないです。
頑張っていれば正社員にもなれますし、バイトのままでも、正社員同等の仕事を任せてもらうことも可能です。
ということで、
初めのうちは、お金をもらいながら勉強させてもらう形になるので、
余程の理由がない限りは、まずは転職の方がメリットが大きいです。
大きい会社は倍率が高くて大変かもしれませんが、
今回おすすめしている小さい企業の場合、数もたくさんあり、ライバルもそこまで多くないと思うので、ここまでの工程がちゃんと踏めていれば、問題なく転職は成功すると思います。
(SESは、僕はおすすめはしません。理由は、人間関係が現場依存で運要素が大きいからです。人間関係が良い現場であればSESでも全然良いのですが、運要素が大きいです。運要素を持ち込むのはリスキーと思います。)
会社で仕事して学びつつ、個人開発を始める
転職した後は、ひたすら任された仕事に全力で取り組みましょう。
僕も、学習段階とは桁違いのレベルの高さに最初は挫折しそうになったのを覚えていますが、
なんとかなります笑
実務ではコードレビューをしっかりする企業が殆どなので、変なコードを書いてしまったとしても、先輩がちゃんと指摘してくれます。
実務でのコードレビューは本当に学びの宝庫です。
給料をもらいながら先輩の知識を吸収できるわけで、吸収すれば自分も会社に還元できることになるので、どんどんレビューしてもらいましょう。
それなりに会社の業務に慣れてきたら、次は個人開発を始めることをおすすめします。
ここで作るものは、本気でマネタイズしたり、世の中に対して出していく意味での開発です。
ここで個人開発をおすすめする理由は、副業案件を好条件で獲得する為です。
僕自身が実際に体験したことですが、
個人開発サービスをリリースし、それなりの人に使ってもらえ、その界隈での知名度が少しでも上がると、
関連ジャンルの事業者から、サービス開発の協業の相談が来ます。
僕自信、それで副業を始めましたし、しかも1つだけでなく、複数オファーがきました。
これに関しては、他の個人開発者も同じことを言っていたので、かなり再現性は高いと思います。
またエンジニアの副業というと、エージェントサービスやクラウドワークスなどを使う人が多いですが、この場合、圧倒的にエンジニアが不利な立場になってしまいます。
「働かせてください」のスタンスで応募するより、「一緒に作ってくれませんか」とオファーをもらう方が、単価などの条件交渉も遥かに有利に進められます。
副業で個人収入を増やす準備の意味でも、個人開発をおすすめします。
サービス自体が伸びれば、一石二鳥ですから。
僕は運良く一石二鳥状態で、副業案件も獲得でき、サービス自体もバイアウトでマネタイズできました。
副業案件の獲得方法
一番おすすめの副業を始める方法は、上記のように、個人開発をして、そこからオファーをもらう形です。
ただ、この方法は、個人開発をそれなりのクオリティで行う必要があり、かなり大変なのは事実です。
多少条件が不利でも案件を獲得したいという場合は、
個人的にはWantedlyに登録するのがオススメです。
ここに、得意なスキルについて書きましょう。
顔写真も出して、人となりもわかるようなプロフィールを作りましょう。
React+TypeScriptができる、フロントエンド実装者を探している企業は山ほどあります。
技術力が人並みにありそう(教育せずともタスクを消化できそう)
人間性に問題なさそう
が満たせれば、全然獲得できると思います。
フリーランス独立する基準
本業も安定、副業も獲得できた状態に慣れば、フル稼働で月に6, 70万円は稼げるようになっているはずです。
フリーランス独立の基準は、僕の場合
「安定的に仕事をくれる人が2社以上いるか」
でした。
もう少し安全を見れば、3社いればベターですが、2社でもまあ問題ないと思います。
本業の仕事を正社員⇨業務委託に切り替えてもらえれば、2社と業務委託契約できることになり、
収入も減らさずに、独立できます。
この状態を作れるのであれば(職場との関係値などもあると思うので、慎重にですが)独立可能です。
また独立後は、もう1社くらいは関係を作れると良いでしょう。
僕の場合は、転職前にバイトをしていた企業に連絡して、人手が足りていない部分を巻き取る形で契約させてもらい、3社契約の状態にできました。
ここまで来れば、フリーランスエンジニアです。
「フリーランスエンジニア」というと、それだけで技術力強強なイメージを持ちがち(僕は持っていた)ですが、
そんなことはなく、数社と契約できればそれで問題ないのです。
フリーランスの働き方
フリーランスと言っても、場合によっては会社員とほぼ変わらないこともあります。
僕の場合、どの案件も時間と場所が自由なので、好き勝手にやらせてもらっていますが、
場合によっては、オフィス出社が必須だったり、コアタイムがあったりなど、
正社員と同じ条件で働かないといけない場合もあります。
印象として、やはり、エージェントなどを用いて、
こちらから「仕事ください」のスタンスで探してしまうと、不利な職場環境になりがちです。
ただ、人によっては「フリーランスで1人の時間が増えすぎて辛い」という声も聞いたことがあるので、ある程度会社員的な働き方も残しておいたほうが、良い場合もあるかもしれません。
職場で自然と生まれる会話の中で、技術のキャッチアップもできたりするので。
フリーランスを続けるか、法人化するか、会社員に戻るか
フリーランスになったその後も、色々なルートがあります。
フリーランスの働き方があっていて、ずっと続ける人
開発でフリーランスを続ける人は、結構職人気質の人が多い気がします。(他分野のフリーランスはわからないです)フリーランスの場合、色んな案件に参画しますが、その中でマネージャーになることはほぼありません。マネージャーはやはりフルコミットできる正社員が担当することが殆どです。技術力を磨いて、その価値を色んな会社さんに提供できるという場合、フリーランスとして合っているんだと思います。
法人化する人
自分は法人にしましたが、案件をどんどん増やして売り上げが100万を超え始めると、税的にも法人化を視野に入れて良いと思います。その場合、エンジニアの仕事は原価もかかりませんから、タスクをどんどん外注化して、受託の規模を大きくしていきやすいです。マネジメントも割と得意、でも会社員はやりたくないという場合は、法人にするのが向いている気がします。
会社員に戻る人
売上は問題ないが、会社員に戻るという人も結構周りにいます。理由は「開発に飽きた」「1人の時間が長すぎて辛い」が多い気がします。フリーランスという働き方に憧れつつも、実際は孤独な場面が本当に多いです。会社員に戻るのも正解だと思います。開発に飽きる感覚もわかります。ある程度経験を積むと、大体どの案件もやってることは同じ状態になってしまうので。独立する場合、積極的に未経験領域に踏み込むことが好きな人の方が向いていそうです。
ここまで読んでいただいた方へ
ここまで読んでいただき、ありがとうございます
最後まで読んでいただけた方にだけ、お知らせです。
僕の運営するReact特化のプログラミングスクール「ShiftB」では、
受講生全員に、カリキュラム内で個人開発をして頂きます。
ご自身の作りたいものを完成させた上で、転職活動や案件獲得をして頂きます。
↓紹介動画です。
転職市場では上位数%に入るクオリティにまで引き上げる
他のスクールにはない実践型カリキュラムです。
ご興味ある方には、スクールの無料相談会に招待させていただきますので、
コチラからお申し込みください。