post Image
直感のきく技術者になろう

うまくいきそうな技術とうまくいきそうにない技術とがある。どんな技術でも最初はすべて未完成である。そのときに、うまくいきそうな技術と、うまくいきそうにない技術をかぎ分ける必要がある。
うまくいかない問題のはらんだ技術を選んでしまうと、どれだけの多くの人月・資金を投入しても失敗する。失敗には必ず理由があって、その失敗をしない・させないための努力をしつづけるしかない。
うまくいかない技術を選ばないため、失敗をさけるためには、直感がきく技術者になることだと私は考える。

直感のきく技術者

  • その分野での標準的な各手法(定石)を知っていて、使うべきときと使ってはいけないときとを知っている。
  • 方程式を解かなくても解の挙動が分かる。
  • 厳密なやり方と荒っぽいやり方との両方を使い分けられること
  • 自分の理解力を確かめるための努力を継続している
  • 大きさが変われば測定手段が変わることを理解していること
  • 標準的な技術についての理解をもっているので、文献やオープンソースを元にすばやく開発の出発点に立てる。
  • 開発の出発点にたってある程度の見通しが利く段階になって、それからが本当の開発であることを知っている。
  • 計算量を減らすためには、何が有効であるのか知っていて、計算量を減らしたときの副作用についても知っている。
  • 今は使わないけれども将来使うことになるかもしれない技術動向を調べておく。
    • 担当分野ではないが、関連分野の記事の特集号の雑誌を仕入れておく。
  • 口には出さないけれど、頭の中で別の手法の可能性を多数考えては多数断念している。
    • いちいちそれについて記録を残している時間がないことが多い。

直感のきく技術者になることは、許容できる水準の結果を速くだすために必要な資質だと私は考えている。

付記: 直感のきかない上司にどう対処するか

直感のきかない上司の傾向

・全ての項目について完全な比較表を要求する。
  間違っている理由:
   調査にはコストがかかります。不必要な調査をすることは、本来業務を遅らせます。
・可能性の枝切り(=絞込み)ができない。
  間違っている理由:
   可能性の枝切りができない状況では、どんなに優秀な人材をあてがっても、開発すべき項目を絞り込めないため、必ず失敗します。

付記:直感のきかない上司にどう対処するか

直感のきかない上司の傾向

可能性の枝切りができないということは、開発の要件定義ができないということにつながります。
「これさえできれば十分だからね」ということができない。

・△△△という技術が完成された技術ではなく、今も改善が進行中の技術だと言うことをなかなか理解しない。
・可能性が少ない技術に対して、それが実現できないことを実際に工数を割いて示すことを要求する。

  • 全ての項目について完全な比較表を要求する。
    • 間違っている理由:調査にはコストがかかります。不必要な調査をすることは、本来業務を遅らせます。
  • 可能性の枝切り(=絞込み)ができない。
  • △△△という技術が完成された技術ではなく、今も改善が進行中の技術だと言うことをなかなか理解しない。
  • 可能性が少ない技術に対して、それが実現できないことを実際に工数を割いて示すことを要求する。
      例:low end のCPUでは処理速度が達成できないことを予測値で示しているのに、実際に移植して動作速度を計測するのを要求する。
  • 全ての事実を(有限の時間で)検証して進めることができると思い込んでいる。
  • その分野の技術者がことごとく合意する内容でも、「私は納得しない」と言い切れる。
  • 自分の期待する順序で話が進まないと、こちらの全体像を示さないうちから怒り出す。
    • その分野の専門家たちには、嫌悪感を持っているのかも知れない。
  • 潜在的な危険を予め口に出す人を嫌がる。
    • そのため、潜在的な危険を口に出す人が少なくなり、その課題はほったらかしになる。
  • 「実験結果を持って話せ」と言いつつ、「勝手に実験するな」と言う。
    • つまり、何も実験ができないから、何も主張してはならないことになる。
    • いっけん無害そうな理屈でも、2つが組み合わさったときには、とんでもない結論になる組み合わせがある。
  • どんな些細な項目でも「実験で示せ」とその分野の理論や経験則を否定する。
    • 理論や経験則を疑ってかかる必要がある場合もあるが、それはそれだけの裏づけや考えがあってすべきこと。大概の場合は、その分野の理論や経験則は有効なことが多い。
  • いったんは納得したことでも、納得していないと蒸し返す。
  • 予め指摘しておいた限界が、そのとおりになっているのに、予め指摘してあったということを忘れてしまえている。
  • かつての自分の判断ミス(あるいは、開発を遅らせるだけだった判断)については、まったく気にする傾向がない。
  • コストモデルが現場のエンジニアと違っている。担当のエンジニアが言うときには、少ないコストでもコストアップを気にするのに、自分が言うときにはそれより1桁多いコストアップでも気にしない。
  • 開発速度が上がらない方向での判断をし続けていることで、担当の専門のエンジニアたちのやる気をそいでしまっていることを気にする気配が見られない。
  • 上司たちの仲良しクラブが出来てしまいがちである。
  • 担当している製品の分野での必要な技術についての、その分野の勘を身につける必要があるなどとは少しも思っていないように、その分野のエンジニアからは見える。

  • 「正しく動く、安く作る、速く作る」で体力を使い切っているエンジニアに、無意味なこだわりのために体力をさらに消耗させる。

  • 「ある方法を進めつつも、それが必ずしもうまくいかない場合のための手を考えておこう」とするエンジニアの発想を理解しようとしない。

  • ある方式が失敗したことをもって、その作業を担当した人への評価を下げるという傾向がある。その方式は誰がやってもうまくいかないということを理解しない。

  • 結論を出しておきそれを説明するという形式よりも、結論を出すのに十分なデータを示しておいて、上司が結論を出すという形式の方を好む。

  • 「作り上げるためには何をどうしなくてはならないか」よりは「***(上役)は、どう思うだろうか」を優先順位に高く置く。

