Here is a thought: it might be that your approach of trying to work out the entire solution on paper first constitutes a barrier to learning and makes it harder to succeed.
Working out all of the details on paper requires several prerequisites that are often absent.
- Complete, accurate documentation would be wonderful, but often what is available falls short, so there might be things you need to know that are not written. You can fill in the gaps yourself through trial and error, but I don’t see how you would ever do it on paper.
- A complete understanding of what you are trying to achieve, and how it is to be done. I typically do not really understand that until I’ve finished actually doing it. Its like you’re driving a car at night: the headlights only shine so far into the darkness; unless you move forward, there is no way to see further down the road. As you discover more, you might realise that an assumption was completely wrong and you need to take a different approach.
- Even a simple program typically uses other sub-systems (eg. libraries, includes, shell syntax, or protocols syntax) so you also need to understand how those work, not just in theory but in practice. There are often differences between how they are supposed to work on paper and how they actually work (implementation differences, quirks, or features that are described incompletely in the docs).
So if working out everything on paper is intrinsically difficult, what are you supposed to do?
What about adopting a different approach:
- start with a very small program that does only one thing. Get that to work first.
- add a feature. get that to work. ensure the whole program still works.
- repeat step 2 to get closer and closer to your goal (which might change a little as you go forward, that’s ok) until you are happy with the result.
If you like formal methodologies, you might be interested in Test-Driven Development (TDD) and Refactoring, or you might pull useful techniques and concepts from them and develop your own methodology that suits you.