[エンジニア日記]東京進出!レベルの高い開発現場に入った時の苦悩と教訓

こんにちは。はるまきです。僕はソフトウェアエンジニアです。この記事を書いている時点で3年目になりました。3年目に入るタイミングで大阪から東京に移り、レベルの高い開発にアサインされました。その時の苦悩や思っていたことをご紹介したいと思います。

これからエンジニアを目指す方や、エンジニアになりたての方への教訓になれば幸いです。

Harumaki
Harumaki

完全に個人の主観でゴザイマスル!

僕の経歴

僕は今25歳です。文系の学部を出て、新卒でエンジニアの道を選択しました。将来はコミュニティ作りに関わるWebサービスを副業でも会社員でもなんでもいいので自分の手で開発したかったからです。新卒で入った大阪の会社はSIerで組込系に強い会社でした。アサインしたプロジェクトは大手鉄道会社の電光掲示板やアナウンスなどのシステム開発でした。

それから半年も経たずに転職しました。理由はWebにあまり関われなかったからです。新卒の時の業界調べが甘かった。。組込系とwebの間に大きな違いがあることを新卒の時は知りませんでした。 何事もきちんと調べる出来ですね。

転職には苦労しました。業務をこなしながら自分でiosアプリなどのポートフォリオを作成し、なんとか転職しました。転職した先は同じくSIerでした。SIerでもベンチャー精神が強くさまざまなことにチャレンジできそうなことからこの会社(現職)への入社を決めました。Web開発に少なくとも関われることも大きかったです。

入社しました。初めてアサインした案件は、大手保険会社のシステム開発でした。ご存知の人もいるかもしれませんが、ゴリゴリ開発したい人に大規模開発はお勧めしません。理由などは以前の記事で書いていますので是非ご覧ください。

僕のその現場は大規模開発でした。業務知識(プログラミング言語関連の知識ではなく特別な造語やそのシステムだけに使われる言葉など)が非常に多く、プログラミング関連の知識は正直身についている実感はありませんでした。トータルで1年5ヶ月ほど、その案件を担当しました。Web画面の作成の担当者でしたが、実際にコーデイングしたのは全体の30分の1くらいでしょうか。

アサインしている間、これではいけないと思い、何かできることがないかを模索し始めます。大手保険会社のシステム開発に関わり始めて1週間くらいのタイミングで、アクアリウム専門の質問サイトの開発を始めます。(自分でスキルアップしてやる!と思い。)駄作ですが、こちらです。

余談ですが、SESはスキルがないと自分の望む現場に入ることが難しいです。スキルがない人はスキルが身に付く案件に入れないので、ますますスキル差が開きます。これを僕はSESのデフレスパイラルと勝手に呼んでいます。

そのほかに自社開発のプロジェクトがあったのでこれにも自主的に参加しました。全てはスキルと実績を作るためです。僕はゴッドと呼ぶ最強エンジニアをリーダーに5人くらいで自社プロダクトを開発しました。日中業務と並行して7ヶ月ほど所属しました。1日辺りの作業量は平日で2h,休日に10h(休日出勤)くらいです。日中業務に比べると開発スピードは劣っていましたが、僕にはすごく新鮮味のある開発でした。楽しかったです。

少し整理します。この時点での僕のスキルは以下です。

  • html,cssを使い大まかなデザインを作成することができる。(細かいところは苦手)
  • JavaScriptを使いDOMを操作できる。ただし簡単なもの。
  • Vue.jsをなんちゃってで記述できる
  • サーバーサイドのMVCモデルを知りデータの流れを追える
  • git,dockerなどを指示を受けながら操れる

上記の出来事は大阪にいる時のものです。前置きが長くなりましたが上記の頼りないスキルを持って僕は東京に進出します。理由はもっとスキルが欲しかったからです。SESでは面談があります。昔から人よりも少しだけ饒舌です。言葉をいい感じに使い自分を盛ってしまう悪い癖があります。そのせいで?そのおかげで?自分の望んでいたレベルの高い開発現場にアサインすることができました。しかし。。。。。

