その状態を作ってしまったのは誰だ

2022-10-21

最近いろんな方から「ブログ読んでます!」とか「ブログ読みました!」って言われることがあり、恥ずかしい限りです。

自分のブログって正直生き恥を晒しているようなものなのですが、人生一度きりなら生き恥をさらして生きたほうが楽しいよなーという考え方はいまだに変わらずです。


最近ブログの訪問者も少し増えており、1 日大体 100 人前後の方が訪れているようです。

とはいえ読まれているのは妻の ADHD・ASD のエントリーとか、Fire TV でテレビを見る方法とかで、技術的なエントリーはさっぱりなのが少しさみしいです。


ということで本題ですが。

自分はフリーランサーということもあり、ちょくちょく炎上しかかっている、もしくは炎上しているプロジェクトの火消し要因として呼ばれることがあります。

で、ぶっちゃけ炎上しているプロジェクトって自分 1 人が入ったところでどうしようもないケースのほうが圧倒的に多く、そもそも人海戦術でプロジェクトがうまく進むなら誰も苦労しないよなーというのが個人的な意見だったりします。


プロジェクトを進めるにあたって、もっとも重要なフェーズって人によって考え方はさまざまだと思うのですが。

個人的には開始前がもっとも大切だと思っています。

プロジェクトの開始前にどれだけ事前準備ができているか、ここでプロジェクトが成功するかどうか 8, 9 割は決まると思っています。


陸上競技に例えるとわかりやすいですが、準備運動もせずにいきなり走り出すバカはいませんよね。

事前に念入りな準備運動をすることによって、本番でフルに近いパフォーマンスを発揮することができるわけで。

家造りであれば、設計図があるからきちんとした家が建つわけです。

設計図もなしにいきなり作り始めてうまくいくわけがありません、これも想像に難くないと思うのですが。

これが Web サービスの開発となると、途端にイメージが湧かなくなるみたいで、個人的には不思議で仕方がないです。


Web サービスの開発を始めるぞ!というケースにおける準備運動とは一体なんなのか、いくつか書き出してみると。

  • ゴールの明確化(インセプションデッキ)
  • チームメンバーの選定
  • 開発手法の選定(ウォーターフォール、アジャイルなど)
  • ロールの振り分け
  • 使用する技術の選定
  • 使用するサービスの選定
  • 横の連携方法の認識合わせ(UI/UX デザイナーとフロントエンドプログラマー間、フロントエンドプログラマーとバックエンドプログラマー間)
  • かけられるコスト、工数の認識合わせ

などなど、決めなければいけないことはたくさんあります。

ここらへんの事前準備って行えば行うほど良いと思います、しっかりと時間をかけるべきかなと。

事前準備が終わり次第ヨーイドンで開発を開始することで、良いスタートが切れるのかなーと。


とはいえ、いくら事前準備に時間をかけたとしても、うまくいかないケースももちろんあります。

で、開発がうまく進まなかった場合にまず大切なことは、既存メンバーがこの状況を作り上げてしまったという認識を各々が持つことだと思っています。

別に犯人を洗い出せとかそういうことを言いたいわけではないですが、開発がうまく進まなかった場合に、なんとなくふんわりと開発を中断してしまうケースが多すぎるのかなと。

スクラムの場合、開発がうまくいかなければスクラムチーム全員に責任があります。

ところが、現実問題スクラムがうまくいかなかったとして、明らかに他のロールに問題があった場合に『自分がもっとこうすべきだった』と考えられるメンバーがどれだけいるでしょうか。

よく当事者意識という表現が使われますが、果たしてそこまでの人間関係が構築できているスクラムチームが一体どれだけ存在するのか、果たして疑問な部分はあります。


個人的に、日本人って結構冷めた冷酷な民族性を持っていると思っていて、表向きでは良いカッコするけど、裏ではさっぱりな人が多いのかなーと感じる部分が少なくないです。

で、日本では終身雇用制度が採られているため、イマイチな人を雇用した場合に切ることができず、結果生産性が下がってしまうという状況が目につくのですが。

制度に対してどうこう言っても仕方がないので、数少ない熱い心を持ったメンバーを揃えることが、会社として求められるんじゃないかなーと思います。

個人的に、人間性って根っこの部分は変わらないので、イマイチな人に時間や労力を費やすのであれば、見限るという選択肢を採ることも重要だよなーと。


合わせて、ブルックスの法則はもっと強く意識する必要があると思っていまして。

これだけ世の中の技術が発展しているにもかかわらず、どこの会社もやたらとプログラマーが多いなぁと感じることは少なくないです。

自分の場合、拙いながらもりくばんおんめもといったサービスを 1 人で作りあげてきましたが、1 人でもある程度の規模感の Web サービスって作れるよなと。

サーバーレスアーキテクチャを謳ったサービスも数多くリリースされているにもかかわらず、いまだに泥臭い開発を行うメリットって一体なんなんだろうと。

会社において人件費ってもっとも頭を悩ませる費用だと思いますが、便利な外部サービスを使うことによってそこが浮かせられるのであれば、それに尽きることはないんじゃないかなーと思います。


ちなみに半分余談ですが、プライベートで今作っているサービスは Next.js × Vercel × Prisma × PlanetScale × Firebase(Auth, Storage)の組み合わせとなっています。

この組み合わせだと初期費用 0 でスケールアップも容易で JavaScript(Node)だけで完結していてサーバーレスで最高だと思うんですが、どうなんでしょうか。

AWS に全部まとめてしまったほうがもっとシンプルでクールかもしれないですが、フロントエンドプログラマーの今の自分にはちょっとハードルが高すぎるかなと…。


結局のところ、事前準備とマイナスを行う度胸が足りていないのかなーと。

うまく進んでいない場合、なぜうまく進んでいないのか、その原因を明確にし、モノゴトをブラッシュアップしシンプルにしていくことが重要だと個人的には思います。

うまく進んでいない場合に、うまく進んでいないことに気づけていないメンバーがチームにいたら、そのメンバーは問題を抱えていると思います。

スクラムであれば、スプリントごとに今のチーム状況を振り返る時間があります。

そこで冷静に、第三者的目線でどうすべきかをジャッジすることが何よりも重要かなと。

時として厳しい選択を採らざるを得ないケースもあると思いますが、自分たちは何のために働いているのか、そこがブレなければ、きっとうまく進むと思います。

今の日本で生き残っていくためには、誰しも空気を読んでいる場合ではないんじゃないかなーと、ちょくちょく感じる今日この頃です。