うまくいかないときにやるべきことは引くことだ
と、個人的に思っています。
日本における Web サービスの開発において、どこのプロジェクトもうまく進めているとは言えない現状があったりするのですが。
なぜうまくいかないのか、その原因の一つに、足すことによって問題が解決すると勘違いしている考え方は大きく影響しているよなーと。
もちろん、全てのケースに対して何かを引けというつもりは一切ありませんが。
基本的に問題に対する解決において、何かを足すのではなく引いたほうがうまくいくんじゃないかなーと思うことのほうが割合としては多いです。
あまり具体的なことを書くので怒られるので、ぼかしつつ過去の具体例を挙げるとすると。
そこのプロジェクトは決して経営が良い状態ではなく、原因を教えてほしいと相談されたことがありました。
参画して 2 日ほどでわかったんですが、他社はやっていないような、とにかく無駄な作業が多いのが一つ大きく足を引っ張っているなーと感じました。
特にディレクターが画面と api の設計書を Excel で作成していたのは結構衝撃的で、そんなものを作る前にもっとやるべきことがあるでしょ、と。
案外業務をまるごと引いても問題ないこともあるよなーと。
レビューの依頼を手動で行っている現場はかなり多いですが、時間の無駄だし、非効率的だなーと感じます。
手動で行っているからレビューのフローが徹底されないはずなのに、フローが曖昧なのが原因だと勝手に決めつけて、さらに複雑なフローを採用したプロジェクトもありました。
でも本来であれば、手動でやっていることを可能な限り自動化すべきだよなーと。
例えば GitHub と Slack を連携すればログを流すのは容易なわけで、メンションをつけるようにすればそれだけでレビューの自動化が行えるわけです。
手動で何かをやってうまくいかないのであれば、フローを複雑にするのではなく、フローを簡単にすべきだと思うのですが、賛同者は少ないみたいです。
Issue は GitHub じゃないサービスを、PR は GitHub を使用するといった組み合わせで開発を行うプロジェクトも数多く存在しますが、どこもあまりうまいこと連携できていないなーという印象が強いです。
自分の考えではありますが、使用するサービスって最低限に留めるべきだと思います。
使用するサービスを増やせば増やすほど管理が複雑化し、曖昧な部分が発生してきます。
使用するサービスを増やすことで問題を解決しようとするプロジェクトも多いですが、長い目で見たときに本当に有用であるかどうか判断が求められると思います。
特に社内 Wiki やコミュニケーションツール、リポジトリ管理サービスなどそもそも必要かどうか、脳死で導入していないか、今一度見直さないといけないんじゃないかなーと感じるプロジェクトは少なくないです。
開発がうまく進まないときって、人を増やすべきではなく、人を減らすべき合図だと思います。
これは巷でもよく言われていることですが、仕事って人海戦術で乗り切れるほど甘くはないです。
中途半端な知識を持つエンジニアを 10 人揃えるのくらいであれば、プロフェッショナルな知識を持つエンジニア 1 人を雇ったほうが絶対にうまくいきます。
ただ、プロフェッショナル 1 人に依存する状態は最悪なので、きちんとエンジニアの育成も行う必要もあると思います。
あと、そのプロフェッショナルがやっていることが本当に正しいことなのか、プロジェクトが判断できない状態も非常に危険な状態です。
きちんとしたエビデンスのもと業務を遂行しているか、そこがポイントかなーと。
めちゃめちゃ単純な話ですが、人って増えれば増えるほど責任感が薄れていきます。
例えばミーティングであれば、1on1 と 1000 人が集まるミーティングでは、各々の態度ってどうしても変わりますよね。
個人的な考えではありますが、5 人以上のグループが構成されそうになったら、グループを分割すべきだよなと。
小さいグループで各々が責任を持って働くことが大事なんじゃないかなーと。
日本人は足すことは得意でも引くことは苦手だ、みたいなことはよく耳にしますが。
正直、足すのも大して得意じゃないですよね、脳死でやってるところが多いよなーと。
足すのも引くのも基本的にはリスクが伴いますが、どちらかといえば足すことのほうがリスクが大きいよなーと思うことは多いです。
引くことこそ、今の日本に求められている行動ではないかなーと。