楽をする体質を作る
- TD;TR
- 気持ち良く開発をするということ
- 気持ち悪い開発
- 負のスパイラル
- スパイラルの原因は開発の優先順位の付け方なのか
- 技術の不足をどう補うか
- まず学ぶべきは
- 僕が目指すこと:このブログで書きたいこと
- 裏ミッション
TD;TR
開発で楽ができないのはプロジェクト管理とかそういう次元の問題じゃない。 楽をするための知識、技術を身につけようよ。 自分が目指したいのってそこじゃないのかな。
気持ち良く開発をするということ
気持ち良く開発をすることを目指す。 僕にとって気持ち良く開発をするというのは、楽をすること、気持ち悪くない開発。「幸せは不幸でないこと」みたいに逆説的だけど、やっぱりこれがしっくりくる。具体的にいうと理不尽なことに悩まずに開発をすることだと思う。理不尽なことには人間関係とかもあるだろうけど、それについてはここでは扱わない。じゃあ僕にとって気持ち悪い開発ってなんだろうか。
気持ち悪い開発
言語化は難しいのだけれど、僕のイメージは、負のスパイラルが起こること。時間に追われるから最短距離で終わらせることを目標としてしまって結果、より時間に追われること。じゃあ、なんで時間に追われているのだろう。ちゃんと見積もって、仕事量を調整できれば問題ないのだろうか。それだけでは不十分だと思う。開発、さらには運用の両方をやっていると突発的な問題が出てくる。
- 想定していたよりも複雑なコード
- 技術的な課題、バグ
- 手続きが多いリリース作業(マニュアルでの作業が多い)
- 本番環境のトラブル
- 時間のかかる復旧作業
- 分かりづらい仕様に対する問い合わせ
要するに不確定要素、変数が多すぎる。一方でプロジェクトマネージャーからの「いつまでに終わる?」という問いに答え続けなければならない(これはPMの仕事だからしょうがない)。結果、時間に追われ、なるべく変更が少なくて済むように、事なかれな修正、開発をしてしまう。
負のスパイラル
上記のように時間に追われた結果、消極的な開発をして、結果なぜか余計に時間に追われることになる。この矛盾を抱えたままが非常に気持ち悪い。先に羅列したようなものは技術的負債によって引き起こされると思っている。負債のために、時間に追われ、そしてまた負債を残したり増やしたりしてしまう。気持ち悪い開発にストレスもたまる。こうして負のスパイラルが起こる。
スパイラルの原因は開発の優先順位の付け方なのか
この負のスパイラルを止めるためにはどうすれば良いのだろうか。最近までは「ビジネス的な価値、つまりお金になること(例えば新機能の実装とか)ばかりを優先して開発を繰り返した場合にこういうことが起こる。だから負債を返済するフェーズを取らないといけない」と考えていた。要するに開発の優先順位の付け方に問題があると思っていた。
でも考えが変わった(この記事を書いている途中で考えが変わった)。そんなことをしたとして、果たして負のスパイラルは本当に止まるのか、という疑問があったからだ。上記で挙げたことって、変更しやすいコードや運用しやすい設計をする知識や技術がないからそうなっているんだと思う。時間を設けたところで、正しい知識や技術がないと負債はなくならない。どこかの漫画じゃないけど、「開発における不利益は全て当人の能力不足」なんじゃないか。
技術の不足をどう補うか
勉強は大いに歓迎する。でもちゃんとスケジュールを引いたプロジェクトやロードマップの中に組み込むとおかしなことになる。タスクが勉強することに依存してしまうからだ。技術検証なら良いけど、一から学ぶところから始めるというのは良くないと思う。変数の変動が大きくなるし、実際タスクはいつまでも終わらない。だからといって、「プライベートな時間に勉強しろ」って言いたい訳じゃない。それ自体は大いに結構な事だとは思うけれど。業務時間内で勉強をすべきだ。実際それを取り入れてるって話はいろんなところで聞く。
まず学ぶべきは
ただ、とりあえず先端技術に飛びつくのはよくないと思う。「うちはk8s取り入れています」って言いたいだけでやるべきじゃない。そんなのIoTとかAIってバズワードに飛びついてる会社の経営陣と変わらない。それで開発が良くなるならいいけど、会社の金を使って勉強をするなら、有用性は意識して勉強すべきだ。そして個人的にはその時間を負債を作らないための知識、技術をつけるのに使うのが先決だと考える。 そう考える理由はリソース(人)が限定されているからだ。リソースが限定されているならリソースが少なくても回るシステムを開発すべきだ。仮に人を入れたとして、負債が溜まっているプロジェクトなんて誰も長くいたいとは思わない。優秀な人ほどそうだろう。結果、人の入れ替わりは多くなる。人の流動が激しいチームはそれだけ新規メンバーにコスト割く訳だから余計リソースが制限される。
僕が目指すこと:このブログで書きたいこと
僕が目指すのは負債を小さく維持して、楽に開発できる仕組み、技術を学んで導入すること。このブログはその活動や考えを記録して、自分がしたいことを忘れないために使いたい。
裏ミッション
なんで自分がここまで負債にこだわるか。負債があるとそれを引き受けて犠牲になる人がいる。大抵の犠牲者は優しい人で、そういう人は心を病むか、優しくあることを辞めてしまう。あるいは何かに対して鈍感になってしまう。そもそも自分の意思を持てとか断り方を覚えろとか、これには意見が別れるところだと思う。けど、個人的にはそういう状況があること自体を悲しく思う。優しい人が優しいままでも満足に働ける環境を作る事が僕の裏ミッションである。