エンジニア初心者が企業で重宝される人になる方法

業務委託でのナレッジの共有の機会が多いとともにWantedlyでの採用面接(業界未経験/実務1〜2年からの転職)に参加する機会が何度かあり、「結局何をしたらありがたい人になれるのか」をよく考えるようになった。

そもそもありがたい人って何

私が携わっているのはすべてベンチャー企業なので、ある程度オールラウンダーな属性をエンジニアに求めている点に注意。
  • スクラム/ウォーターフォールを問わず要件に応じて自分である程度実装に関して設計が行えること(形式知として資料化する経験、あるいは誰かの資料を用いて実装を行った経験)
  • 要件がファジーであっても、設計のプロセスを踏んで不明瞭な点があれば関係者と適切にコミュニケーションが取れること
  • 担当分野に関する技術に対して「関心を持っている」こと
  • QiitaやStackOverflow、技術ブログ等を「玉石混交」のものとして向き合えること
  • 英語のドキュメントを読むことに抵抗がないこと
  • 数ある言語・ライブラリ・ミドルウェアに対して自分の頭の中である程度地図を描けること
恐らくどの企業も採用にあたって何らかの指標でこれらを測っているであろうと思っている。
つまるところ「どれだけ自立して業務が出来るか」と言えて、教育に手のかけられない中小企業ほど、この属性をより重要視しているはず(=即戦力)。

何をすればありがたい人になるのか

上で挙げた要素は向き不向きの要素はあれどすべて経験値によるものです。
じゃあ実務を通じてしかレベルアップできないじゃんっていう真実もあるのですが、結局「どれだけ良いものを多く作り、手戻りが少ないか」によって定量的な評価がなされるので、そつなく出来なくても特定の業務に対して上手に振る舞えるのもまた貴重な人材ではある(but 採用においては評価が難しい……)

「昔の無垢だった頃の自分に向かって言うなら」という予防線を張った上で挙げるならこんな感じ。
  • 時間感覚と生産性に注意する。
  • 自分の書いたコードを見直してセルフでコードレビューをして、改善できそうな箇所は分からなくてもTODOに入れて後で誰かに聞いたり、プライベートの時間を捧げてひたすら調べる
  • 設計でも実装でも常に「手戻り」を意識する
  • 斜に構えてはいけないけれど、時には斜に構えなきゃいけない
  • 他人を巻き込んで自分の生産性を最大化するか、他人に協調する
お金を貰うからにはそれに見合った成果を出さないとなあ、という当たり前ではあるが人によって捉え方の違うこの観念に対して真摯に向き合えるようになったのはここ1年の話なので、場当たりでも何でも真面目に色々取り組んできたら回り回って自分の価値になるもんだなあ、と思うようにしている。

でも未経験からだと効率よく経験するのは困難では?というのは一つの悩み。

実務以外で出来る成長手段

  • 読書
  • マイナーだったり新しいライブラリのチートシートを作ってQiitaのLGTMを稼ぐ
  • AWSに登録して無料枠を最大限活用して1年間提供できるサービスを作る
  • 公開APIに触れてみる(LINE, 仮想通貨取引系, GCP等)
  • あえてメチャクチャ難しい領域を触ってみる(AtCoder, 機械学習)
極端に言えば何やっても成長は得られると思うのですが、どれだけ価値のあるものを作ろうとするか?価値のあるものを理解しようとするか?といったチャレンジのできる環境にいる人は幸せだよね、という意味も含めて挙げてみた。

何事もやりきる(達成する)ことは別に重要じゃなくて、とりあえず触るだけでも意味あるんじゃないかなあというのは最近よく思うところ。