For anyone who read my introduction thread most of this will be repeated information. So, I'm about to graduate with a from a two year college with a degree that focuses on IT/Networking. During my time at the college I took an intro to programming course that used Java. I really enjoyed the course and have continued studying the language and have done multiple small projects with it, I've even dabbled in some other language; c++, Go, PHP, python. But I'm most comfortable in Java. The other students around my school consider me to be an expert in programming, I know i'm still a beginner and have a ton more stuff I could learn. My question to you guys is where do I go from here? I've read a bunch of stuff online and learn a little from it, I've watch countless YouTube videos and didn't learn much at all from them. With used this book in class, Amazon.com: Java, A Beginner's Guide, 5th Edition (9780071606325): Herbert Schildt: Books, and I know most of the stuff in it. Is there an intermediate level Java instruction book, that you would recommend? Or should I just continue with attempts to learn from online resources, most of which I find hard to understand?
Thanks in advanced guys.
Re: What's next
The best way to learn is practice. The more you write, the better you get. Find something you enjoy and see if you can't work programming into it. For example, this could be writing a game.
It sounds like you have an understanding of the semantics/syntax, I would say the next step is to learn more about the "computer science" part of programming. At this point the actual language isn't too important, but it's the design and thought process which is important. Knowing what algorithm or data structure to use in different situations can mean the difference between a program which is extremely efficient and one which won't finish in trillions of years (or longer). There are also several different programming paradigms/patterns which are quite useful for different situations. Learning what they are and when to use them can help you to write better code. Unfortunately, I can't think of any good resource to learn about these (Wikipedia's not a bad place to start), so I'll list a few which come to mind and you can search for more about these by yourself:
2. Tree data structures (too many to list, see wikipedia)
5. Dynamic programming
7. Model-view-controller (MVC) for GUI programming
8. Lists (linked lists, arraylists)
9. Divide and conquer algorithms and recursion