コンフォートゾーンを飛び出してみるという事(転職して3ヶ月経ちました)

f:id:ikkitang1211:20210526000331p:plain www.ikkitang1211.site

3月に転職して、早3ヶ月弱が経ちました。
いい機会なので、ここらで振り返りブログを書いてみようと思います。

目標振り返り

目標というより転職時のブログから、ちょっと振り返って見ようかと思います。

  • めちゃくちゃ強いエンジニアの方々がいる気配を感じた事
  • 今まさに技術的な課題などの解消に取り組んでいる時期で話を聞いてめちゃくちゃチャレンジングで面白そうな仕事だった
    • 今後のキャリアの礎として技術的な課題の解決方法力みたいなものを生の体験から学びたかった
  • TypeScript とか JS でプロダクトコードを書く経験を詰むことができる
    • 実質未経験
  • エンジニアの数が多いのでチーム開発の知見がめちゃくちゃ得られると思った

TypeScriptでプロダクトコードを書く経験を積む

こちらはまあ何というか普通にさせて頂けているな、という感想。

キャッチアップもそこそこにできているかな、という感覚もあるし 最初ほどTypeScriptのコードを書くのも読むのも苦手意識は無くなってきたなという感じです。

とはいっても、別に僕が取り立てて TS力が強いかというと別にそうでもなくて、 他の言語ならこう書く を TS で書いてるだけみたいな感じもありますね。

で、それなりに苦戦中の所もあって DDD文脈の設計手法 が取り入れられていたり、 Action Domain Responder って設計手法が取り入れられていたり...でこれらが今発展途中のコードという所もあり 「こうなのか?」 みたいなのをいつも 探り探りやっているような感じです。

こればっかりは教えてもらえるような事でも無いので、プライベートでコードを書くなどしてそっちで失敗して、プロダクト側に貢献していく必要があるなというのが最近の所感ですね、頑張らないとですね。

アウトプットするという事

前職では 当時のCTOのそーだいさんをはじめとして コードを書くにあたって参考になるような指針を色んな人が書いてくれてたので、それが理解の手助けになってたりしました。

speakerdeck.com

こういうのを自分もやっていかないといけないな、っていう課題感も感じています。

自分は、主に テーブル設計とAPI開発という部分を今の会社では担っていますが、テーブル設計は 結構これまでの知識でも戦えている感覚です。

テーブル設計を行ったときは、ドキュメントでアウトプットするようにしました。

  • 捉えた仕様やそのリンク
  • 実テーブルのER図
  • 今回の設計で意識した所
    • 制約をどのように使っているか
    • 仕様をどのようにモデリングして落とし込んだか
    • 今の要件としては無いけど、今後出てきそうと思っている部分
  • スコープアウト部分
  • 参考にしたモデリング

こんなのを Markdownにまとめて、Github管理として共有しています。(読み合わせ会みたいなのを不定期で開催したりもしています。) ドキュメントの作り方とか、意義とかは 前職で技術顧問をして頂いてた 川島さんの実践ADRから着想を得てます。

scrapbox.io

自分が学べてきた部分はしっかりチームの方々に伝えていきたいと思いますし、逆にそれを持ってフィードバックを得られるような良い文化になればいいなって気持ちがありますね。

ADRとかDDDとかの部分も自分の言葉で言語化して、アウトプットしないとな、と思います。

エンジニアの数が多いのでチーム開発の知見を得る

他チームの知見を得られているか というのは、正直あまり実感は無いのですが、自チームについての知見は得られていると思います。

自チームは スクラム開発って開発手法を取り入れています。

codezine.jp

聞いたことあるけど、実際はどんなものかしらない っていう開発手法だったので、そういう意味で良いチーム開発の体験を得られているな、という感覚もありますね。

スクラムについては、この本が役立ちました。 割とこれを読んでざっくり理解して 取り敢えず実践しているという感じです。

仕組み的に自分のタスクだけじゃなくて、チームメンバーのタスクにも目を向ける開発手法なので割と JOIN したての頃は色々とドメイン理解が深まるので良いですね。

めちゃくちゃ強いエンジニアの人が沢山いる(ので参考にして成長する)

ここがまあ、苦しんでいる所ですね。正直ベースでいうと。

割と自分は 10ステップある内の 2~4 の部分だけを理解して 後は実践の中で 5~7 ぐらいまで補っていって、0~2 / 7 ~ 10 は必要になったら学ぶか・・ぐらいの感じで成長してきたと思っています。

なので、結構スキルセットとしては、 2~7のステップの中で程々に抑えているぐらいの所が多くて、ちゃんと理解できている技術が無いな、というのが自分のコンプレックスだったりします。

現在の会社では、やっぱり そこは普通のレベルで求められていて 「〇〇は理解してコードを書きましょう」 みたいなフィードバックが日常でも飛び交っているな、と思いますし 「〇〇は普通に書けるようになりましょう」 だったり 「Model層の認識を取り違えているエンジニアが多いので気をつけた方が良いよね」みたいなのとか。 やっぱちゃんと体系立てて物事を学んでいった人達は多くて、そういう人達が沢山居る中で形成された暗黙の組織文化みたいなのがあるな、と感じています。

なぜ俺はあんな無駄な時間を・・・(画像略 って思いながら日々生きていて、そこをちゃんとやらない限り自分の成長ってのは無いんだよなぁ、というのをひしひしと感じています。

3ヶ月を総括して

前職は本当に自分にとってのコンフォートゾーンだったんだな、というのをひしひしと感じています。

別に前職で、楽だと思った事はそんなに無かったのですが、3年間 開発してきた中でドメイン理解は十分にありましたし、 DBリファクタリングWebサイトのリファクタリングの中でそれなりに このプロジェクトではこんな感じで設計すると良い、みたいなのも自分の中でありました。

転職先は、初めての言語 ・ 初めてのスクラム開発 ・ 初対面のチームの人たち、 初めてのプロダクト開発、またこれまで経験してきた中でもっとも大きなサービス規模、色んな乗り越えるべき課題があって、やっぱりその中で 良いアウトプットを出していくのは難しいですね。

そういう難しさや苦しさを感じている日々ですが、自分が成長できてより良いアウトプットを出せるようにする良い成長機会と捉えて、またやっていきたいなと思います。

飲み会したいね。 お疲れ様でした。