こんにちは、マイクロ法人を運営しながら日々駆け回っています、新米社長です。
マイクロ法人という言葉からも連想されるかと思いますが、小さな会社を経営しながらフリーランスとしても日々働いており、フリーランスとして行っているいくつかの事業のうちで、ここ最近はソフトウェア開発の案件が一番の比重を占めています。
やはりソフトウェア・エンジニアとしての案件は、今現在においても稼げる仕事ではあるため、お金の面からも旨味は多いです。
なお、以下の文章でエンジニアという単語を頻用していますが、ここで書かれているエンジニアというのはソフトウェア開発を行う、ソフトウェア・エンジニアのことを指しています。
稼ぐためにエンジニアに転職するのはありか?
少し前にこんな記事を書きました。
この記事にもある通り、私は転職してエンジニアになったタイプの人間です。
上の記事では実際に転職してエンジニアになった際のことが書かれており、今回の記事はこの記事の続きという立ち位置となります。
もしソフトウェア・エンジニアへの転職を考えている方は、上の記事を読んでみてください。
実際の経験談を盛り込んでいますので、エンジニアへの転職の事例としては参考になるかと思います。
最初にも少し書きましたが、今後5年〜10年先はどうなるかはわからないものの、現時点においてもソフトウェア開発の仕事は稼げる仕事です。
私自身、フリーランスとして案件を請け負っていますが、報酬金額は安定しているので、そういう観点からもエンジニアの仕事は旨味が多いです。
稼ぎたいという理由からエンジニアに転職する方も多いと思いますが、現時点では十分転職する理由としては成立します。
また一度プログラミングなどのスキルを身につけられれば、その知識は一生モノとなります。
ソフトウェア業界は進歩も早く、常に新しいものを学ぶという姿勢は必須になるものの、一度身についたプログラミングスキルやコンピュータに関する知識があれば、新たな知識の取得はかなり楽になります。
今後世界におけるソフトウェアの比重が増えていくことを考えると(現在もあらゆるものがクラウド化されていっていますね)、エンジニアとして身につけた知識が役立つ場面は多いと思います。
新米社長がエンジニアになってからキャリアアップをするまでに行ったこと
では、ここから本題です。
実際にわたくし新米社長がエンジニアに転職してからどのようにキャリアアップを図っていったかを書いていきます。
最初の現場はデスマーチ
私がエンジニアになって最初に就職した会社はSler系の会社です。
Slerは時折耳にする言葉かと思いますが、それってどういう業態なの?と疑問に思う方も多いでしょう。
最初はここでSlerについて書こうとも思いましたが、Slerについてよくまとまっている記事を見つけたので貼ることにしました。
実際にSler業界で働いていた人間としては非常に共感することが書かれています。
もちろんここに書かれているようなブラックな現場ばかりではありませんが、そういう現場に遭遇する可能性は高いと言えます。
実際に私が初めて出向していた会社もデスマーチ案件でした。
そこでの業務内容は、あるソフトウェアのテスト。
エンジニアに転職したらすぐにコードを書くのかと思っていたら、プログラミングは一切せずExcelとにらめっこするだけの毎日。
あのときほど自分は何をやっているのかと思ったことはありませんでした。
ソフトウェアのテストをしているだけなのに業務量が多くて毎日終電間際まで仕事をしたり休日出勤もあったりで、体を壊しかけたりもしました。
(というか、過労により1週間近く休暇を取らざる負えない状況になりました)
ソフトウェアをテストすることで得られる知見というのは勿論あるためエンジニアとして身についたことも多かったですが、このままで行けない!と強く思い、プログラム開発が行える現場にアサインされるための施策を打っていきました。
エンジニアとして重要なスキルはコミュニケーションスキル!?
さて、ここで少し脇道にそれます。
時折勘違いしている人を見かけるのでここでハッキリと書いておきますが、エンジニアにとって最も必要なスキルはプログラミングスキルではなく、コミュニケーションスキルです。
プログラミングセンスがあればあるに越したことはありませんが、例えばコミュニケーションスキルは0でプログラミングスキルが100あったとしてもお金は稼げません。
(例えば自分ひとりでイケているソフトを開発して、世間がお金を払ってくれるという状況になればまた別ですが、そういうのを目指すのは再現性が低いためおすすめできません)
ソフトウェア開発というのは基本的にコミュニケーションの上で成り立つため、
- 開発している機能の要件確認や見積もり
- エンジニア感でのコードレビュー
- ビジネスサイドとの認識合わせ
などなど、コミュニケーションが必要になる場面は思いの外多いです。
そのため人とコミュニケーションを取りたくないのでエンジニアになろうと考えている方は、別のやり方で稼ぐ道を探したほうが良いかもしれません。
実際、上のデスマーチ案件でチーム間でのコミュニケーションは業務の進捗に影響を及ぼすものでしたし、このあとに書いていくことなどもコミュニケーションをきっちりと取っていくことが前提となっています。
ブラックなテスト案件から開発案件にアサインされるために行ったこと
さて、少し脇道にそれましたが、上に書いたようにデスマーチ案件をなんとか乗り越えた私ですが(実は数件ほどデスマーチを味わいました…もうやりたくない)、このままではいけないと思い、自分から施策を打つことにしました。
私の場合、エンジニア未経験の新入社員ということもあり、そういう未経験者でもアサインされる現場に出向していました。
エンジニア未経験可の案件はブラック率が高い?
そしてここが重要なのですが、未経験エンジニアでもウェルカムな現場というのはブラックな現場であることが経験上多いです。
エンジニア側としては未経験でも雇ってくれる現場が良いし(そして業務経験を積みたい)、受け入れる側の会社としてはそういう人間でもやれる仕事をアサインするため、技術力ではなくその人の時間を利用して達成できる仕事を振る、という構図が成り立ちます。
これはなにもSler系の会社だけではないと思いますので、これからエンジニアに転職しようと考えている方がWeb系の会社に就職したとしても未経験の場合、ブラックな働き方になってしまう可能性は多いです。
ではブラックな現場に行かないためにはどうすればよいか?と考えた末、時間ではなく技術力を買われて仕事をしたいという一心で、私はプライベートでも率先してプログラミング学習をすることにしました。
(もともと入社前からプライベートでも楽しくてプログラミングはしていたのですが、デスマーチ案件に携わってからというものプログラミングをプライベートで行う余裕がなくなってしまっていました)
プライベートでWebアプリを作って営業の方に自らプレゼン
私はもともとウェブプログラミングに興味があったため、当時流行っていたRuby on Railsを独学で学習しました。
私が当時使えたサーバサイドの言語はJavaかC#でしたが、ある程度の基本的なサーバサイド開発の知識はあったため、Ruby on Railsについての基礎はすぐに学ぶことができました。
私はRuby on Railsを使ってTwitterのクローンアプリを作成し、それをHerokuという無料から使えるPaaSにデプロイして、誰でも使えるようにしました。
Twitterの作り方はググればすぐに出てきましたし、Ruby on Railsのチュートリアルはとても丁寧に作られているので学習する上での壁にぶつかることは少なかったです。
またHerokuとRailsの組み合わせは当時からたくさんのエンジニアが個人開発などでも利用していたので、Qiitaなどに知見が貯まっていました。それらを参照することで初心者の私でもHerokuにウェブアプリをリリースすることは問題なく行えました。
(それでも何度か壁にはぶつかっています)
そして作ったそのアプリを用いて、エンジニアを現場にアサインするために日々営業を行ってくれていた営業チームの担当の方にプレゼンしました。
具体的には、
- このアプリはTwitterを真似したアプリであること、どういう機能までを実装しているか?
- どういう技術を用いて利用しているか?
- Ruby on Railsを用いたアプリでDBにはPostgreSQL、コード管理にはGitHub、PaaSにはHerokuを利用などなど
- 開発着手からリリースまでどれぐらい時間をかけているか?
- 開発を通して学んだ技術について
などなどをプレゼンし、今の自分であればこういう開発は行えるので、こういう技術を用いている現場を自分に紹介してほしいとプレゼンしました。
いま思えばかなり生意気に映っていたかもしれませんが、自分としてもプログラミングを行いたくてエンジニアになったため、そんな事を気にしている暇はありませんでした。
時間は有限です。スキルが身につかない現場で働くところにメリットは見いだせなかったため、私としても割と必死にこれらのことをしていたと思います。
幸いにも当時身近でGitHubやHerokuを使ってバリバリ開発している人は少数であったこと、自分からウェブアプリを使ってプレゼンをしてくる人間は今までいなかったこと、などいくつかの幸運も重なり、自分のプレゼンはかなりポジティブに受け止められ、結果Ruby on Railsでシステム開発を行っている現場にアサインが決まりました。
おまけに技術に関心のある人材という印象を会社に与えることができ、その後の案件でもモダンなプロジェクト(例: Vue.jsを用いたフロントエンド案件など)
現場での開発案件は難しく苦労はしたものの、日々プログラミングに触れることができ、エンジニアとしてのスキルアップにもなりましたし、会社での評価も上がりました。
(勿論、給料もアップしたので懐も温まりました)
Sler系の会社だからといって、レガシーなプロジェクトばかりとは限らない
Slerはブラックだったり、古のコードが動いているような古臭いシステム開発にしか携われないという話を時折耳にしますが、実際は必ずしもそういうわけではありません。
私が当時いた会社では上に上げたようなレガシーなプロジェクトから、モダンなシステム開発の現場まで営業側でコネクションがあったため、同僚でも例えばScalaを使って開発しているような現場にいるようなこともありましたし、私自身も後述するRubyの現場や、フロントエンドエンジニアとしてVue.jsに携わるような現場でも業務を行っています。
(Scalaはオブジェクト指向言語と関数型言語の特徴を併せ持った言語で、Javaのプラットフォームからも動作できることから、Javaの利用が多いSler系の起業でも利用されているケースがあります)
今回の例でいうと、先に書いたように私はウェブプログラミングに興味があったため、当時よく使われていたRuby on Railsでデモアプリを作ることで、あわよくばRubyの現場にアサインされたいという目論見がありました。
そしてその願望は無事に達成されました。
このようにSler系の会社に入ったからといっても、必ずしもその事自体を悲観することはありません。
様々なプロジェクトがあり、Sler系の会社が介入しているプロジェクトであっても、モダンな開発環境のプロジェクトというのはたくさんあります。
Sler系の会社で働くメリット(会社にもよる)
また、このようなSler系の会社の場合、契約期間が予め決まっている中でのプロジェクトにもなることも少なからずあります。
ずっと一つのプロジェクトに関わることはできませんが、逆に言うと様々なプロジェクトを体験できるためエンジニアとしての知見は広まります。
プロジェクトが変わればメンバーも変わるため1から交流を築くためコミュニケーションも求められますし、プロジェクト内で利用されているツールなどにすぐに対応できるような力も求められます。
(SubversionとVB.NETを用いたレガシーな現場や、Pythonを用いた機械学習案件など色々とありました)
ですが、逆に言うとそれだけすぐに様々なことを一度に体験できるので、エンジニア(また社会人としての)のスキル向上にも繋がります。
また、このようなSler系の会社の場合、間に営業の方も入って交渉も行われるので、なにか不満があれば営業を通じて不満を伝えることもできます。
(間に人が入ってくれるというのは、かなり安心感があります。勿論ここは会社にもよりますが…)
実際、私も問題のあるプロジェクトの場合、ガンガン営業の方を通じて不満を伝えていました笑。
人によっては抵抗がある方もいるかも知れませんが、これはあくまでビジネスの話なので、不満がある場合は積極的に人に伝えるようにしたほうが良いです。
(これはSler関係なく誰もが意識するべきことです。声が小さい人は場合によっては搾取されかねません)
エンジニアに転職したら、まずは様々な業務経験を積んでいく必要がある
ここまで、私がエンジニアに転職してからのことをざっくりと書かせていただきました。
未経験でエンジニアになろうとすると、受けられる案件というのは限られています。
前提として未経験のエンジニアは即戦力にはならないので、開発スキルのある人材を求めているプロジェクトでは採用できません。
そのため、最初はどうしても未経験でも可能だという案件に携わって地道にスキルを高めていくしかありません。
そのプロジェクトで開発に携われそうであれば何かしらのアピールが必要になりますし、そうでなければ次の案件に移行する必要もあります。
また、現代であればGitHubなどで個人開発プロジェクトを立ち上げてアピールすることもできますし、他人のプロジェクトにコントリビュートすることもできます。
他人のプロジェクトへのコントリビュートは、既に出来上がっている開発環境への順応も求められるので、そういう意味では業務に近い体験ができると思いますし、現代ではほぼほぼ必須スキルとなっているGitの習得にもつながるので、ぜひ時間を見つけてコントリビュートできそうなプロジェクトがないか探してみるのも良いと思います。
いずれにせよ、未経験からキャリアを築いていくには、なんとか開発経験を積むためのチャンスを逃さぬようにすることが必要です。
昨今はプログラミングがブームになっていることからプログラミング人口も増えており、経験を積んでいくためのヒントがインターネットやYouTubeなどにたくさん転がっています。
様々な場所から情報を仕入れ、未経験だけども開発案件のキャリアを積むためにはどうすればよいか考えてみてください。
ここに書いたように、Sler系の会社に入ってなんとか頑張りながらポートフォリオを作って営業に直談判して好みのプロジェクトへのアサインを目指す、というのは一つのやり方として有効かと思います。
この記事がエンジニアとして稼いでいきたい方々の参考になれば幸いです。