技術者の思い込みへの対処

こんにちは、

今まで長年さまざまな技術者たちと働いてきた中で、ふと思い出す事を書いてみます。

ベテラン技術者の中には、コンピューティング技術の成長と共に生きてきた生き字引のような技術者たちがいます。

そういった技術者は、与えられた環境(OSや商用ミドルウエアなど)の中にバグがある事に慣れています。特に組み込み系では、OSやミドルウエアなどのソフトウエア基盤メーカに対してバグや性能的な問題を報告し、フィードバックを行いながら進めていく事がありますし、業務系の開発においても、同様のこともありますし、OSSの場合ですと内部で修正してしまう事も多々あります。

ベテラン技術者たちは若手たちにそのような経験を伝え、若手たちはソフトウエア基盤の作りや仕組みに興味を持ったり、あるいは問題解決に際してすべてを疑う意識を持つ良いきっかけとなります。

そういった根っからの技術者たちでも、その経験が逆に仇となり問題の解決を邪魔する事があります。ある程度一般的な機能においてテストがうまくいかない時、OSやライブラリなどのバグだという報告がくる、あるいは難易度の高い機能の場合でも、そのような報告が重なったときはアラートとして捕えたほうが良いと考えています。

  1. このシステムはJavaで組まれているので、これ以上の高速化は不可能だと再度断言します。
  2. この描画が時たまうまくいかない事があるのは量子化誤差でしかあり得ません。
  3. このフォントの回転は特定の角度でバグります。Javaの問題です。
  4. このシステムで仮想マシンのオブジェクト管理を安定化させる事は不可能です。
  5. このシステムは書き直した方が費用がかかりません。

これらは過去実際に聞いた言葉です。ところがすべてのケースにおいて、問題は作成したコードにありました。

こういった事はJavaや.Netでの開発においてよく聞かれますが、それには以下のような理由があると感じています。

  1. CかC++で書けばこのような問題は起こらないという意識、あるいは不満
  2. 仮想マシンに対する不信感、あるいは勉強不足
  3. オブジェクト指向モデリングを設計に取り込めていない
  4. エンドユーザの要望を理解していない、あるいは気にとめていない

こう挙げててみると、ひとつの技術的な問題への解決ではありますが、ポイントはなぜそのシステムでJavaが選択されたのかといった上流で決められた事項の意味を納得することが重要ではないかと思えます。

いまやオフショア開発で国をまたいで現場が広がっている中、保守、運用含めたビジネスのスピードを感じていれば、おのずと自分が今まで関わって来た技術の範囲にとどまらず基盤、セキュリティ、モデリング、新しいアーキテクチャなどへの関心が起こってくると思います。そうすれば、日常の業務では問題に対してありとあらゆる角度で検討するようになるでしょう。

しかしそういった努力の継続には時間がかかります。

経験豊富な技術者が問題を解決できなかったとき、私は問題を切り離して一旦引き取り、技術者にはプロジェクトの他のタスクに引き続き集中してもらいます。そしてほかの技術者に振って問題を解決してもらい、元の担当技術者へフィードバックします。違う視点で先入観無しに対処すると、すんなり解決できる事が多いですよね。

元の担当技術者には、精神的なもの含め何のペナルティもありませんし、評価が下がるわけでもありません。盲点は誰にでもあり、担当者の強みを買ってプロジェクトに参加してもらっているという共通意識を大事にしています。チームとして目的を達成すれば成功だと考えているからです。

 

Posted in

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">