はじめに
「ただ言われたとおりにつくる」エンジニアになっていませんか?
今回は、エンジニアとしてチームにJOINするとき、私が気をつけていることを中心に紹介したいと思います。「より良いプロダクト」「より良いチーム」をつくるきっかけなどになれば幸いです。
1. あくまでもエンジニア視点を貫くこと
システム化することが仕事ではない
グロースハックのMVPには「オズの魔法使い」という種類があります。
簡単に言えば、「全てをシステム化するのではなくある程度マニュアルで運用できるようにしておく」というものです。
これにより、「システム化」の工数がかからないうえに開発初期の「設計の変更」にもある程度柔軟に対応することができます。特にiOSアプリになると「変更」には莫大な時間がかかってしまいますので柔軟に行きたいところです。
ですからエンジニアは「システム化」することだけを考えるのではなく、「システムとマニュアルのバランス」をエンジニアリングしなければならないと考えます。そしてこれはエンジニアでなければ提案できない設計であることがほとんどなのです。
パフォーマンス最大化のために
近年スマートフォンはどんどんハイスペック化していますが、そうは言っても潤沢なリソースがあるわけではありません。特に、1%の改善を積み重ねていくことが重要視されるグロースハックなどではマシンスペックを有効活用してパフォーマンスを最大化することもエンジニアのやるべき重要なことであると言えると思います。
ですから「なんでもできる」という認識ではいけないと思います。「どのように表現するか」「どのように実現するか」を考えなくてはいけませんし、もちろん「本当に必要でないものは表現しない」という選択も時にはしなければならないと私は考えます。
2. PDCAサイクルを回すときの注意点
スピード重視するあまりの「技術的負債」
開発初期のPDCAサイクルはPMF向上のためにも最小単位ですばやく回していくことが多くなります。その際に注意しなければならないのは「継ぎ接ぎシステム」にしないことだと思っています。
どうしてもスピード重視しようとすると「継ぎ接ぎ」になりがちですが、ここはトレードオフではありません。むしろエンジニアは「スピード重視できるシステムづくり」を考えるべきだと思っています。
簡単な例をあげれば「カプセル化」などでしょうか。おそらくほとんどの場合、「この部分は変化しやすい部分だ」ということを認識できると思いますので、最初からパターン化実装することでその後のPDCAサイクルの実装部分を効率よく行うことができると考えます。
チームメンバーと一体となること
エンジニアには多い現象だと思うのですが、PDCAサイクルを継続し続けていると「機械的」になってしまうこともあるかと思います。
LeanUXの基本でもありますが、チームパフォーマンス最大化も重要な要素です。エンジニアが「機械的」になってしまうと、他のメンバーにも必ず影響しますのでプロダクト開発の中心から離れないように注意しましょう。
1%の改善に気づけるシステムづくり
素晴らしいPDCAサイクルをまわすことができても検証がおろそかになってしまっては元も子もありません。実行するまえに必ず「検証できる基板」があることを確認しましょう。もしろんそれがない場合は構築しなければなりません。
どうしても、大きな数字に目が行きがちですが、グロースさせていくためには小さな改善の積み重ねが大切です。PDCAサイクルがしっかりワークするようにエンジニアは注意すべきだと考えます。
3. テスト・自動化を目的にしない
なんのためにやるのか
カバレッジ100%のテストを達成することが目的ではありませんよね?自動化も「なんでもかんでも自動化すればいい」というわけではないはずです。そんな思考停止したような目的を持つよりも、「なんのためにテストをするのか、自動化するのか」を一度考えてみてはいかがでしょうか?
そうすると、最低限必要なテストや自動化項目が明確になってくると主ます。場合によっては上位のテストだけで良い場合もあると思います。
※テストコード不要と言いたい訳ではありません。どのレベルのテストがあればユーザー価値を高められるのかが焦点にすべきと考えたいというだけです。
ここもROIドリブンで考えてみる
明確になった「テスト項目」や「自動化項目」にもROIで優先度をつけましょう。PDCAサイクルの中にちゃんと取り込んで確実に最小単位でのサイクルを達成することを優先して開発していくべきだと私は考えます。
そのためには、ある程度のマニュアル化は必要だと思いますし。ときには「自動化しない」場合のほうがユーザーにとっては良い場合もあるかと思います。ここも上記で話した「システム化することが仕事ではない」にかかる部分だと思います。
さいごに
PMFを向上するために、グロースさせるために、エンジニアにしかできないことは沢山ありますが、それは「開発」だけではない場合もあると私は感じています。
私はいつも「独りよがり」ではなく「チームのパフォーマンス向上」に貢献し「最高のプロダクト」をつくるためにエンジニアとしてJOINできたらと考えています。「チーム」も「プロダクト」もエンジニアリングして「ユーザー体験を最大化」していきたいですね。