えぐろぐ

https://twitter.com/eggpogg

株式会社STRACT に入社した

10月1日から株式会社STRACTでお世話になっています。入社して1ヶ月が経ちましたが、入社エントリーとして、入社後に感じたギャップなどを書いていきます。

https://x.com/eggpogg/status/1843166742551638179

転職について

今回の転職で意識したのは、「プロダクトにコミットできる会社」であることでした。

これまでは転職の際、自分の成長を重視してきました。特に前職では、Androidエンジニアとしてのキャリアが長く、自分の成長が鈍化していると感じたため、スキルの幅を広げたいという理由で入社しました。入社後はフルスタックでの開発を経験し、エンジニアリングマネージャーや開発部長としての役割も担いました。スタートアップのシード期から参画したことで、開発組織の形成や採用、会社の成長を間近で経験し、自信と多くの経験を得ることができました。

エンジニアとしてもマネージャーとしてもスキルは伸びたものの、「プロダクトを中心に据えた転職」をしたことがなかったため、今回の転職では自分の成長よりもプロダクトの成長に全力で取り組める環境に身を置きたいと考えました。

(もちろん、これまで働いていたプロダクトにも全力でコミットしていましたし、自分はどんな環境でも適応してきたと自負しています!)

どんなプロダクトだと自分は全力で挑戦できるのか?

この問いを考えたとき、やはり自分がユーザーとして日常的に使い、生活を豊かにしてくれるプロダクトに関わりたいでの、以下の軸を満たすプロダクトを探しました。

  1. ドッグフーディングできるプロダクト
  2. 周りの人に勧めたくなるプロダクト
  3. まだ成長途中のプロダクト

小さなプロダクトを選んだのは、成長の過程を間近で感じられ、また、自分のスキルが発揮しやすいと考えたからです。自分には突出したスキルがあるわけではありませんが、幅広い開発経験と様々な知識を活かせるのは、スタートアップだと思ったからです。

その他の条件は二の次で考えました。出社(一部リモート可)、報酬や役職、ワークライフバランス etc...

入社前の印象から入社まで

YOUTRUSTでスカウトを受けるまでは知らない会社でした。

シードラウンドだがアプリは 100万DL されており勢いがある会社でプロダクトに対してはよくある価格比較アプリだよなぁ💭と感じました。ですが、ECのサービスには興味があったので面談をしてもらいました。

ただ、面談を通して、組織やプロダクトの課題や方向性について話を聞き、ワクワクしたのを覚えています。そして、プロダクトや現状が自分の軸に合致しており、方向性にも共感したため、選考に進むことを決めました。

その後、選考の一環として業務委託で関わりながら、自分の役割や期待値、プロダクトの方向性について話を重ね、オファーをいただき入社を決めました。

1. 組織拡大フェーズ

プロダクトは PMF ができつつあり、開発ラインを増やすために組織をスケールさせていきたいフェーズでした。 そして現状では 社員が4名 と業務委託の方々で 回していることに本当に驚きました。100万DLもされてユーザーもついている状態で!

2. CEOががっつりコードを書いている

CEO (伊藤さん:@hkrit0) が開発をして、ドキュメントを書き、保守/運用 をしつつ新機能の開発をしてPdMをしている会社だったので、エンジニアリングにもすごく理解がある会社でした。 そして自分もスタートアップでの経験が長く、プロダクト志向よりのエンジニアだったので、初回から伊藤さんの考えは自分と似ているかもと思ったのを覚えています!

3. プロダクトの方向性が面白い

プロダクトの方向性については、最近のICCのブログを見てください!

入社後の印象

入社して1ヶ月ほど経ちましたが、業務委託期間を含めると3ヶ月ほど関わっています。面談後からの印象も含めてですが、以下のことを感じています。

1. プロダクトとコードの複雑性が高い

アプリやWebサイトだけでなく、Safari拡張機能を使っているため、他のサイト内での動作もプロダクトの一部となり、全体の構成に非常に高い複雑性を感じます。

また、多くの商品データを効率よく収集・管理しなければならず、コードとインフラ構成が密接に関わっていて興味深いです。データ分析基盤やBIツール、社内管理画面、他社との協力プロダクトまで構築しているため、認知負荷は非常に高いですが、開発はとても楽しいです。

2. 開発ドキュメントが充実している

開発環境構築からTips、システム障害対応までドキュメントがしっかりと揃っており、前のメンバーに感謝です。モノレポで管理されている23個のパッケージも、1ヶ月ほどで把握できるようになりました。

3. さまざまな面でギリギリの状態

スタートアップなので納期やスケジュール、組織、採用、お金など、ギリギリな点も多いですが、関わっている皆さんが楽しそうに開発しているので、こちらも楽しく取り組めています。

今後

