未経験からwebエンジニアになるには?という質問にお答えします

こんにちは、エンジニア大家です。

ツイッター等で時々いただく質問で、未経験でwebエンジニアになるには?といった内容をいただきます。

私は成り行きでwebエンジニアになってしまったため、誰にも聞かず、何も考えずにこの職に就いてしまいました。

なのでダイレクトメッセージ等で質問者さんとやり取りさせていただきまして、「皆さんはなんて真面目なんだと!」と思った反面、

俺はなんて軽い人間なんだ!

と思ってしまいました。。

それはさておき、今回はそのような質問とその回答した内容について書きたいと思います。

未経験からwebエンジニアになるには

どのように学んだか?

質問者

エンジニア大家さんはどのように学ばれたのですか?
基本的には仕事しながら学びました。私の経歴は参考にならないかもですが、友達の会社を手伝う様になったのがきっかけでこの仕事に就きました。最初は全くの素人でしたが、当時(15年ほど前)の会社で必要な技術は今思えば浅い知識で問題なかったので、全くの素人が勉強しながら仕事するというスタイルでも何とかなりました。足りない知識は近くの本屋でプログラミングの書物を買って来て職場で読みながらサイト構築したこともありました。

エンジニア大家

こんな内容で回答させていただきました。

少し補足します。

エンジニアとして入社して半年〜1年くらいの時期

当時友達の会社は自社のサービスだけ開発・運営・保守をやっていたので、かなり融通が効きました。

融通が効くとは、納期だけでなくプログラムも動けばOK(多少効率が悪いとかソースが汚くてもOK)ということです。。

その代わりデータセンターでラックを契約し自前で物理サーバーを運営していました。DELLでサーバーを買ってLinux入れてデータセンターまで運んでラックにマウントしネットワーク設定してapache入れて、、(以下略)。

WEBサーバーだけでなく、DNSやメールサーバーもやっていました。会社に金がなかったのでロードバランサーもフリーのもので構築・運営してました。

なのでサーバー・ネットワークからアプリケーション開発まで広く浅く知識が必要でした。

それでも半年〜一年もすればその会社の仕組みはほぼ理解できるようになっていました。

その入社してから半年〜1年くらいの時期だけにフォーカスすると、自宅に帰宅してから明け方5時くらいまで勉強していました。

というのも、めちゃくちゃ楽しかたのです!

楽しかったので自発的に勉強していました。

何故楽しいかと言うと、手作業なら数日かかる事務処理がボタン一つで一瞬で終わる、みたいな機能を目の当たりにした時、「裏の仕組みはどうなってるのか!?」という好奇心が純粋に湧き出てきて、仕組みを一つ一つ解読していくのが本当に楽しかった。

またDB負荷が高くなる夜22時以降にモニタリングしては設定を変えてみたり、SQLを直したりインデックス貼ったりし、負荷が下がったりする様を見ると達成感が半端なかったのです!

なので、初期の頃は遊びの延長みたいな感じで仕事をやってました。

ちなみにこれが評価されたのか、私の給料は一年後には倍(22万⇒44万)になっていました。

その後の時代の変化

最初に入った会社では「エンジニア」と呼ばれる職種の役割はサーバー・ネットワークからサーバーサイド&フロンエンドのアプリケーション開発とほぼ全て含まれていました。

それから世の中の流れでサーバーが物理からVPSやIaasやPaasになり、

アプリケーション開発がその会社独自のフレームワークから汎用的なフレームワークに置き換わり、

jsやcssがより高度に発達していく過程の中で、

「エンジニア」の役割も「フロントエンド」、「サーバーサイド」、「インフラ」というふうに徐々に別れて行きました。

私の役割も所属している会社や常駐先の現場で任された担当業務によって時にフロントエンドだったりサーバーサイドだったりしましたが、その度に足りない部分は仕事を通して吸収していった感じです。

それもエンジニアになりたての一年で得た知識を基礎にして積み重ねてきた経験でなんとかなっています(今の所)。

前置きは長くなりましたが、「どうやって勉強したか?」という問いに対する答えは「仕事を通じてその都度勉強していった」と答えるようにしています。

プログラミングのスクール等に入るべきか?

質問者

