こんにちは、あかしぃです。
自分は本業以外に、別の企業のプロジェクトにもエンジニアとして参画しています。いわゆる副業というやつです。時給は3,000円。
先日、友人(非エンジニア)に「お前はエンジニアになってまだ2ヶ月だけど、副業って受けられるもんなの?」と質問されました。自分も始めるまではおっかなびっくりでしたが、今のところはとくに問題なく仕事ができています。
どのくらいのスキルがあれば副業を受けられるのか、ということを気になっている人も多いと思うので、参考として自分が副業を始めた際のスキル感について、書いていこうと思います。
会社ではPHP(Laravel、CakePHP)、Javascript(Vue、jQuery)を主に書いています。3:7くらいでフロント寄りのタスクが多め。また、副業ではNode.js(express)、Nuxt.jsを使っています。
それでは、バックエンド、フロントエンド、インフラ、その他のカテゴリに分けて、副業開始時点の自分のスキル感をざっくりと箇条書きにして書いていきます。まだ大したスキルがないので、言語化するのが大変でした・・・。
・Railsを使った個人開発で、プロダクトをリリースしている。
・稼働しているLaravel、CakePHPの中〜大規模プロダクトで、既存のコードを追って処理を理解でき、必要な処理を追加できる。
・Laravelでモックを使った基本的なテストが書ける。
・実務レベルでの0→1の開発経験はない。
・Wordpressのディレクトリ、ファイル構成を理解し、テーマを自作できる(カスタマイズ機能は持たせられない・・・と思う)
・Wordpressで、新しいショートコード、関数を追加できる。
・フロントをSPA、バックエンドは基本的にapi機能のみといった、最近の流行りっぽい開発の実務経験はない。
・Node.jsもある程度は書ける。
バックエンドについてはあまり書くことがないですね・・・。実務レベルで1からバリバリ書けるわけではなく、既存のコードを参考に新しい処理を追加できる感じです。
・HTML、CSSは基本的にスラスラ書ける。デザイン知識は皆無。
・Sassを書ける(mixinやextendについては効果的な使い方がよくわからないので、自分で新しく定義することはない)。
・bootstrapのグリッドシステムを理解し、レスポンシブデザインを実装できる。
・bootstrapを使わなくてもレスポンシブデザインを実装できる。
・webpackの使い方をざっくりと理解し、configファイルに新しく必要になった処理を追記できる。(gulpも似たような感じ)
・DOMイベントについて大まかに理解し、jQueryを使って想像通りの挙動を実装できる。
・ES6の記法で書ける。
・実務レベルで、Vueを使った開発ができる。パフォーマンス面も少し意識できる。
・jsの非同期処理でよくハマる。
・vue-cliを使い、SPAのポートフォリオサイトを個人開発し、リリースしたことがある。
・コンポーネント、ストアの使い方はわかるが、ベストプラクティスは知らない(Atomic Designとか聞いたこともない)
・Nuxtは使ったことがない。というか存在自体知らない。
バックエンドよりはフロントのほうが得意といった感じ。Vueをある程度使えるのは副業の面談においてかなりの強みになりました。
・AWSについてほとんど何も知らない。(ec2インスタンス、CloudFrontとかの名前だけは知っている)
・Heroku、Netlify、Github Pagesにプロダクトをリリースした経験がある。
・redisやmemcachedといったキャッシュシステムをあまり理解していない(NoSQLという言葉自体知らない)。
・dockerで各フレームワークのローカル開発環境を構築できる。本業ではdockerは使われていないので、実務レベルでのdockerの運用は知らない。
・Vagrantを使ってローカル開発環境を構築できる。
・Linux上で開発できる。
・dev環境、stg環境などの役割を理解しているが、それがどのように管理されているのか、そもそもローカルからどうやってアクセスしているのかわからない(sshコマンドやIPアドレスについてよくわかってない)。
・コードレビューができる(といっても9割以上はただ承認ボタンを押すだけですが・・・)。
・gitの使い方を理解し、チーム開発ができる。
・ログファイルを見る前に質問してよく怒られる(ログは見ようね・・・)
まとめると、実務で使われる技術についてざっくりと理解し、チームメンバーとして開発に参加でき、自力でチケットを消化することができる。ただ、まったくのゼロからディレクトリ構成やアーキテクチャを考えるのは無理、といった感じです。
まさに「駆け出したばかりのエンジニア」といった感じで、1年、2年ほどの経験を積んだエンジニアからは、微笑ましく見えることでしょう・・・。
エンジニア副業をする場合、基本的にリモートワークで働くことになるはずです。
その場合、開発中によくわからないことがあったり、ハマったりしても周りの人に助けを求めることができません。slackで質問しても即レスがあるとは限りませんし、slack上の質問だけでエラーの原因を突き止めるのは非常に難しいです。
というより、副業として参加する場合は、即戦力として貢献することが求められるので、エラーが起きて進めなくなった!誰か助けて!という感じではかなり厳しいのでは・・・と思います。
副業でエンジニアを探している会社はベンチャー系が多く、比較的新しい技術を採用しているので凄く勉強になりますが、そのぶんキャッチアップも大変です・・・。
また、本業とは違い、時間をかけて育ててもらえるといった環境ではないことにも注意ですね。アウトプットが出せないとサクッと切られるかもしれません。
バックエンドはRailsやLaravelを書けるなら案件を見つけやすいです。単純に案件数が多いので。
Wantedlyで探したときはGoも結構多かった気がしますが、駆け出しエンジニアでGoを書ける人は少ないのではないでしょうか。
フロントはVue、Reactを書けると有利。というか、どちらかが書けるのが前提といった募集が多かったです。
また、フロントとバックエンドを両方書けるともの凄く重宝されますが、どちらかだけでも全然OKという会社が多かった印象です。
ただ、副業で両方をバリバリ書く、というのは時間的に結構厳しいです。ちなみに、インフラ(AWSやGCP)もできるとおそらく案件探しで無双できます。
Web系の一般的なIT企業に勤めていて、開発にある程度問題なく参加できている人なら、問題なく副業先でも働けると思います。2年とか3年ほどの経験がなくても大丈夫です。
ただ、技術レベルは会社によってかなり違うので、「この会社なら自分が参加しても大丈夫そうだな」と感じる企業を選ぶことをおすすめします。副業の探し方については、以下の記事を参考にしてください。