僕も非エンジニアになんで糞コードがだめか説明してみる

yamashiroさんの

非エンジニアに糞コードがなぜダメなのかを説明するメタファー


他にいいメタファーあったら、ブクマやらコメントやら、ブログ別書くなどして、
世界を幸せにしてもらいたい。

ってあったので考えてみた。

プロダクト黎明期

とある会社になにも入っていない新しい倉庫があります

あるとき、倉庫番は経営者から本棚を倉庫にしまってほしいと言われます
倉庫には何もありません、すぐに倉庫にしまえるでしょう

そして、もし、その倉庫番が仕事のスピードを重視する人であれば
本棚は出入り口の近くにおかれるでしょう。

ある日、今度は本棚をとってき飾り付けしてほしい、といわれます。
本棚は出入り口の近くです。すぐに取って来れるでしょう。

また、数日がたち、今度は冷蔵庫をしまってほしいと言われます
冷蔵庫も取り出しやすいように出入り口の近くにおかれるでしょう

そんな感じでどんどんものを入れたり出したりしていきます

プロダクト発展期

月日がながれ
倉庫の中は今やいろんなものでいっぱいです。
そしてその初代の倉庫番もやめてしまっています。
どこに何があるかの資料も残ってません。

あなたはn代目ぐらいの倉庫番です
経営者は言います、
"本棚とって来て"と
しかし、まず、本棚がどこにあるかわかりません。
そして見つけて引っ張りだそうにもまず出入り口に積まれたものが邪魔で出せません

結局、後片付けも含めるととってくるのに何日かかってしまいました

そーなると経営者からこーいわれるわけです

『ちょっと、初代の倉庫番と比べてかなり仕事おそいんだけど!初代なら1時間で終わってたよ、その作業!』

確かに経営者から見れば
"倉庫から本棚を取ってきて"
という命令は同じです。

なので、この倉庫番は使えない、という評価になってしまうのです。

あなたからすると、おいおい、状況が違うだろ、ですよね。
でも経営者からみたらそんなのわからないので無能呼ばわりされるわけです。
どこに何があるか、どこにどうおくべきか、先代より頭使っているにも関わらず。。。。
やってられませんよね。

プロダクト衰退期

あるときあなたは、定期的にに倉庫の整理を行っている会社を見学してみます。
その会社は定期的に整理し、記録をつけているからどこに何があるかはだいたいわかってます。
もちろん入り口を塞ぐものはなく、そこから重機を入れることができます。
なので、重いものを運ぶのは重機任せです。
そして仕事が早く終わる、倉庫番たちは評価されていて給料も良いです。
そして、重機の操作といった様々なノウハウがたまっていきます。

それを見て思うはずです、うちも重機入れよう、と。
しかし、入れようとして気づくのです、入り口が詰まっていて重機を入れたくても入れられない。
結局、重いものを一人で運ぶから時々壊したりしてこれまた叱られたり減給されたりします。
そーいうのに堪え兼ねてどんどん仲間はやめていきます

解説

いうまでもなく、倉庫っていうのはプロダクトの事。
冷蔵庫とか本棚とかは"機能"の事で重機はjenkinsとかのCIツールの事。

で、そのぐちゃぐちゃの倉庫の会社にいると、なんもノウハウが身に付かないのか、というとそー言う訳じゃないです。
〜〜を置く時は普通におけないから斜めにして置く、とかそーいうノウハウは身に付きますよ。
ただ、会社をやめた時に気づくのです。
それがその会社でしか通用しないという事に。
一方、重機を扱うノウハウはいろんなところで使えるでしょう。


だから優秀な人ほど、リスクヘッジも考える訳ですから、そんな倉庫がぐっちゃぐっちゃな会社に居続けようとは思わないですよね。
で、優秀な人はそーいう会社には来なくなるので、ますます酷くなっていく、というわけです。おしまい