全くの未経験なのですが、プログラミングのスクールやオンラインサービスのProgateなどから学ぶことについてどう思われますか?
ボリュームの大きなものを体系的かつ効率的に学ぶとっかかりとしてはとても良いと思います。でも重要なのはどれだけ長い時間技術に触れたかだと思います。諦めずに継続して学習できるのであればどんなやり方でも良いです。 学習だけでなく実務も早いタイミングでやれたらより良いと思いますが、最初は焦らずじっくりと学んで下さい

エンジニア大家

先程述べたように自分はスクール等で学んだことはありません(私の時代にはスクールがなかった(泣))が、

大きなボリュームのものを学ぶ時にもし関連書籍が発売されていたら買ってしまいます。

理由は効率が良いからです。

なのでスクールも効率良く学べるようになっているはずなので積極的に利用していただけたらと思います。

お金を払って学ぶことに関して、私は良いことだと思います。

私の場合、無料だと身に入らないことが多いので、元を取る意識を働かせるためにお金を払う方が効率的だと思います。

自分でサービスを作ることは有意義か?

質問者

自分で一からサービスを作ってみようかと思いますがどのくらい有益でしょうか?
自分で一から作る事はとても良いです。私も最近一から作りました。大規模開発の現場に居ると割り振られた一部分しか触らない事が多かったり、誰かがお膳立てをしてくれた後から開発を進めるため、実はわからないことが多いです。なので、改めて小さな開発を一人で全てやると知らなかった部分を触る機会が増えるので学びが多いですね。

エンジニア大家

補足します。

例えばPHPの何かのフレームワークの初期設定だったり、サーバーにデプロイする仕組みだったり、はたまたローカル開発環境のdocker-composeの設定だったり、普段何事もなく利用しているけど、実は他の担当者が用意したものを使ってるだけで、その内容は無知だったりするわけです。

それらを自分で一から構築してみるととても勉強になります。

もし個人で仕事を受けることになった場合、普段から触れている仕組みで開発するのが最も効率が良いのですが、いざ本業で触ってるフレームワーク、同じ開発環境を用意してみたら全然動かなくて泣きそうになります。

なので、急な要求に備えるべく普段から知らずに使っている要素は潰しておきたいですね。

プログラミングができるのと仕事をもらえるのは別か?

質問者

プログラミングをできるようになったら、個人で受注できるような仕事をもらえるようになりますか?
簡単な案件なら大丈夫かと思いますが、もしフリーランスとして大規模開発のタスクも受注したいのなら最初はどこかの企業に就職するか常駐するかして1,2年ほど経験を積んだ方が効率良いと思います。実務未経験の多くの人はある程度トレーニングが必要だと思います。

エンジニア大家

意外とプログラミング以外にもドキュメント(詳細設計書やDB定義書、テスト仕様書、バグ報告書)の提出があった場合はその書き方やフォーマットも慣れておいたほうが良いし、おそらく現場で問題に直面しないと鍛えられない点が多くあると思います。

特にSQLはできる人にレビューを受けて初めて鍛えられました。SQLに関しては自分の独学では全く刃が立たなかったです。

というわけで、最初は現場に出て経験を積むことをおすすめします。

フリーランスエンジニアになるには?

質問者

ズバリお聞きします!フリーランスエンジニアになるにはどうしたら良いでしょうか?
フリーランスの案件を紹介してくれる企業があるので、登録してみてはいかがでしょうか?私も客先常駐・業務支援という形で労働提供してます。

エンジニア大家

これに関しては特に補足はありませんが、そもそも「フリーランス」には誰でもいつでもなることはできます。

ただ、フリーランスとして仕事を安定受注できるかどうかはその人次第です。

ランサーズみたいなサイトで受注しまくっても良いですし、私のようにエージェントを通して客先常駐やリモート案件を受注しても良いと思います。

まとめ

  • 最初は(可能な限り)ゆるい環境でスタートしたい
  • 自社サービスの開発・運用している企業だとブラックではない可能性が高い

私の場合スタートが友達の会社という(今思えば)かなりゆるい感じだったので何とかなりましたが、もし可能であれば最初はゆるい環境で始めてほしいです。

強制収容所や監獄みたいな会社は結構多くあるので、最初にそんなところに入ったら優秀な人も挫折しちゃいます。それはとてももったいないことです。

友達や親戚の企業に就職するアテがないという方は、自社サービスだけを開発・運用している企業に就職や出向されることをおすすめします。

そんな企業でもブラックなところはありますが、下請けやってる会社比べたら遥かにマシだしブラックでない確率も高いと思います。

webエンジニアやってみてよかったか???キャリア12年の私が語ります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です