苦悩1 圧倒的スキル不足に伴う不甲斐な

まず初めの苦悩です。現場のレベルが高すぎてスキルのキャッチアップが追いつかなく、常に不甲斐ない気持ちでいっぱいでした。圧倒的敗北感。。。!

現場のレベルが高いという意味を明確にしたいと思います。僕は「求められる機能が相対的に高度」「期限が短い」かなと考えます。求められる機能が相対的に高度というのは、自分の今持っているスキルでは対応するのが難しいということです。僕ははじめ、業務連絡グループや商品検索機能の作成を担当しました。

僕自身のスキルが足りなかったと思ったのは主にインフラとバックエンドです。フロントはVue.jsの経験がありましたので、経験年数が高いけどフロントはあまりやったことがない先輩よりも、(ある意味当然ですが)早く正確に実装できたりもしました。しかし問題はインフラとバックエンドです。特にインフラ!インフラ系の知識が足りなさすぎて以下のことに手間をとりました。

  • DockerやVMの調子がおかしいと解決するのに人よりも時間がかかる。
  • DockerやVMの調子がおかしいと人に聞かないと解決できない時がある。
  • 開発環境の中でどのようにデータが流れているのかを正確に把握していないので、他者との会話についていけない時がある
  • バグが検知されても、それがソースコードが悪いのかインフラが悪いのかの判断がつかなく、解決に時間がかかる

またバックエンド系も処理が複雑になるとバグ改修が難しかったです。知見が少ないので、データの流れをスムーズに追えないんです。PrivateAPIを作成していたのですが、コンテナがいくつも立ち上がっていて「どのでエラーがでてるんだーーー?!」と常になっていました。

スキル不足があると時間がかかってしまい、「なんで僕はできないんだ。。。」と自分を追い詰める考え方になっていました。

苦悩2 コミュニケーション不足&孤立

スキル不足からミスや期限の再延長などが目立つようになります。決してサボろうとか手を抜こうとしているわけではありません。もちろん。ですが、結果として、周りの期待に答えられない状態になっていました。たくさん怒られもしましたし、失望もされたと思います。

例えば、実装作業をしていて疑問が浮かんだとします。「AはBか?それともCか?」

こんな時、普通であれば自分である程度調べてから、それでもわからなければ同期や先輩に聞くと思います。僕も初めはそのような姿勢をとっていました。コミュニケーションは好きですし、認識齟齬も後からめんどくさいことになることを経験上知っていたので。

しかし、何かを尋ねると、(私のスキル不足が原因の根本だとは思いますが、)

「いやいや、これはこういうことだよ?〇〇は調べたの?」

「すぐ人に頼りすぎじゃない?サボろうとしてない?」

などの言葉をいただくようになりました。

次第に人に聞くのが怖くなり始めました。少しずつコミュニケーションを取る回数が減っていきました。リモートワークということもありましたが、ほとんどコミュニケーションを取らずに終わる日もありました。

悪いスパイラルの始まりです。。次第に僕は孤立していきました。

苦悩3 業務が忙しい&ストレスで学習時間の確保が難しくなる

僕は勉強が嫌いではないです。(大好きとは言っていない!)新しいことにチャレンジすることも好きです。プログラミングの知見を活かして何か世界にアウトプットしたいと思い、いろいろと手を出してきました。詳しくは僕のプロフィールから飛んだ先でご覧くださいませ。

話はもどります。スキル不足が常にあるのだから人の2倍も3倍も勉強しなければ!と思います。しかし、業務が忙しいと学習時間の確保が難しいです。現場の業務が忙しいです。直近で言うとゴールデンウィークはほとんど働いていました。笑 

また、上記の苦悩1,2から日中はすごいストレスがかかっていました。プレッシャーもかなりかかっていたので、業務が終了すると「ふぅっぅぅぅっぅう、終わった。。。。」という気持ちになります。業務後にゴリゴリに学習する気持ちにはあまりなりませんでした。(土日を使って学習はできる限りしていました。)

