昨年来進めている共同開発のプロジェクトの全体テストのために関係者が集合して実験をしているのだが、一つの機能を担当しているとこが、結構厳しい結果になっている。
僕は、それぞれの分担者がプロだと思っているし、僕がコードを書いたり、ハンダ付けをしたりはしないのだが、全体の状況を聞き、問題点を聞き、なにをすべきか、なにをしないかなどを決める役割だ。
しかし、どうにもこうにも、悲しいのは、とある主要なソフトウェアを担当している会社が、かなり想定外な勘違いをしていることだ。しかも、実装したものの評価を、いきなり全体試験でやったりするから、どうにもこうにもな状態だ。
昔から、ソフト、ハードの設計開発を沢山してきた自分としては、設計はトップダウン、実装はボトムアップというのが、自分なりのルールだ。これは、まず設計の段階では、アウトラインから機能の定義や分割、アルゴリズムやアーキテクチャを考えて進めていくといやり方だ。
その上で、実装は、個々の機能要素や部品要素を一つずつ実装し、それそれぞれの実装段階での評価を行う、ボトムアップな手法を取ってきた。
そして、実装の段階で、もしアーキテクチャやモジュール間のインタフェィスなどを変えないと上手くいかない事が露呈した場合には、躊躇せずに卓袱台返しをして、設計からやり直す。
でも、ターンアラウンドコストが安いからなのか、いきなり実装系な人が実に多い。そして、こういういきなり実装系の人って、検証もいきなりゴールの形で、複雑なシステムの出力を見てる。こうなると、期待通りの出力が得られない時に、切り分けて内部に入り込んでいくのが、とても時間やコストがかかる。
そんなわけで、サーバーサイドなアプリだろうが、組み込み系だろうが、たいていの場合、ぼくが求めるのは、Make it Simpleなんだけど、言わなくてもこういう発想で仕事をしてくれるプロが本当に最近は少ない。