戦前の日本軍の組織運営に似た弱点を持っているように思えてしかたがない。

対策(案)

  • 相手の言うことに対して、すぐに反論するのではなくて、「確かにそのような視点もあります。しかし、~~」などという表現を用いて、相手を全否定しているのではないというメッセージを伝えること。
  • 結論が十分に出ている問題であっても、上司が「自分が決めたんだ」と思えるように、(無理のない範囲で)比較表を作ってあげて、決めた一員としての責任を上司も果たすんだという自覚を持たせる。
    (ここで上司の責任は、部下に責任追及をすることではなく、部下が問題解決をしやすい状況を確保するということである。)
    ・ある程度の期間、その上司の思うのにまかせておいて、失敗を経験してもらう。失敗を経験した後の方が意見を聞いてもらいやすくなりかもしれない。

直感がきくとはどういうことか

  • 代表的な手法のコストモデル(例:処理時間、ハードウェアリソース、価格)を知っている(最新状況を把握している)。
  • 代表的手法の効果的な適用例と、どのような誤差要因に弱いのかを知っている。
  • 代表的な手法どうしの組み合わせ方の典型例を知っている。(例:主成分分析で次元数を減らしてから、SVMで識別する。)

直感がきくようにする訓練
・実験してみる前に予測をたてる。予測と違った結果になった場合には、なぜ予測に間違えたのかを考える。
・ニュースがあるときに、その出来事がどういう結末になるか予測してみる。予測の根拠を明確化してみる。
・自分の得意な分野と、いま考えている分野の共通性を考えてみる。もし、得意な分野の結論を、いま考えている分野に当てはめたら何が結論できるか推測してみる。
・あえて、普通の人の結論とは逆の結論を主張してみて、その結論をこじつけることが可能か考えてみる。
・物理や数学が得意ならば、同じ問題に対する異なる解き方が、物理と数学の分野に多数あることを知るだろう。


ここに書いていた追記は独立の記事に書き直しました。
可能性の枝切りができない開発は必ず失敗する。


付記:

直感のきく人は、適切な指導原理をもって、実験や開発をあたっていることが多い。

適切な指導原理はとして何をかかげるかは、人それぞれ違う。
でもそのような指導原理は、迷ってしまうことを減らしてくれる。

マクスウェルの方程式が出現した時点で、光速不変の原理は論理的な方向性は、定まっている。そのような明確な指導原理に基づいて考えきることができた人が、新しい結果にたどり着いている。

青色のLEDを目指して多くのチームが開発している中で、自分の開発が意味をもつとしたらどういうアプローチなのかを考えた人たちが、他とは違う結果にたどり着いている。

加速器で素粒子のエネルギーを高くする競争に加わらなかったチームは、別の方針での開発を行なっている。そのときに、その実験を少しでも意味のあるものするための準備を怠らなかった。そのことが、新しいニュートリノ天文学につながった。

近年の機械学習の分野でも、成功をあげているチームは、明確な指導原理をもって、アルゴリズムの構築や実験・開発を行なっていることが多い。

あなたの分野での直感がきくための指導原理は、分野ごとに違うでしょうし、自分自身で見つけなければならないものなのでしょう。


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。