都内一部上場で業界最大手のIT企業に務めるエンジニアの私が転職したいと考えている4つの理由について。(前編)

About me

割と有名な国立大学の大学院卒、新人3年目。
スキルスタックは、
業務経験あり: Java, JavaScript(ES2015), React.js, apache, tomcat, GAS, Oracle
趣味で開発経験あり: AWS Lambda, AWS API Gateway, Redux, LINE Bot, Cassandra
といったところ。社内・社外それぞれ勉強会での登壇経験もあります。
今は、レガシーシステムの運用保守担当として、ケータイ持って深夜に起こされて対応したりしています。
上記のような新卒3年目 = そろそろ「新人」じゃなくなってくる頃の私が今、心の底から転職したいと思っている理由を、この記事で述べます。

第一象限: 待遇のこと

端的に言うと給料が安い。給与体系が変わってボーナス制になったのだが、これで毎月手取りが著しく減った。
ボーナス込でも年収330万程になる。この数字は去年とほぼ変わっていない。ボーナス制になったお陰でむしろ辞めにくい期間が増えたし、毎月毎月生活が苦しい。
入社してから2年半で人事部長が2人やめたこともあって、給与制度に全く希望がない。新しい給与制度を導入した3人目ももう辞めるらしい。なんなんだろう。
現場を無視して無理な採用計画が押し通された結果、技術組織の立て直しのために中途のエンジニア採用に追われている。自分たちの責任で取りすぎた私達新人は昇進しないし、中途のエンジニアたちはみんな私達よりずっと高い給料でここに来る。私達は、「君らはこの組織のボトルネックだ」と言われながら、エンジニア採用のお手伝いをしている。
更に、こちらに出向中のグループ会社の人は、私達の倍近い給料でお粗末な研修と形骸化したOJTを遺してくれた。ありがたい。
私は現在適用されている給与テーブルの問題もあり、次に昇給するなど夢のまた夢状態だ。

第二象限: 技術のこと

上述したように、私はレガシーシステムの運用保守担当だ。10年間売上を上げ続けてきた、会社の顔ともいうべきシステムを見ている。
10年前のシステムなので、UIは絶望的だ。メンテ不可能なjspファイルがそこら中にあり、メインストリートのサポートがあるんだかないんだかわからないWAFの上に載っている。WAFは前任者の手でカスタマイズされているらしい。どこをカスタマイズしたかは知らない。
サーバではstreamやoptionalなどはもってのほか、未だにジェネリクスの貼られていないmapやtableが無限に存在する。forはint i = 0から始まるし、同じbooleanの変数の生存期間が300行近かったりするし、全ての変数はnull初期化されて一番上でまとめて宣言するし、while(true)がそこら中に打たれている。メンテができないコードも多い。SQL関連が特にそうだ。
3000行近いif-else ifステートメントで構成された処理が、会社のオペレーションの大半を担っている。トランザクション管理が崩壊しており、エラーで強制終了したと言っているのに途中でトランザクションをコミットしており、更には強制終了など実際には一切せずに最後まで処理を続けていたりもした。ここは直したが、同じ処理は今日新たなバグを発現した。10年ものの割に成長が著しい。
私は、同じようにいっぱいいるひとつ下の後輩の指導担当でもある。私が見ているのは二人だが、二人ともこの地獄のコードにすっかり染まっており、書くコードが汚い。
汚染をとくためにレビューを厳しくしているのだが、チームにコーディング規約がないので品質が安定しない。私のレビューの品質は私しか再現できない。なので、一度レビューを初めて手戻りの往復があると、私が毎回レビューすることになる。私が他の案件に追われてレビューを忘れていたりすれば、案件の納期は遅れる。しかも質の悪いことに、ある後輩は納期に対する意識があまりない。
7/31に開始した案件が先週完了したときは戦慄した(コードが汚すぎて直させたのと、汚いコードが直ってきてやっと「仕様を満たしていない」ことに気づき、慌てて直させたのと……という感じで、私はこのコードを6回レビューしている)
「変数のライフサイクルは短く」「ブロックは狭く」「インデントは浅く」「状態を持たない」「変数名はわかりやすく」「early continue, early return, early breakを徹底する」、たったこれだけのことだ。未経験で入社した私でもわかる。GoFのデザインパターンを全部勉強しろと言っているわけじゃない。ファクトリーパターンくらいは勉強しておいてほしいが。
先輩社員は事なかれ主義で、「影響範囲が懸念点なのでここは前と同じで」「とりあえず」というのをよく聞く。先輩社員たちはMTGでも発言がほとんどない。みんな俯いている。責任が取りたくないならMTGに来なければいいと思う。私一人で、なにか喋ってばかりいる。みんなよそよそしい。私が生意気でうるさいから、嫌いな人もいるんだろう。ただ、表面的に空気を悪くするから言わないのかもしれない。私には意味がないと思う。

私は作るものの品質に妥協したくない。この場合の品質は少なくとも「顧客仕様を満たすこと」だ。コードの品質も同じくらい大事だが。
だが現実には、このレガシーの中で変えられない物も多い。
変えられないものが多いので、特にUIや機能的制約で顧客、つまり社内の方の要望に答えられないときもある。そうなると、必然的に私達は妥協してもらう側になる。本当はほしくない、使いにくい、ダサいものだと思われているが、会社が「このシステムが今まで売上を立ててきたんだ!俺たちはシステムの会社だ!このシステムの製作者は天才だ!崇めろ!大事にしろ!」と喧伝するので、そういった声が私達に聞こえない。
私は、だめなものを作ったらだめだと言ってほしい。いいものを作ったときにちゃんと喜んでほしいからだ。
だめなものを改善する前に、次の案件が来る。いつまでも改善を工程として取ることができない。いつもいつも、「これやりたいですね」「時間がね」といって、配属されてから1年半が過ぎた。
私は技術者として、なんのために生きているのか全くわからない。

もっとちゃんと、事業やお客さんに対してコミットできるような専門性と、プライドをもって仕事をしたい。そう思って、毎日胃が痛くて、悲しくて、ずっと泣いている。

長くなったので、残り二象限は後日。

この記事が気に入ったらサポートをしてみませんか?