I've spent most of my time programming unintentionally avoiding Object Oriented-based programming. More recently (over the past year) I've picked up the concepts and began to create my most efficient code. However a big weakness in my development is my lack of code planning. What I mean is, I'll sit down, put together a detailed feature list of what items I or my customer want in the software, and i'll program it. However I tend to run into issues about 1/3-2/3 way through the project where I just get lost in what I was doing. I lose track of specifically what needs to be programmed and when.
I've played with the idea of diagraming the actual classes/code segments to assist in what steps need to be taken in what order, but I wanted to hear what you guys do.
Is Diagraming your classes/code segments the best way to keep yourself organized during the programming stage? Or is there some more efficient and easier way to do it?