会社からの期待値は スーパーマンみたいな CEO から開発全般を引き継ぎ「開発組織をいい感じに整えること」です。それを達成するため、外向けにプロモーションも内向けはリーダシップを頑張っていきます。情報発信は苦手でしたが、今回こそは頑張ります!

会社のPR的なツイートなども増えると思いますが、「頑張っているんだなぁ」と見守っていただけると嬉しいです。よろしくお願いします!

ちなみに
PLUG のサービスのアイコンは ぶたさん ではなく、 ロケット🚀 で サービス名は plug-in(プラグイン) の plug からきているとのことです!

ROUTE06 を退職する

ROUTE06に入社して4年たち、そのタイミングで退職をする。

会社の創業タイミングに業務委託でジョインして最後は部長職までやり退職するので、自分としては大きな決断をしたので、そのことをメモを残しておく。 

 

退職の背景は、

自分のスキルが他の環境でも発揮できるのか?を知りたくなったから。この4年間でマネジメント、技術の両方で成長したと感じるが、それは組織に守られているだけで井の中の蛙になっていないか?スキルとして身についているのか?を知りたいと思ったからだ。 

 

やってきたことは、

今の会社には本当に色々と経験をさせてもらった。Androidエンジニアだった自分をSWEとして雇ってもらい、サイトの立ち上げをいくつか経験した。 

そのころにmeetupにも出たりした 

https://route06.connpass.com/event/223618/

 

SWEの次はEM(エンジニアリングマネージャー)になり、ピープルマネジメントやプロジェクトマネジメント、開発組織の構築などをやってみた。 

特にプロジェクトマネジメントにガッツリ入り、ステークホルダーやメンバー、チームを超えたコミュニケーションを取り全体の調整を行った。チーム、プロダクトの両方の観点から現状を把握して、理想と今のギャップを明確にし、登り方やアクションを取っていく。その実行力を身につけた。 

ピープルマネジメントも徐々にメンバーから信頼をもらえて、チーム作りができてきたと感じた。 

 

その次にPO(プロダクトオーナー)を経験した。この頃に1:Nのコミュニケーションや、スタンスの取り方、決断力(そのためのインプット)、未来志向が徐々に鍛えられた。 

 

最後に半年ほど部長職もやらせてもらった。予実管理やメンバー評価、拙いながらも数字もわかるようになった気がする。 

 

いいことばかり書いたけど、失敗もたくさんした。なんなら失敗のほうが多い。これは別で書きたい。 

 

次は、

決まっていない。今は有給期間中でどうして行こうかな…💭と検討中

プロダクトづくりがやっぱり大好きなのでガッツリやれるところかな。

 

1年前にインタビューで答えた通りでこのあたりが自分の強みなので、それが発揮できる職場を探していければと思う。 

 

ここ数年で、自分の強みはプロジェクトを推進する力や、人とのコミュニケーションの部分にあると見えてきたんです。その強みを生かせる環境や組織にいたいですね。

ref ROUTE06エンジニア対談 - エンジニアリングマネージャー加藤が大事にしていること - ROUTE06 Tech Blog

 

最後に、

短い間でしたが大変お世話になりました。おつかれさまでした!

ROUTE06 に転職して 2年 たった

やったこと

  • Webアプリケーションの開発・運用
  • 面談・面接
  • Professional Service の開発組織作り
  • メンバーとの 1on1
  • ルートシックスラジオ出演

2022/01 から Professional Service の エンジニアリングマネージャー のポジジョンで働いている。といっても開発メンバーが少ないので、プレイングマネージャーとしての動きが多かった気もする。

今のチームの課題と状態

会社も 3年目 で最近は資金調達で大きなプレスリリースもあり社内は慌ただしい感じもある。それにありがたいことにメンバーも増えてきている。

今は複数の PJ が並行して動いているので、3年目の会社なのに複数のWebアプリケーションの開発の新規開発やグロースをしている状態である。

その状態の会社での僕の役目は Professional Service で PJ を効率よく進めていくための開発組織作りにフォーカスして働いている。

今まではプロジェクト毎にアサインされるエンジニアが得意な言語やFWを利用する流れだったが、複数案件を効率よく進めていくために、BE は Kotlin (SpringBoot) 、FE は React(Next.js) を採用するように進めたり、進め方を型かしたりドキュメントを残して属人性の排除や再現性を持たせるように進めている。

という感じで、ドキュメントや文化を作り進めている状態である。

ADR を導入している PJ もあり、ドキュメントドリブンの良さを自分自身が身を持って実感していたりする。

今後

僕自身としては、 EM として致命的なのだけど言語化や情報発信が得意ではない。。。ので、今後は鍛えていきたいと思っている。意味のある洗練された情報発信がすぐにはできないかもだけど、考えながら進めて力になって、会社の役になればと思っている。

