seri::diary

日常

若者と転職

このエントリーはしょぼちむ Advent Calendar 2014 の21日目の記事です。
前日は @fukai_yasu さんの記事でした(まだ未登録?)。その前は@setoazusaさんのしょぼちむにテストファーストについて説明してみるでした。

しょぼちむご本人とは東京で働いていた頃に3回ぐらいプライベートでお酒の席でご一緒させて頂いたぐらい?の関わりでしょうか。何となくjava一派ということで仲良くさせて頂いていました。

お酒の席ではしょぼちむ氏に「いつ辞めるの?」と転職を持ちかけるネタでいじるのが一部界隈では定番なようなので、「若者と転職」というタイトルで駄文を書かせて頂きます。
しょぼちむ氏の参考になれば幸いです。

概要

私は2014年12月現在で28歳になります。
23歳で社会人になったので社会人としては丸5年半やってきたことになりますが、この5年半で3回転職をしています。
平均すれば1つの会社に1年と10ヶ月弱しか勤めていません。
人によっては「だから今どきの若者は…」と眉をひそめられそうな数字ではありますが、それぞれの転職には私なりの考えがあってのことだったりするので、その辺の考えについて説明しつつ、自分の転職感について述べたいと思います。

自分のこれまで

私の社歴をざっくり説明すると以下のようになります。

  • 2009年4月〜2011年11月 某SIerでSE
  • 2011年12月〜2012年12月 某制作会社でエンジニア兼SEのような何でも屋
  • 2012年12月〜2014年6月 某自社サービス会社で自社サービスの開発エンジニア
  • 2014年7月〜 ハートレイルズwebサービス受託開発エンジニア

過去3回の転職の経緯についてはそれぞれ退職or入社エントリーを書いてるのでそちらを参照ください。

それぞれの会社で働いて得られたものをまとめてみると以下のようになります。

SIer

  • 社会人としての基礎スキル(特に電話の取り方からタクシーの乗り方までビジネスマナーについて細かく叩きこまれたのは後々役に立った)
  • IT全般の広く浅い知識
  • 分かりやすいドキュメントと分かりにくいドキュメントの違い
  • 伝統的な日本企業ってこういうものなのかという知見
  • SI業界の現状と課題
  • Oracleを触る貴重な経験

某製作会社

  • 社員5人の会社で働く経験
  • 「自分1人しかエンジニアがいない」という後がない状況での開発をしたことによる精神的な耐性
  • PHPで何でも作る経験(画面からバッチまで)
  • 謎設計の自社フレームワークに泣く経験
  • 前任者が書いたクソコードと戦う力
  • クソコードからドキュメントを起こして正しい仕様を整理しなおしてバグを直してリファクタリングする経験
  • レコメンドエンジンの知識(代理店販売してたので導入サポートをしていた)
  • Objective-Cを1ヶ月で勉強して初めて作って納品したiphoneアプリがいきなり有料アプリとして販売されるというロックな経験
  • 要件定義〜見積もり〜設計〜開発〜テスト〜納品までを全部一人でやるという全フェーズの経験
  • アメリカ人との英語でのメールコミュニケーション(代理店販売しているパッケージ仕様の問い合わせを英語でやってた)

某自社サービス会社

  • 「システムを作ること == お金になる」が成り立たない世界でのエンジニアの会社への貢献
  • 公開中のサービスを◯◯時間バグらせて放置すると☓☓万円の損害になるというお金の考え方
  • ざっくりとした仕様から自分で必要な機能を考えて作る経験
  • すさまじい無茶ぶりにどうにかこうにか頭を捻って形にしてリリースする経験
  • 営業、マーケティング、運用サポート、経理といったエンジニア以外の色んな職種の人の役割、コミュニケーションの取り方
  • 毎月中途採用社員が10人ずつ入ってくる急成長する企業で働くという経験
  • java
  • struts2
  • spring
  • SAStruts
  • dbflute
  • aws
  • fluentd
  • mongodb
  • solr
  • elasticsearch
  • kibana
  • チケット駆動開発の経験
  • gitでやらかした時にどうにかするスキル
  • コードレビューをする、されるという経験
  • 開発現場から離れた技術サポートの仕事の経験
  • 社内外向けの勉強会を会社のオフィス使って開催してアウトプットする経験
  • 40人が参加する開発合宿を企画運営する経験

3回転職をしてみて思ったこと

最初のSIerについては面白くなくて飛び出した感が強いのも正直な所なのですが、振り返ってみればこれまで務めてきた会社で学びがなかったものは一社もなく、それぞれの企業で自分が出来ることを増やした上で転職してきたのだなと今にして思います。

転職する目的というのは人によって沢山あると思いますが、何にせよ「プラス思考の目的」が無いと上手くいかないのではないかと思っています。

給料が安い、仕事が面白くない、人間関係が悪い、といったマイナス思考の目的だけで飛び出しても、また次の会社で同じトラブルがあった時に対処する術を身につけていないのでまた辞めるしかありません。 Team Geek にも書いてありますが、組織というのは組織の問題を解決してくれる人を求めている訳で、自分が課題だと感じたことにどうアプローチしてきたかという実績が無いと企業から見て魅力的な人材にはなれません。

