2018-06-22

【2018年版】自分の経験を踏まえて、未経験からのエンジニアへのなり方を、実在するツールやサービス&会社ベースで考えてみる

未経験からエンジニアになるステップ(2018年版)

こんにちはじゅんです。

以前エンジニアのなり方やメリデメをまとめましたが、今回は実際に今エンジニアになるとしたら(スキルを付けるとしたら)、実際にあるサービス等を使ってどのようにステップアップをはかっていくかを考えてみます。

ステップアップの詳細は後述しますが、中身自体は当たり前で、徐々にレベルを上げていくのが無難かと思います。

また、職業エンジニアになりたいのか、ちょっとコードかかけて簡単なプロダクトを動かせればいいのかで途中からの流れが全然違うので、そこははっきりさせたほうが良いです。
ビジネス系の方が言っているエンジニアやりたいという場合は、8割以上が後者(多少コードかければOK)なので、変にスキルとか目指さないほうが絶対うまく行きます。

各ステップを紹介する前に全体通して注意したほうがいいことをざっとまとめてみます。

  • 環境構築は最初で最大の敵なので、ブラウザでできるサービスから始めよう
  • とりあえず細かいことは後で勉強するとして動くところを目指そう
  • きちんとステップアップしたい場合はいいメンターが一番の近道
  • エンジニアとして未経験で就職する場合、スキル向上可能性と会社の文化を見極めて戦略的に入社しよう

とにかく最初は、簡単で成果が見えやすい形で学習を進めていくことが肝心です。

私は幸運にも最初からメンターがいたので、計算機科学の初歩から学習しましたが、メンターなしだった場合絶対にしんどくて挫折していました。そしてある程度のレベルになるまでその知識はほぼ役に立ちませんでしたw

なので、まずは一番ハマるとやる気を失う、環境構築系がないウェブ上で勉強が進むサービスから始めるのがいいです。Progateなんかは本当によくできているので、まずそこでプログラミングの初歩を学びましょう。

また、フレームワークとかやり始めると、魔法のコマンドみたいなやつがいっぱい出てきます。真面目な人はその中身だったり解説とかをしっかり読んだりするのですが(職業エンジニアなら当然やることですが)、最初はいらないです。とにかくプロダクトができた!動いた!という喜びをドライブとして進めるのが良いと思います。

で、なんとなく全体像が見えてきた(まあ本当は見えてないけど)段階で、きちんとしたエンジニアにステップアップするかどうかを検討すると良いと思います。職業エンジニアとしてやっていきたいなら、絶対独学だけではなくて、チームでメンターつきでやって方がいいです。可読性とか拡張性とかは、長くサービスを運用していく法人でしか学べない部分が多分にあります。

そして最後ですが、就業未経験からエンジニアになる場合、会社の見極め方を間違えると簡単にブラック企業に入社することになります。もちろん未経験なので簡単に選べる立場ではないですが、その会社の情報をきちんと調べて戦略的に入社することをおすすめします。

職業エンジニアになりたい人

  1. Progate( + dotinstall)等でコードの書き方を勉強
  2. Progate( + XXCamp)でフレームワークの使い方を勉強
  3. (新卒なら)エンジニアとしてインターンさせてくれる会社に応募
  4. (中途なら)未経験OKの会社に行く

こうまとめると当たり前のことしかないですが、概要かくとこうなっちゃいますねw
これだけだと当たり前なので、補足を書きます。

環境構築は鬼門、プログラミングスクールもあり

前述したとおりですが、プログラミング初心者に取って、環境構築が最もしんどいです。今でこそProgateのようなWEBで完結するサービスが出てきましたが、昔は開発環境構築(特にWindows)でハマって結局諦めるみたいな人がめちゃくちゃ多かったです。
黒い画面に謎の英語が大量にバーっとでる状況を1つずつ自分で調べて解決していくのは、エンジニアになってからじゃないとしんどいです。しかもそこで学んだことは、サービス開発において初心者が想像する内容に、ほとんど影響がありません。要はあんまり意味ないです。
なので、まずは簡単にコードをかくことを学べるProgateで成功体験を積んで、「プログラミング結構できるかもな」となるのが良いかと思います。

プログラミングできるようになると、実際に何かしら作ってみたくなると思います。Progate等にはそのままRailsでWEBサイトを作るプログラムや、Macを持っているならiOSのアプリを作るプログラムがあります。それを流れでやってみるのが良いと思います。
ただ、ここで実際に自分のPC上を使って開発が行われていくので、どうしても詰まってしまったり、なぞのエラーで全部やりきれない人が出てくるのではないかと思います。
ペースを作れない人や、開発と関係ないところでのエラーで死んでしまうような人には、〇〇Campのような短期でのプログラミングスクールにいくのもいいと思います。正直あれ終わった途端に、「私は、エンジニアです!」という感じになるのは本職の人達からすると大分違和感がありますが、実際自分で超簡単なサービスくらいなら動かせる様になるんじゃないかと思います。

ここまで行って、職業エンジニアに真剣になりたいという人は、実際に就職するのが一番早いと思います。
新卒や学生ならインターンでどこかに入っちゃう、中途でもここから独学ですすめるよりは会社に入って学んだほうが絶対いいです。

会社の見極め方はスキル向上と会社文化のバランス

今エンジニアは売り手市場なので、企業側からするとなかなかいいエンジニアというのは採用できません。

そこで、エンジニアが寄り付かないような会社は、未経験OKのような求人を出しがちです。そういった会社を下手に選ぶとスキルはつかず、身体を壊して終わってしまうことがままあります。
一昔前のIT土方と呼ばれるSIerの下請けの制作会社とかは典型的なこういった会社でした。未経験だからといって変に卑下する必要はないので、こういった会社は避けましょう。

