I get asked this question.. a lot.

David, any tips on how I can learn Java quickly?

Or the more popular variant of it:

David, how can I learn Java fast?

Short answer: You can’t.

There’s no shortcuts in learning software development in any language. Period. Just get a grip on that right now. Because learning a programming language is only one part of the equation. You have to learn software development methodologies. You have to learn Object Oriented Programming (OOP) practices and principles. You have to learn Design Patterns. And after that – you have to go out and prove yourself and build a reputation for yourself as a software developer in Java. Do not think, even for a moment, that there are any shortcuts. You have to learn not just how to recreate the syntax of Java, but learn how to write software *well*.

Now, that said, still want to continue? OK, here’s some starting places.

Step 1 – Get the JRE

Yea I know that one seems obvious. But get the latest version from Sun’s website.

http://java.sun.com/javase/downloads/index.jsp

If you use a Mac, you probably already have the latest version available for the version of OS X you use currently installed. Check on the Apple website just to make sure.

http://developer.apple.com/Java/download/

Step 2 – Get a book – or several – and start studying

I’d recommend the following books.

Thinking in Java by Bruce Eckel

tijcover

There is nothing I can say about this book that hasn’t already been said, but I’ll try anyway. The book is nothing short of the perfect first step for learning not only Java but OOP and Design Patterns as well. It’s concise, clear and insightful. Bruce Eckel is a master at educating new Java developers and OOP developers. Support this man’s work, even though you can download a free copy of it, and order a copy it.

http://www.mindview.net/Books/TIJ

Java In a Nutshell

Another great book. It’s not a teacher of Java, but a great desktop reference to keep next to you. Think of it as an alternate way to find what you’re looking for in the Java APIs instead of using the Javadoc APIs. You can order it from Amazon.

javanutshell


Java Examples in a Nutshell

A concise reference showing how to do all kinds of different tasks in Java. Of course, very often you can find what you want by doing Google searches these days. I’d recommend that before buying “examples” books.javaexamples


Step 3 – Join a Java User Group

Find a local JUG, join and go to every single meeting that you can possibly attend. Especially meetings that talk about J2EE servers like JBoss, object-relational mapping (ORM) tools like Hibernate, and so forth. And especially if you’re new to Java programming, do not miss meetings unless you have lost a limb. Show you’re serious to other developers about learning the technology for Java.

Step 4 – Build up a rep.

Some people will send me hate mail for suggesting this. But seriously, go out.. write applications.. and contribute to any project that’ll take your contributions. Perhaps smaller open-source projects would be a good place to start. Once you find a project, start reading the source code, learning to build, run and debug those projects it and then looking at some of the requests people have made to the mailing lists to improve it. Be careful when reading the developer and user mailing lists for those projects. Lurk a lot first, before posting. Sound like too much of a newbie and your contributions will be left in the dust and ignored.

OK, but Dave I really really need to learn Java fast.

(If you already know another Object-Oriented language then you can disregard this next section. And NO, ObjectPAL from Paradox for Windows does NOT count – neither does VB.NET )

Now, first let me show you what I call the Software Development Triad.

softwaredevtriad

Here’s how it works. You want to learn Java fast? OK… but if you want to learn it good (yea yea.. correct grammar is to say “well”) then it won’t be cheap. In this case I’d recommend the Sun Java Certification series. Find a trainer and get certified. Do not – I repeat NOT – try to do those certifications if you don’t have at least five years of practical hands-on Java development experience. You will fail. And when you tell me about it, I will laugh and delete your email.

On a budget? OK, then be prepared to take about 2 years if you want to learn Java well. Finally, if you want to go on the Fast-and-Cheap route please be willing to work for wages that would have fry cooks laughing at you.

If, after reading all of this, you remain undaunted – then obviously you are as mentally deranged as I am. And that means you are probably very well suited for a career in software development. Either that or you are about as sharp as a box of hair and don’t seem to understand that what I’m telling you to do is hard work and will take up a great deal of your time, alienate you from friends and family and will severely cut into your WoW time. Regardless I wish you good luck in this effort.

Oh, and if you’re wondering if this is what I went through – I’ve been writing software for over 25 years, what do you think??