それは本人にとっても会社にとっても不幸だと思うので、自分は必ずプラス思考の目的が無ければ転職はしませんでした。
プラス思考の目的があれば、直面した課題を上手く解決するモチベーションが湧くか、プラス要素で相殺して我慢できます。 (自分は我慢できないタイプなので大抵課題には口を出してしまうのですが…)

最初のSIerには2年半いて、最初の1年目にして「仕事が面白くない…つらい…」とずっとぼやいていましたが、自分がやりたいこと、目指したいことがはっきりするまで辞めませんでした。 それは前述したように、マイナス思考の目的だけで飛び出しても問題は解決しないし、なんかカッコ悪いと感じたからです。(なお、当時見つけた「やりたいこと」は自分でインフラの面倒もコードも書けるようになってwebサービスを作ることでした)

転職するという行為自体について考えれば、文字通り職場を変えることになるので基本的にリスクが大きいわけです。何度その会社の社員と面接をしても、その会社の空気や思想というのは入社して働いてみないと分かりません。

だから、自分が実現したいことがはっきりとしていて、その会社に転職すれば自分にとってプラスになる、と思えるのであれば積極的に転職すれば良いのではないでしょうか、というのが自分の考えです。

逆に、そういうのが見えなければ転職すべきではなく、するべきは自分が感じている課題を解決することだったり、自分のキャリアを考えることだと思います。

課題を解決するために

いくつか方法があるかと思いますが、自分にとって良かったと思えた方法が、他社の人にその人の会社の状況について聞いてみることです。 隣の芝は青いと言いますが、自分が抱えている問題が自分の組織だけの問題なのか、はたまた他も同じような課題があるのかという判断は社外の人と話さないと区別がつきません。

エンジニアの場合、大抵twitterFacebookやっているので、面識がない人でもコンタクトを取るのはさほど難しくありません。(実際、一度も会ったこと無いのにいきなりDM送って飲みに行って仲良くなったエンジニアが何人かいますw)勉強会の懇親会とかでも良いと思います。

あとは転職エージェントにコンタクトを取ってキャリアについて相談してみるのも良いと思います。自分も2回目の転職は転職エージェントに相談した上で紹介してもらっています。

対象は誰であれ、自分一人で抱えていても仕方がないのでなるべく普段接していない人との接触が重要かと思います。内輪だと大抵愚痴大会になってしまうのでw

自分のこれから

どんだけ年を取っても、自分が手を動かす、あるいは常に動かすことができるエンジニアとしてのスキルと知識を保ち、それらをコアにビジネスにコミットしていける人間でありたいと考えています。

今は自分が持っているスキルを「お客様の事業を行うためのwebサービスの受託開発」という形で発揮し、お客様の様々な事業に関わりながらwebサービスでどういう価値を社会に提供出来るのか、ということについて勉強している最中です。

とにかく案件の数をこなして、

  • それを自分がどれくらいのスピードとクオリティで開発できるのか
  • どう開発したら上手くプロジェクトが回せるのか
  • チームの生産性を上げるにはどうすればいいのか
  • どうやってメンバーのスキルを上げていくのか

ということについての方法を学びたいと考えています。

自分が目指すポジション

ここ5年以内に目指すキャリアパスとしてはエンジニアのマネージャーとしてのポジションを目指しています。プロダクト開発をリードする立場というよりは、チーム内のメンバーのマネジメントをするポジション、のようなイメージです(伊藤直也さん的な?)

ビジネスより技術が好き!でスタートしたこのキャリアですが、結局ソフトウェアは人が開発するものであって、どんな開発現場でも人の問題が絡んできます。社員のほとんどがエンジニアという現職でも人の問題は起きるし、これまでの経験においても人の問題でプロジェクトが上手くいかなかったりしました。

そういう時に、エンジニア間で起きる問題を上手く解決し、適切にリスクを考慮して意思決定をしてくれた人が前職には数名いたのですが、彼らのような振る舞いはどんな開発チームにいっても必要になる振る舞いで、またそれが出来る人が非常に少ないと感じています。 大体エンジニアは自分含めて変な人が多いですし、そういう人の気持ちを理解できる立場でありつつ、上手くまとめて開発をワークさせる仕事はビジネス的に価値があると感じているし、何よりそういう人に自分が憧れました。

そういうポジションで働くことが出来るのが今の会社なのか、はたまた別の会社になるのか分かりませんが、その時はその時で自分にとって最善の選択をしたいと思います。

自分がなりたい自分になるために

これまでの自分の転職の目的は、どれも「自分がチャレンジしたいことをするため」という感じでしたが、それが実現できたのも自分がそれぞれの企業でスキルを磨いてきたからだと思っています。 なんだかんだでエンジニアはスキルが重要なので、やりたいことをやろうと思ったら常に自分を成長させ続ける必要があると考えています。

@kwappa さんの「The Art of Job Hopping」というスライドにも以下のように書かれています。

I'm happy because I could escape
I could escape because trained day by day

日々努力を怠らず、これからも一人のエンジニアとして自分を鍛錬し続けたいと思います。