> Everything must be well thought out before you start to write a line
Not exactly. When you are initially learning the language, you have to think a little more. But once you are comfortable with it, the type signatures dictate you what to do. Also, it's quite easy to refactor to a different design because of the types.