I have a problem. I know that Prior Planning and Preparation Prevents Piss Poor Performance, but I have a bad habit of writing code without planning it out first. I think: "This is easy. I'll give it a go." or "I'll just try it and see what happens." when really I'd be more productive if I took ten minutes to plan it out on a piece of paper or white board. Planning what classes and functions I need, or pseudo coding the core algorithm keeps me focused and on track. It allows me to separate the ideas from the implementation. It results in a more structured and organized project instead of a jumble of miscellaneous functions and classes and files.
The root of the problem is the myth that prototypes are not products. The truth is that I'm often subconsciously thinking about writing prototypes but somehow end up with a finished product. Making code production ready is the process of turning it from prototype or "hacked" code into maintainable, organized, and efficient code. It seems more professional to write closer to production code to start with, through planning.