金融系SIerからWeb系エンジニアに転職して2ヶ月が経った
12月に金融系のSIerからWeb系企業に転職して2ヶ月ほど経ったのでブログを書いてみようと思います。
SIerからの転職エントリはたくさんあれど、そこから生き残っているという話が少ないというのを耳にして、自分は運よく生き延びてますという話です。このままいけば試用期間で切られることはなさそうです。本当に運がよかった。
前職について
前職はいわゆるユー子でした。SIerピラミッドの元請け、あるいは0次受けと言って通じるでしょうか。
そこで9年くらいSIerとして仕事をしていました。前職の最終的な職種は?と聞かれたら自分は「エンジニアではなく、プロマネ兼ビジネスアナリストです。」と答えます。システム開発のプロジェクトに関わっていましたが、最後の5年くらいはプログラムを自分で見たり触ったりすることはなく、要件をまとめ、プロジェクトを管理し、交通整理をしてプロジェクトを前に進める仕事が中心でした。
VSCodeもGitも入っていない、3ギガのメモリを積んだPC上で、エクセルとパワポとメールをひたすら使って、調整、調整、調整。打ち合わせ、打ち合わせ、打ち合わせの毎日です。残念ながら、僕の力量不足もあって、プロジェクトが円滑に進んだことはなく、常に何かしらの問題が発生し、それをなんとかユーザー、協力会社の方の間に入って調整していくという仕事です。ただ、超絶ブラックというほどではく、月の残業時間は60時間〜70時間を前後するという感じで、残業代もちゃんと出ていたので給料はそこそこあったと思います。
プロジェクトを前に進める役割を持っているのは当社の社員なので、億を超える案件をステークホルダー計50名くらいまとめながら推進していく仕事というのはそれなりに価値のある仕事だと思いましたし、給料も年功序列ながら10年後はそれなりにもらえるなという先輩方の背中がありましたので、このまま会社に残るという選択肢もありました。が、転職を決意して転職しました。
転職理由
大きく2つあります。
一括請負つらい
SIerがネット上で悪口を言われてることの多くは、構造上の問題だと思っています。そしてその構造は業界全体で支えているものであり個人の力ではどうしようも無いということ。
元請けとはいえ、「請け」な構造は変わりません。プロジェクトベースの仕事、即ちそこには有期で達成しなければならない目標があり、限られたお金があり、限られた人しかいません。
ウォーターフォール型でかっちりできればいいんでしょうが、要件定義時に業務の全てを網羅的にドキュメント化することは不可能で、どこからともなく「アジャイル要素を入れて」とか何とか言われ、仕様変更は当たり前。
「でも期限は守ってね♡」
協力会社も請負契約なので守るべきところは守ってくる(当たり前)ので、元請けの仕事は、ユーザー無茶な要求変更を退け、協力会社さんに無茶をお願いしてまわる、というのが基本的な「調整」の中身になります。
この構造は、一括請負で働く以上は変わらないし、この「調整」をあと30年やっていくのか…と考えたらつらくなりました。
特に最後に担当していたプロジェクトはメテオフォール型開発で、下民の私にはなすすべなく疲弊していきました。プロジェクトマネジメントをしろと言われて、実態はヒトもお金も期限も自分のコントロール下にないという状況が辛かったです。
もちろん、上手くやっているプロマネの方はたくさんいましたし、尊敬していました。
「それが面白いところでしょ!」と言われれば私には適性がなかっただけとも思います。
プログラム書くの楽しい
会社ではプログラミングのプの字もなかったので、プライベートでプログラミングをしてました。phpでまとめのアンテナサイトをフレームワークなしで作ってみたり(その頃はフレームワークという概念を知らなかった)、Rubyのgemを作ってみたり、Androidアプリを作って公開してみたりしました。
どれも別に誰かに使って貰えた訳じゃないですが、手広く色んな言語に触れて、プログラミングの楽しさ、奥深さを感じていました。
それでも、残業が増えたり、子供が産まれたりする過程で自分の時間が消え、家でプログラミングする時間がほとんど取れなくなっていきました。
このままこの会社で耐え忍んで30年過ごすか、エンジニアに転生するか、結論は正直入社して数年で決まってたんですが、プライベートのタイミングが合わなくて、そして担当プロジェクトのキリの良いタイミングを見ていたら30歳を超えての転職となりました。
転職活動
「転職は縁」とはよく言ったもので、運良く縁に恵まれました。
事業が面白そうなところ、直近でプライベートで学んでいたRailsやGoを使った開発ができるところを中心にエージェントに選んでもらって、トントン拍子で話が進み、1ヶ月ほどで転職活動を終了することが出来ました。
実務未経験での転職なので年収は当然下がる想定で元々考えていて、結果としても100万円ほど下がる形でオファーを受けました。
ただこの金額は他の併願していた企業よりも圧倒的に高く評価してもらえた結果で、正直前職で残業しなければこのくらいになるので、大満足の額でした。
転職して2ヶ月で何をしてきたか
今はRailsを中心に担当してます。この2ヶ月で何をしてきたか振り返ってみます。
まず入社して初めにやったことは開発環境の構築です。Docker上に環境を構築するのですが、勉強としてdockerfileを1から作るところから始まりました。
Dockerの存在は知ってましたし、プライベートでちょっとだけ触ったこともありましたが、実際にdockerfileを作ろうとすると、全くお作法がわかりません。ほとんどゼロ知識から始めて、最初に環境が立ち上がってrails sするのに3日、そこからdockerfileの中身を綺麗にして、docker-composeファイルを作って、VS Codeのremote containerでアクセスするまでに更に3日くらいかかりました。
結果として、ゼロからエラーを解消しながら構築したことで、dockerfileで何をやっているのか、compose, volume, networkなど基本的な構造を理解することが出来ました。
続いて現行サービスの理解です。ドキュメントはそんなに整ってなかったので、メンターの方にシステムの全体象とざっくりの業務フローを教えて貰った後、ソースコードをみて、画面を見てを繰り返しながらサービスの知識とデータの流れを抑えていきました。特に他システムとAPIで連携しているところなんかは、プライベートでもやってこなかった所なので理解するのが大変でした。
前職では、データ連携といばCSVのファイル転送とバッチジョブでしたが、今はRESTでAPIで中身はJSON形式です。日々、前職との違いをひしひしと感じながら一人楽しんで学ぶことが出来ました。
だいたい1週間くらいはただひたすら読んでいたと思います。読みながら、画面遷移図を作ったり、業務フローを作ってみたりしました。
この頃からPlantUMLというものを知り、積極的に覚えて使いました。
前職のExcelとパワポ中心の生活が、Markdown中心の生活に変わり、ここでも転職したんだなあという実感が湧いてきました。
そういえばメールも前職では1日に30通くらい書いてましたが、今ではSlackでのやり取りが多く、メールは1週間に数回というレベルです。凄い変わりようです。
さて、そのあとはRSpecの勉強をしました。読めて書けるようにならなければいけません。幸いテストコードは沢山あったので、とにかく読んで実行してを繰り返しました。
ある程度、RailsもRSpecも読めるようになったのが入社して1ヶ月ほど。
そこからは小さなバグだったり、機能改定だったりを少しづつ貰って、実装、テスト、レビューを繰り返しました。
gitを仕事で使うのはもちろん初めてでしたが、これもプライベートで1人プルリクとかをやっていたおかげか、今のところ事故らずに生きてます。
新しい会社での開発のお作法が少しずつ分かってきたところで2ヶ月が経ちました。
今後は勉強会にも参加しながらrubyの真髄をしっかり身につけてレベルアップしていきたいと思います。
働き方
1日の可処分時間が10倍くらいになった気分です。前職ではメール、電話、打ち合わせで日中自分が作業に集中できる時間はありませんでした。定時を過ぎてから明日の説明資料を作ったり、管理表を更新したりする日々でした。
それが今や定例の打ち合わせは週に3時間だけ。あとは突発的な、数分で終わる打ち合わせを除けば、それ以外全て自分の作業時間です。捗りに捗ります。おかげで2か月前とは比べ物にならないくらい、技術的知識が着いた気がします。もちろん、まだまだ初心者なのでこれを積み上げていってそこそこのエンジニアにまずはなれるように頑張ります。
あと、残業はほとんどありません。たまに保育園のお迎えにも行けます。家族で夕飯を囲むのが普通になりました。控えめに言って最高です。
これからの展望
向こう3年は取り敢えず技術を頑張ってみようかなと思います。そこで自分の適性が見えてくるかなと思います。オブジェクト指向による抽象化の真髄、アルゴリズム、メモリ管理など、技術者として普遍的な知識を中心にまずは進めていきたいと思っています。
事業も面白いし、周りの人も良い、エンジニアとしてはたらく環境も良い。モチベーションも自然と高くなります。息切れしないで突っ走れたらいいなと思ってます。
また、転職して半年くらいしたら状況を書いてみようと思います。
今日はこのくらいです。