When confronted with a complicated task, the first response of any developer is to dive in and start coding. This is precisely the wrong thing to do.

When confronted with a complicated task, the first response of any developer is to dive in and start coding. This is precisely the wrong thing to do.