通りで食べ物を売っている女性がいます。2年間働いています。彼女は在庫を補充し、仕入れ先にお金を払い、子供たちを食べさせる、明日も出てくる。お金持ちでもないし、苦労していてもない。ただ動いているだけです。
誰かが彼女に適切なシステムが必要だと言います。在庫管理。需要予測。ロイヤルティプログラム。友達はそれをやっています。学校でそれについて学びました。本格的なビジネスはそれをやります。だから彼女はそれを始めます。時間とお金を使ってそれを正しく設定します。
6ヶ月経ってもまだ路上にいる。システムは彼女のスマートフォンに残っていて、触られていない。設備費で利益が薄くなった。ロイヤルティプログラムで守ってはいけた顧客がスマートフォンを持っていない。
彼女は不注意で失敗したのではない。彼女はまだ存在しないビジネスのバージョンに作り、実際に存在するビジネスをほぼ殺しかけた。
この落とし穴について誰も警告しない。それは見た目がそれに見えないからだ。野心的に見える。正しく行うように見える。
彼女は一度も、それが今自分に役立つかどうかと問いかけることはなかった。標準は本格的なビジネスがこうするもので、仲間たちはそれをしていたし、彼女もそれに従った。アブストラクトレベルではアドバイスは間違っていなかった。だが、彼女にとっては今日、持っているものと比べれば間違っていた。
彼女が一度も問いかけなかった問い:
これは現在存在するビジネスに適しているのか、それともまだ到来していないバージョンに適しているのか?
彼女のビジネスには、在庫管理が完全に意味を成すバージョンがある。20のベンダー、3つの拠点、適切なサプライチェーン。そのバージョンにはシステムが必要だ。
そのバージョンはまだ現実ではない。
今売れたもの、明日仕入れるもの、今週いくら稼いだか分からなければならなかった。ノートがそれを解決してくれた。システムが必要なかった。ただ、それが必要になるまで生き延びることができればいい。
ソフトウェアは同じ問題だが、違う服を着ている。
プロジェクト、締め切り、クライアントがもらえます。一行書く前にすでにアーキテクチャ、標準、プロフェッショナルな見た目について決めています。その多くは自動的に決まり、あなたが学んだことと同僚がしていることに基づいています。
DRY。SOLID。完全なテストカバレッジ。時にはまさにその通りです。
しかし時には30日間、1人の開発者、そしてこの全体的に90%動作が必要なクライアントがいる。そしてあなたは、300万人がサーバーを叩いていたら重要になる抽象化に5時間も費やしている。300人のユーザーがいる。そのうち半分はあなたのチームだ。
あの5時間は悪いコードに失われたわけではない。まだ存在しない問題に時間がかかっていたのだ。
これは標準に反論するものではない。
ある基準は最初から耐荷重仕様です。お金に真剣に触れるもの、規制要件があるもの、間違った番号で誰かの家賃が振り込まれないようなものでは、テスト、監査、適切なエラーハンドリングは選択肢ではありません。それらを守るのは、その特定のシステムで失敗するコストがあるからです。教科書に書かれているからではありません。
それが区別です。いくつかの規格はそのものを支えています。他のものはまだ存在しないシステムのバージョン用です.
最初のカテゴリは締め切りに関わらず動きません。二番目のはバックログに残り、それについて正直でいる必要があります.
ベンダーの過ちは未来を考慮しなかったことではありません。彼女の過ちは、現在が安定する前にそれに対応して建設することでした。
ここでの演算順序が重要です.
今日このものは機能しますか?利益を生み出せますか、価値を提供できますか、今の重みに耐えられますか?
それから、次のバージョンで生存するために何が必要ですか?
多くの人がこれを逆にします。彼らはバージョン1に実質的なユーザーが一人もいない前に、バージョン3の設計を始めます。製品は、彼らが作成したバージョンと現れたバージョンとの間のギャップのどこかで死にます.
今何かを始める前に、二つの質問.
今日このものが機能するために何が必要ですか?スケールではありません。6ヶ月後でもありません。今日、これらのユーザー、これの締め切り、これのチームで。
ここでの失敗は実際に何をコストするのか?これは間違った番号が誰かの財産と信頼を破壊するシステムなのか、それともバグが次のプッシュで修正され、誰も寝不足にならないシステムなのか?
それらの答えは、今日非交渉可能な基準がどれか、どれが延期されるかを教えてくれる。延期される、しかし無視されるわけではない。無視するとは忘れたことを意味する。延期するとは意図的に決断し、後で何がコストになるかを知っていることを意味する。
コードはただの答えを実現しただけです.
その女性はまだ街にいます。システムはまだ彼女のスマートフォンにあります。どこかで開発者が300人のユーザーを持つコードベースの抽象化に6時間も費やし、締め切りが不可能に感じていると考えます.
同じ問題。間違ったバージョンです.
私はバックエンドエンジニアのダモーラです。このシリーズの残りはGitHubで見つけることができます。をフォローして、Dev.toで次のものを。












