プログラムを2回書きたい。

プログラムでは事前の設計が重要であると言われている。しかし、事前にどれほど用意周到に設計を行っても実装段階で問題が出ないことはないと思う。そう考えると同じものを2回書くという無駄な行為が必要となるように思う。
一度実装を行うことにより、問題点が見えてくる。その問題点の解決は小手先のやりくりで何とかすることも可能だが、見通しの悪いプログラムにならざるを得ない。しかし、問題点を把握した上で再設計、再実装を行えば見通しのよいプログラムになると思う。
そんなことを最近は思っているのだけど、これは自分が未熟だからなのだろうか。