Ya, Java has been my first language and I started learning it in High School 2 years ago and I have yet to start college. So naturally, I still run into countless issues on a daily basis. The only difference is that I learned how to spot where potential issues may occur (NullPointers, infiinate loops, ect.) and now whenever I run into an issue I spam my code with System.out.println statements based on my problem and where the problem could be occuring.
Admittingly, I do far less paper and pencil designing than I should because I usually have a clear picture of what I'm trying to do and how to do it before I start coding. However, there are plenty of times when I say, ok, stop and write down exactly what needs to be done, plan out the classes/methods, plan out how it will be done, plan out the most vital variables, and find the points of failure. But that is only on the most complex things that when i try to wrap my head around it, I can feel my head exploding (like my Sudoku solving program I made a year ago).