結果として業務に追われるだけで、重要な根本的な理解(?「なぜこうなるのか」などの応用に繋がるであろう知見のことをここでは意味します)をすることが難しかったです。具体的な例で言うと、初めてvuetify(Vue.jsのUIフレームワーク)を使うとなったときに、特に何も考えず「とりあえず動くものを作れ!」という姿勢で、ゴリゴリ実装していくことになります。普段であれば「なぜそれが動くのか?」「どうすればカスタマイズできるのか?」を調べながらやるのが他に使用する時にも応用できるので好きなのですが、それができない。

ストレスフリーに学習できる時間って重要だなって思いました。

それでも理想を求め続けるか?苦悩の果て

以上のように、苦悩があり、ストレスフルな毎日であり、業務中のコーディングはあまり面白いものではなかったです。エンジニア向いていないかもしれないと130回は思いました。それでも今こうして土曜日にブログを書き、業務外で友達とアプリケーションを開発しているのは、色々と考えを改めたからかなぁ〜〜と思います。きっと同じ境遇のエンジニア(もしくはそうではない方も)がいると思いますのでいくつか共有させていただきたいなと思います。

できない自分を受け入れること

僕らは理想が高い。きっと若い頃は特にその傾向が見られるだろう。僕自身もかなり理想が高い方だと思います。これくらいはできて当然!とか思っちゃう時もあります。ですが、実際問題、できないものはできないです。背伸びをしても仕方がない。背伸びをしてもその瞬間はいいかもしれないけど、結果的に苦しむのは自分です。もう背伸びは懲り懲り。でもそうかといって等身大の自分を受け入れるのは勇気がいりますよね。できない自分を認めるのは簡単ではない。

でもバートランドラッセルの「幸福論」(大阪の実家から持参しててラッキー)にこんな言葉がありました。

自分の悩みがいかに小さいなものかを悟ることで、ずいぶんと多くの悩みをなくすことをができる

ラッセル大先輩

いやー救われましたねー。別に僕の悩みは僕にとってはくだらなくはないんですが、世界から見たらすごいちっぽけなものだと思いました。

そして、できない自分を受け入れることにしました。できない自分を受け入れて、そこからどうしていくか?今日でリセットされたと思って、ここからどうして進んでいくか?を考えるようになりました。

すごい不思議なんですが、結構ストレス減るんですよねぇ。。。

どっかの誰かが言ってましたけど、自分を完全に否定するのはよくないらしいです。肯定的な否定をすることが大切らしいです。人間性全否定はツラタンタンですもの。

人生は常に TO BE Continueなのだ!!

自分を受けれたら、次は再スタートですよ。ここからどうするか?僕はできない自分を受け入れた(つ・も・り)なので、色々と計画を練りました。

  • コミュニケーションから逃げようと思ったら、時間がかかってもいいからテキストでもいいからコミュニケーションを取る
  • ランチに積極的にいく。まずは人間関係の構築じゃい!
  • リーダーに仕事を振られたら、まずできないことを明確に伝える!→canとwantの境界線を明確に
  • 業務外で学習をする。→今は友達とアプリ開発をNuxt.jsでやっちょります
  • 認識齟齬がないようにひつこいくらい確かめる。食べ飽きるくらいのホウレンソウの徹底する。

最後に

将来は副業でもいいから自分でサービスを作りたい。コミュニティが、人間のハッピーを決めるのだと、青二歳ながら考えているので、コミュニティ作りに大きく貢献できるサービスを作りたい。そのためにも僕は日々いろんなことにチャレンジしているし、苦しんでもいる。うむ、悪くないではないか!

最後に、バートランドラッセル大先生の本に救われました。あざます!

幸福論、呼んだことない人はまじでおすすめっす。

最後まで読んで頂きありがとうございました!

ブログって書いてるとストレス発散になりますね。今気がつきました。