実際に見極める上で注意すべきはざっくり以下のポイントかなと思います。

  • シニアなエンジニアが一定数いるのか
  • 教育体制はあるのか(相互レビューや勉強会などの学習文化が重要)
  • コードをかく仕事がどれくらい発生するのか
  • 文化として営業よりかプロダクトよりかをしっかり見極める(ビジネスモデルから見るのがベター)

まずいちばん重要なのは、自分がきちんとしたスキルを磨ける環境かどうかかなと思います。次に快適に働けるかどうかかと。

ちゃんとしたスキルを磨くにあたって、大切なのはメンターのように教えてくれる人、学べる人がいることが一番重要になります。要は、シニアなエンジニアが一定数会社にいるかどうかです。ベテランの人がいない会社に入って、周りもエンジニア歴1,2年ばっかりみたいな場合、学習効率があまり良くないですし、向上心がない人たちとあたると悲劇です。

それに付随しますが、やっぱりコードレビュー文化だったり、勉強会が社内であるような会社に行くべきです。レビューはいろいろな人に指摘してもらって目に見えてスキルつきますし、勉強会は自分の幅を広げます。自分が正しいスキルをしっかりと学べる環境に行くべきということですね。

また、地味に大切ですが、コードをかく時間が週にどれくらいあるのかも重要です。最初の頃はとにかく大量にコードかくべきです。企画系にがっつりエンジニアも関わる職場は、会社としては素敵ですが最初のころはとにかくコードいっぱい書けるところが良いかと思います。

次に、文化的にエンジニアが大切にされるかどうかも重要です。
エンジニアでもない社長が、エンジニアが働きやすい会社とか言ってる会社は大体だめです(偏見もありますが)。

やっぱり構造的にどうかとファクトとしてどうかを見るのが最初かと思います。営業会社であれば一定エンジニアへの理解は薄いでしょうし、プロダクト寄りの会社であればエンジニアに対して会社としてリスペクトがないと成り立たないでしょう。ビジネス上、エンジニアリングやプロダクトがキモになる会社はエンジニア文化が発達しやすいです。

ただ、全部揃っている会社に未経験が最初から行けるかというとそんなことはありません。なので、まずは自分が成長できるかどうかというスキル軸で選ぶのが良いかと思います。大切なのはメンターがしっかりついて人に教えてもらえる環境を選ぶことです。
そしてある程度スキルがついたあとに、自分が居心地のいい環境が別にあれば転職するというのがいいんじゃないでしょうか。

コードをかければOK / 簡易プロダクト作れればOKの人

  • Progate( + dotinstall)等でコードの書き方を勉強
  • Progate( + XXCamp)でフレームワークの使い方を勉強
  • (新卒なら)ハッカソンとか出まくってプロダクトをいっぱい作る
  • (中途なら)業務で使えるGASとか覚えて使う / プライベートで簡単なサイト作る

職業エンジニアになりたいわけではなく、プログラミングがある程度できたり、プロトタイププラスαが作れればOKな人はこんな流れが良いかと思います。

フレームワークの基本的な使い方を学ぶところまではエンジニアコースと一緒ですが、その後きちんとした先生や環境に入るのではなくて、とにかくプロダクトの量をこなす方向が良いのかなと思っています。
誰かに見せるとか運用を意識した設計にするとかは、エンジニアなら超絶重要ですが、ずっと運用するものでなければ、書捨ての雑なコードでもいいわけです。

技術そのものを深く学ぶ方向よりも、浅くていいから技術を使ってできることを把握して作るみたいなことを繰り返すほうが実りが大きいのではないかと思います。要はコスパよく技術使えるようになる感じです。

例えば、新卒ならハッカソンとかに出て簡単なプロトタイプ作りまくって、デザイン面も学びつつプロデューサー感覚磨くとかアリです。ハッカソンで技術力は高まることはあまりませんが、企画〜実装を通して技術で実現できることの幅とかアイデアが広がります。

働いている人は、GoogleAppScriptを覚えるのがおすすめです。要は、Excelのマクロ的なやつですが、こいつをつかいこなせるだけで、大分違います。Googleの他の機能との連携ができるので、数値のダッシュボードをメールで毎日配信したり、Slackに配信したりできます。
ハマったとしても横にいるエンジニアにちょっと聞けば案外教えてくれます。ちょっとしたハッキングとかはエンジニアも大好きなので。

上記のように技術を使って、自分の視野を広げたり、業務を効率化するようなことから始めていくのが良いのかと思います。あんまり技術そのものをしっかり学ぶとかはモチベーションも保てないでしょうし、コスパが良くないです。

まとめ

  • 最初は環境構築不要な環境で始めること
  • フレームワークまではProgateや〇〇Camp等のサービスを使って進めるのが◎
  • エンジニアになりたいならメンターがいる会社に就職しましょう(会社選びは戦略的に)
  • そうじゃないなら、技術をコスパよく使えるようになりましょう

ざっとまとめるとこんな感じでしょうか。

最初のハードルはとにかくサービス利用して超えればOK。
その後はエンジニアになりたいならメンターを探しに会社に就職がよくて、そうじゃないなら技術を使ってできることにフォーカスしていろいろとトライしていきましょうというのが結論ですね。

7年前に未経験でエンジニアになったときに比べると、初心者向けのサービスも増えてますし、GASのようにビジネスサイドがちょっとハックするといろいろな事できる環境が増えてる気がしますね。
逆に本職になるには、やっぱりメンターから学んだほうがいいのは変わらずかなーというのが雑感です。

これからエンジニアになろうという人にとって参考になると嬉しいです。
以上、【2018年版】自分の経験を踏まえて、未経験からのエンジニアへのなり方を、実在するツールやサービス&会社ベースで考えてみるでした。