If you’re a professional developer, or even a hobbyist who keeps up with the industry, you’ve probably heard of iterative development already. If you haven’t, it’s just what it sounds like; the practice of writing and then rewriting code repeatedly throughout development. It puts an emphasis on writing code over planning. It focuses on improving your final product by consistent testing and refactoring.
For experienced developers, it tends to make a lot of sense. Testing will almost always reveal issues which require addressing that were not anticipated during planning. Planning is definitely a stage with diminishing returns. Some is always necessary, but it tends to be the case that for each additional block of time you spend on it, the less you’re getting out.
So once you’ve done the necessary planning, why not start writing? Start working. Write some code that at least attempts to solve the problem you’re trying to solve. Then test it. Functional testing and just as important, user testing will reveal further issues to work on.
Iterative development means not being scared of refactoring code; don’t view rewriting a class or function as lost time, recognize it as a learning experiment, and know that you couldn’t have gotten to the better version without writing the previous version first.