Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a friend who wants to pass some programming courses to get started with programming itself (Java), but I'm advising him to get a book and study.

My argument is that he'll end up doing the same self-education as he is going to while passing courses.

Can you, please, advise on which is the better way to learn programming if you have zero starting knowledge.

EDIT: Note, that:

  1. Any class will result in spending a certain amount of money
  2. Learning concepts (if books don't provide that, which I actually doubt) is possible from different sources, let's say programmers community
  3. Any time spent in a class is usually twice as much (you have to repeat everything and try it on), as one can spend learning by himself and then advising with someone

I'm not talking about the classic school model where you sit and listen basically because you can not learn programming/coding just by listening to people saying stuff. Also this is not about an architectural approach either (no such thing on zero level). This is about working out an effective time/money investment strategy to learn the basics.

share|improve this question

closed as off-topic by gnat, GlenH7, Kilian Foth, MichaelT, Dan Pichelman Oct 7 '13 at 19:39

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, GlenH7, Kilian Foth, MichaelT, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

1  
You are hamstringing him by applying your learning model to him. Books are fine, but they can be incredibly frustrating to a new programmer. It is much easier to stay motivated in class. –  Byron Whitlock Nov 29 '10 at 20:31
add comment

9 Answers

up vote 8 down vote accepted

Books are great for learning details. They don't work as well for learning concepts. If your friend has no experience with programming, then your friend needs to learn things like what a program is, and what programming is, and those will work a lot better with an instructor and assigned homework.

share|improve this answer
add comment

I will suggest taking a course. There are more benefits to it than simply learning it yourself.

1) You are much more committed. (You need value for money, don't you?)
2) Better speedup. The learning is faster.
3) Use of practical exercise. Though you can do this on you own, the exercise given in the course are known to work and are given at right time.
4) In all the language courses at the end you need to do some practical project. This is the best learning as only after doing some big project you get to know the actual problems.
5) Also, any such certificate from a good academy certifies that you have actually learn the language. In an interview the interviewer will not take you seriously if you say that I have learn this on my own.

share|improve this answer
add comment

My experience is the less you know the better courses are.

Advanced level programmers tend to get relatively little out of them as they find the pace too slow but they're a pretty good way to jump start things for a novice.

Based on this I think your friend is probably better with a course, at least to start with.

share|improve this answer
add comment

Best start would be with a relevant book about a specific programming language at a beginner level(he needs to do some research to find the best one) combined with some practical exercises. After some of the basics are covered he could either try and play with some of the examples by modifying or evolving them in something a bit more complex. A good approach would be to try and create a program by himself - learning while he experiments with code. Study followed by some coding followed by study followed by some evolved coding.

share|improve this answer
add comment

You can always learn what you want autodidactically but as a general rule you will learn faster by being taught, sometimes considerably faster depending on the quality of the instruction.

share|improve this answer
add comment

If he wants to get into programming, I'd suggest taking some programming courses.

There is alot to gain from the formality of an actual course, and having a degree or certification in something technical (computer science / software engineering / math / physics) can really help get (and keep) a job later.

I think the better choice is to take a few classes to get the basics down and augment knowledge later with self-paced books.

share|improve this answer
add comment

Both.

Instruction and collaboration are complementary to research and experimentation. You are best served by obtaining all of these components to your education.

share|improve this answer
add comment

I think it depends on the person. Some people do better at school while others do better learning on their own. I'm definitely in the latter category. That said, I do recommend going to school if possible. I did learn a lot in school, even if my GPA (or the fact that I dropped out) didn't reflect that.

share|improve this answer
    
That's sad, but school always values more the student who gets more formated by what (s)he is asked to do and learn, rather than the student who is interested and looks to understand his own way. –  jokoon Dec 15 '10 at 13:46
add comment

It all depends on the way your friend learns best. If your friend is able to pick it up from a book, then great! If not, than the class may be the best way to go. Either way, the two options are not mutually exclusive. He can get the book and take the class. The nice thing about the class is that there are others there that are learning and they can help each other, something you don't get from a book.

share|improve this answer
    
I think it's more about having someone fixing your bugs/code than collaboration, in this particular example. –  Denys S. Nov 29 '10 at 19:44
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.