読者です 読者をやめる 読者になる 読者になる

優秀なエンジニアは

優秀なエンジニアは「優秀なエンジニアは○である」「優秀なエンジニアは□□をしない」みたいなざっくりした色分けを、他人に対してやらない。*1

エンジニアがやることのひとつに技術による問題の解決があるが、そのためには物事を細かく分割して見る '目' を養っている必要がある。例えば A という問題があってその原因が a1 == 1 && a2 == 2 であるからだ、というようなとき。

「a1 == 1 も a2 == 2 も条件のひとつなんだから、 a1 == 1 になる事をそもそも禁止するか、a2 == 2 になる事をそもそも禁止するか、どちらかを選ぶべきだ」という人と、「a1 == 1 であることも a2 == 2 であることもそれ単体では問題ではないのだから、それらが揃わないようにすべきだ」という人に分かれる。例が雑で申し訳ないがこれは経験的にそう感じる。*2

で、結論がこのどちらになるにせよ、両方の考え方を考慮した上で結論を出せる人のほうが、片方の考え方しかせずに結論づける人より、エンジニアとして優秀だと思う。"問題を分割して見る '目'" と書いたのはつまりそういう事を指している。往々にしてベストな結論というのはそのコンテキストによって決定づけられるものであろうが、ベストであって欲しい結論に一般性を持たせたいがためにコンテキストに一般性を押し付けるのは何かすごく政治的だし、エンジニアがそういう筋書きをするのはある種の思考停止だと思う。エンジニアリングというのは政治に対するカウンターパンチではなかったか。

*1:という文章が矛盾しない理由は僕が優秀ではないからだな

*2:もちろん、「そもそも a1 == 1 && a2 == 2 という条件が複雑であること自体が問題 B であり、この問題 B の抜本的解決によって問題 A のみならず将来的に A' や A'' について考える必要すら無くなるのだ」という意見もあるが、それは 'いかにして問題を発見するのか' という問題へのアプローチの中で発揮される優秀さでありちょっと別の話なので横に置いとく