「最終的な製品実装では、○○は不要だよね。」という言葉によって、開発しにくい仕様が作成されて
開発に苦労をすることがある。
ここでは、そのような苦労をする人が減るように、開発のしやすい仕様が重要であることを述べたいと思う。
以下に示す想定例は、別に私の経験したことではありません。
・「最終実装のCPUボードはこれだから、全ての開発はそのボードでいいよね」
・「製品には画像の表示はないから、開発中でも画像の表示ができないCPUボードでいいよね」
・「実装はC言語と決まっているから、プロトタイピングでもC言語でお願いするよ」、「僕は○○言語なんてわからないから、C言語でお願いするよ」
・「どうせ、それは開発時点でしか使わないんだから、そんなものにお金をかけられないよ。最終製品に使うもの以外に金をかけるのは言語道断だ。」
・「昔はそんなのがなくたってちゃんと開発していたんだ。それがないと開発できないなんて言うな。」
・「製品として残るコード以外書くな。デバッグをしやすくするためなどいうコードを書いている暇があったら、さっさと製品のコードを書け。」
・「どうせ自分たちで書かなければならないコードなんだから、市販のライブラリを買ってみるなんて言うな。」
・「成果物としてのライブラリのインタフェースには、そんなのないんだから、『単体テストをするためのインターフェース』だって、いい加減にしろ。」
・「とにかく、うまく動きゃいいんだ。『設計がおかしい』だなんて抜かすな。」
このサイトを見ている人にとっては、それぞれの発言が理にかなっていないことを十分承知だと思います。
不幸なことに、開発の実務に長けている人は、「開発の実務に専念してください。」という状況の中で、組織のマネジメントに対して影響力を発揮しえなくなるという事例がないわけではない。そのような中で、適切な設計や方向性を導くことが軽視された組織運営になることがある。
きちんと開発のしやすさを考慮して開発すれば
性能のあるマシンでしっかりとしたプロトタイピングをこなすこと、
あるいは、開発を進めることで、次のようにできます。
- 実装すべきアルゴリズムの詳細を明確にできます。
- 性能がでているのかどうかを十分な数のデータで検証することができます。
- 計算量を減らすためにどうアルゴリズムを変えればよいのかテストすることができます。
- ストレスの少ない開発環境で開発できます。
そのようにして、十分に検証した仕様、もしくはソースコードを、ターゲットマシンに持ち込むことです。
そうすれば、ターゲット環境の限られたリソースで動作するプログラムを効率的に開発できます。
「ネットも無ェ X(エックス)も無ェ
メモリもそれほど入って無ェ
GPUも無ェ コア数も無ェ
ファンが毎日ぐるーぐる
朝起きてビルドして
2時間ちょっとの中休み
情報も無ェ パッチも無ェ
updateは1年に一度来る
俺らこんなボードいやだ 俺らこんなボードいやだ
○○へ行くだ。
○○いったら銭コア貯めで
GPUのサーバー使うだ。」