知性に対する確信

最近は、知性に対する確信のようなものが大事だとおもってる。
その問題を跡形も無く消し去ってしまうアイデアというのは、深い洞察と探究心だけがGiftしてくれるものだ。
クールなソリューションに出会えないエンジニアは頭が悪いんじゃなく、その手前で立ち止まって、知性に対する確信を放棄しちゃうからだと思うんだ。

すごいアウトプットが出せないときって、単純にインプットと思考と洞察が足りないんだよ。
かけてる時間がすごいとか、朝から晩までやってるとかそういうことじゃない。

アウトプットが足りないときに、じゃあインプットと思考を巡らそうと考えて、行動に移せる人は思いのほか少ないのは、やっぱり焦ってしまうんだろうと思うんだ。
その焦りの源について考えてみると、それは「知性に対する確信が足りない」ってことなんじゃないかと思ってしまう。
十分なインプットと問題認識にこそ時間をかけてやれば、きっといいアウトプットが出てくる。この信仰まがいの哲学が「知性に対する確信」だ。
この信念が弱いと焦ってしまう。誰も皆アウトプットを出したいからね。それで、アウトプットに生真面目に取り組んで結果として悪いソリューションを出してしまうんだ。

よく設計が場当たり的な理由を「時間がない」んだと説明されるんだけど、そうなんだろうか。
記述する時間なんて、全体の時間からすれば誤差。考える時間は、それこそいくらでもあるんじゃないか。

要するにそれは、迷路の中で絶対にたどり着けるって確信がないと引き返してしまうのと同じなんだろう。
だからトーチが照らす一寸先を闇雲に歩いてまわる。結果として、怖くなって引き返してしまうか同じところをぐるぐると回る。

まずは、本当はこうなってなきゃいけないんだよなーと考える。
本当に?と問う。こう書きたいんだ。こう働きたいんだ。こうなってるといいんだ。
をまずはっきりさせる。そこから実装が始まる。

末端の細かい実装なんてのは、最後の最後にすればいい。でもこれも怖がって、なんとなく動くコード書いて満足しちゃう。

テスト駆動開発とかビヘイビア駆動開発とかのミソって、こうあるべきを最初に書いてしまうことで、
アウトプットへの焦りと戦って、自分がたどり着きたいところを明示的にしてしまうことなんだよ。

じゃあ、それができないときに、どうやったらできるように変わってくるか考えてみる。
頭の良さとかそういうことじゃなくて、アイデアがすべてをがらっと変えてしまうという確信をどうやったら培えるんだろう。

最初に書いたコードを捨ててしまう勇気と自分自身の力で問題を再定義する成功体験かな、やっぱり。