Uff. That's a hard question, because I find it hard to explain.
I don't do any pseudocode or anything on paper beforehand (unless I am stuck). I plan the structure of the code in my mind and I keep refactoring the code while working on the project. Usually I only realize what should be done after working on it for a while. I don't think you can -- for large projects -- plan everything beforehand. I do one step and afterwards I think about the best way to implement the next step.
Usually you would think about separation of concerns. Everything that belongs together (semantically) should be kept together, i.e. in one class, one file or one package.
Quote:should i start by thinking of the methods i need to use
I can't tell you how you should do it.
I don't think in methods. I think about a problem and divide it into steps.
Then I start working on a step. If that step is too large for a single method (or class or whatever scale you are at that point), I divide the step in further smaller steps and so on. So the methods just occur in the process when I see one method will be to large for everything or that I could reuse that code piece later.
The more you code and the more experience you have, the more you will write well structured and flexible code. That comes with experience. It's nothing you can just adopt from me explaining to you how to do it.
One thing that helped me a lot in object oriented programming was the understanding of design patterns. Get a good book about it and try to see where you can implement these and understand where it makes sense to use them and where it doesn't (in case you do OOP).