views:

205

answers:

7

I am a begining programmer with some old AutoHotkey (scripting language) experience plus basic html.

I am reading Code Complete 2nd ed in the bathroom.

&

I am reading Java How to Program in my class. - It is drab by comparison.

I don't want to spend too much time learning things that are, unofficially depreciated or otherwise silly. I don't have any real mentors (besides you guys), so I was just wondering if any experienced programmers would have solid any advice for me. I want the good stuff!

+4  A: 

Advice? Find something you like and write a program to do it. The best way to learn is to have fun. I wrote some arguably useless but interesting-to-me tools when I first started, to get an understanding.

Also, hang around in forums and try and answer questions; even if you're wrong, you'll learn a lot.

Personally I never read any books on programming, but if it's what you want to do, go for it.

Noon Silk
+2  A: 

I read the Core Java pair of books. They cover just about every aspect of Java itself, including advanced material like JNI and RMI. I found that the material was well-presented, thorough, up-to-date (make sure you have the latest editions which will cover everything in Java 1.6) and interesting to read. The problem was that I had done a few Java projects before really learning the language and libraries, and you can definitely see the difference in code quality. It's a lot of reading, but I found it to be well worth it. Everything is laid out well, so if for example Swing/GUI programming doesn't interest you, you can skip those chapters.

Other than that, I would say that it is important to truly know your development tools. I use Eclipse, and I have spent a lot of time over the years learning how it works. There are hundreds of hotkeys and they increase my productivity immensely.

And also I sit around all day reading other people's Stack Overflow answers if they look interesting :)

Adam Batkin
+1  A: 

Bruce Eckel's Thinking in Java (1st edition) helped me understand OO concepts. The latest in the bookstores is 4th edition, I think, but you can download earlier versions for free.

Anon
+4  A: 

Read Effective Java (2nd Edition) . It is practically required reading for any Java programmer, both future and present. You won't find a better book for information on best-practices in Java. Some of the topics may be a bit advanced for a beginner, but you'll definitely want to get through most of hte book at some point.

Falaina
A: 

Java is among the most widely used languages - you're not wasting any time learning it. Learning a popular language and writing a couple small programs with it is the best way to start.

Also, focus on learning algorithms, data structures, design patterns, and as soon as you get a good grip on Java, learn another, very different language so that you can start making comparisons and get a deeper understanding of each. For instance, try C++ or Python.

Don't be afraid to learn lots of different things, the vast majority of what you'll learn will be a plus to your abilities as a programmer, even if you won't use everything all the time. Even things that you don't use add to your culture and improve your ability to evaluate new technologies or design decisions. Of course, I wouldn't recommend you become a specialist in FORTRAN right away, but you get the idea.

Dr_Asik
A: 

There's nothing especially silly about learning Java. At the end of the day it's only a language. You will not regret learning some other languages as well though, get some exposure to as many as you can. You don't need to be proficient in all of them, but you should get to the point where you know the high level concepts in a language agnostic way, and the language should become more of a minor detail and matter of taste, though some are easier to use for some tasks than others.

IMO two good ways to go from Java (that also have practical application together with Java) would be groovy for a dynamic 'fun' language, and 'C' for lower level knowledge (e.g. using JNI with Java). No harm learning a scripting language as well - you could even glue that to a Java program by calling out to the command line - or in some cases (e.g. python, ruby) running a java based version of it. If you learned all those you would probably learn a heck of a lot else on the way.

frankodwyer
A: 

The Effective Java book by Joshua Bloch is widely read and respected. I could also recommend The Java Programming Language by Gosling et al. The Code Complete book your are reading is highly recommended too - even though it was first written many years ago, the content and spirit of the book is still valid.

I agree with earlier poster that it's important to build things - problems you are interested in solving. I also found it helpful in the early days to go slowly at first, and make sure that you get the basics down.

The libraries in Java are extensive. At first, it looks large and intimidating. But in practice, you will only use a fraction of the library classes.

John O