
When visiting information days at universities, you are once again reminded that creating good software is not all about the code. Sure, it is important to have your code as bug free as possible, well documented and as optimized as possible. It is, however, impossible to achieve this all without prior planning. Good project coordination.
It's important to identify what features are necessary for you, or when working for someone else, for the client? Write them down on a piece of paper.
After that, grab another piece of paper! Start creating some simple sketches of pages for the project. Don't be afraid, you might not be a designer, but I am sure you know how to handle a pencil. Draw relations between these pages. Try putting as much information as possible there while you are at it. Also try drawing some classes, and the relations between them.
When you are done, go through the sketches, while having the piece of paper with features next to your sketches. See if you miss anything, or whether there is way too much fancy stuff. Once you have done that you will now have a base to begin with. You have the feature list, you have a small sketch of your system. You also have some class skeletons from which you can start writing the code.
This all might not seem to be of use to you, it might look like overhead. From my own experience though, I write way better code if I plan before hand. I know the big picture of the system. Things are structured, both in my head and in the project. It is easy to adjust afterwards, because you know where you can find everything. Just look it up in your drawings! If you are not planning yet, I strongly advise you to start doing so, and see how it works out. You can always decide to stop doing it if it really doesn't work out.