チームとしては、メンバーや PJ が増えても、新規開発やグロースをスムーズに進めていける開発体制の基礎づくりを進めていく。

会社としては、順調に進んでいるように外部からは見えているかもだけど、社内はいい感じにカオス感はある。メンバーの増加 や PJの増加 など、要因は色々とあるのだけど、今年・来年あたりは特に山場の年になると思っているので、体を壊さない程度にやっていけたらなと思っている。

読んだ本

初めての マネージャー 経験なので、まずは色んな人がおすすめしている本をざっと読んでいる。

今まで読んできた技術の参考書とかと違って、自分の経験と状況の読むタイミングで受け取り方が全然違うので、繰り返し読んでいこうと思っている。





おわり

という感じで 1年ぶりの投稿だったけど、元気にやっております!

そもそもなんで EM になったの?な部分は別途投稿する。

まだまだ外部発信に慣れていないので、ゆっくり確実にやっていきたい。
ただ、 EM になって後悔はしていないし楽しくやってはいる。

ROUTE06 に転職して 1年 たった

※ なんとなく撮った最近の写真

転職して1年経ったので、その振替しとログ

なにをやってきたか

受託開発がメインで 1 年間で大小さまざま案件に関わった。(4 プロジェクト?)

プロジェクト毎にドメイン領域が違うので業界用語やエンドユーザーの特性など違っていて、関わる会社も違うので、進め方やステークホルダーもバラバラ。。。だけど社内のPMの方々が上手いこと舵取りしてくれていて、それが原因で開発が進まないってことが無いなと感じる。(本当にすごい!!)

大きなプロジェクトだと 9 ヶ月くらい関わっている。何をやっているかは言えないけど OMO ( Online Merges with Offline ) の Web システムの新規開発などなどやっている。

バリバリのスタートアップなので、分野分けなどは無いので全部やっている AWS のインフラの構築からサーバーサイド、フロントエンドと。

毎日が手探りで Try & Error は繰り返しながら進んでいる。なので、成長はすごく感じる!(その分小手先だけがうまくなっているエンジニアになっている気もする.... orz )

これから

毎日コツコツとやるしかない。 けど、30代になってしまったので、これからどういうキャリアパスを進めていくのか、色々考えながら進めて行く予定...

まとめ

もっとちゃんとしたブログとして書きたいなと思ったけど、自分の文章力だとこれくらいが限界なので転職して 2 年経ったのときはもっと書けるよう精進します

おわり 🔚

Vuex で変更通知が正常に動かなかったときのメモ

State の初期値を undefined で初期化するときに
以下は正常に変更通知を受け取れるが

export type StateType = { hoge?: Hoge}
export const state = (): StateType => ({
  hoge: undefined
})
export type ConfigState = ReturnType<typeof state>

以下は変更通知を受け取れない

export type StateType = { hoge?: Hoge}
export const state = (): StateType => ({})
export type ConfigState = ReturnType<typeof state>

色々とネットを見ていると以前は undefined の初期化でもだめだったぽい?

Intellij x husky x nodenv 時に pre-commit が失敗したときの対応

Intellij IDEA で日頃開発をしており、Project で npm の husky を使って、 pre-commit 時に lint チェックをしていたが、 Intellij 内の Git から commit をしたときだけ以下のエラーになりcommit が正常にできないことがあった。

※ terminal から git commit する場合は正常に動作する

12:42 Commit failed with error
  0 file committed, 8 files failed to commit: test
  error project-name@1.0.0: The engine "node" is incompatible with this module. Expected version ">=14.16.x". Got "14.8.x"
  error Commands cannot run with an incompatible environment.

node 14.8.x は mac の system node のバージョンだったので、 husky 実行時に nodenv による切り替えが正常に動作していないっぽい💦

調べると、 ~/.huskyrc に以下を記述すると nodenv で指定する node version で husky が実行されて解決した 👀

if command -v nodenv >/dev/null 2>&1; then
  eval "$(nodenv init -)"
fi

github.com

NestJS のMiddleware 内でModuleのServiceを使用する

たいした話ではないけど、実装中にハマったのでメモ 📝

MiddlewareはInjectableのデコレータをつけて、 NestMiddlewareをimplementsして、useメソッドを実装すれば使える Injectしたい値は他のControllerなどと同じで、constructorで設定をしてあげれば良い

// sample.middleware.ts

@Injectable
export class SampleMiddleware implements NestMiddleware {
  constructor(private readonly hogesService: HogseService) {}
  
  use(req: any, res: any, next: () => void) {
    this.hogesService.moge()
    next()
  }
}

Middleware | NestJS - A progressive Node.js framework

外部で使用されるクラスはModuleデコレータの
exportsに渡してあげれば外部で使用させることができる

@Module({
  exports: [HogseService],
})
export class HogesModule {}

Modules | NestJS - A progressive Node.js framework