あなたが一番パフォーマンスを出せるのはどんな環境ですか?
- 議論し合える環境
- チームで開発を行っていくなかで、コードレビュー・DesignDoc・振り返りなどの様々な場面でチーム内で議論を行っていくことでより洗礼されたプロダクトが出来上がると私は考えています
- そのため全員がフラットに意見を出し辛い環境であったり、余裕がない・議論に価値を感じていないために意見が出ない環境では内部・外部のどちらの品質も低下したものをユーザに提供することになってしまい、結果的にはプロダクトが事業の足を引っ張ってしまう状況を作ってしまう可能性があります
- このような環境下では開発体験も悪く居心地の悪いチームになり、パフォーマンスが出し辛いと考えています
- そのために議論し合える環境を構築するためにチームメンバー間が互いにHRTを持ち、本来の意味でのマイナスの意見が言いやすい心理的安全性が醸成された組織になるようにできる限り努めます
- フルサイクルに開発が行える環境
- 課題・要望を上げた人に話しが聞きにいける環境
- 私はエンジニアリングは「課題」を解決するために行っていると考えているため、ただ仕事を任されてやるのではなく任された仕事が「何を」解決したいのかという本質に立ち返り、必要があればエンジニア側で当初のアプローチとは違う方法を取っていく必要があると考えています。そのため当初の要望が出た人に話しが聞きに行けないような環境下では的外れなものを作る可能性があるためパフォーマンスが発揮できないと考えています
- ただし信頼のおける専任のPdMが存在し、プロダクト全体を俯瞰して優先度を整理して必要な機能を選び取り「How」だけでなく「Why」「Why not」とセットで開発要望を出してくれる・定期的に共有してくれるのであれば直接要望を出した人に話しを聞きにいけるような環境ではなくてもよいです
- 分野横断で活動しやすい環境
- ユーザに機能を提供するまでに横断する組織が増えれば増えるほどリードタイムが発生して、コンテキストスイッチが増えることで認知負荷が上がりパフォーマンスが下がると私は考えています
- (例: リリースする時に他部署の承認が必要、インフラ専用の部門じゃないとインフラに触れない・作れない、APIのスキーマを変更するためにバックエンドチームの開発を待たないといけない、etc)
- そのためフロントエンド・バックエンド・インフラ・運用・QAなどリリースするために必要なものは全て1つのチームで完結している自己組織化された状態ならパフォーマンスが発揮しやすいです
- リードタイムが発生しないように組織のコミュニケーションパスや運用が整理されているならあまり気にはしない