views:

184

answers:

6
+3  Q: 

Book or Teacher?

My friend wants to learn programming. Should he learn with a teacher, or learn alone from the internet or a book? Learning alone things can be a great skill in this era, but, is this actually good? Is it better than a teacher? Should he pay to a teacher, instead of learning alone?

+1  A: 

That depends entirely on they way he learns best. I prefer a classroom where I can interact and ask questions. Others learn better alone and undisturbed.

To save money, have him try learning alone first. If he finds he is not making any progress take an intro course.

northpole
Questions you can ask in Stack Overflow.
TTT
For sure, or google...there are a lot of tools that will assist in learning on your own.
northpole
+3  A: 

Different people learn in different ways. Some people will learn well, even better from a book, or off various webpages. Others will learn exponentially better from a teacher.

I'd say, sit him/her/it down with a book and/or a good website and see if they can self-learn. It's a free place to start. If that doesn't work, then perhaps a teacher is a good idea.

That said, having someone that can talk to that does know programming is always a good thing. I suppose that's what sites like SO are here for, as far as self-learners go. Books are great, but when you get stumped, having someone to bounce an idea off of to get you unstumped again is a great help.

Disclaimer: I'm very much a self-learner and self-taught, so I'm liable to be biased.

Matthew Scharley
nowadays most programmers learn on our own. the internet and the internet!
thephpdeveloper
I disagree, especially with the current situation where it's next to impossible to get a job without experience or a degree. And you can't get (commercial) experience without a degree. So you're kind of stuck. (note, some employers will look favourably on OSS experience, but in my experience, they seem to be few and far between).
Matthew Scharley
funny... I'd prefer to hire someone who has made great things in their own time and is self learned over an academic with some work experience from which it is unclear what they did and what they are actually capable of.
Toad
@reinier: I'd rather work for someone who looked at it that way too, but it seems like there's a small cross-section on both sides of the fence. Also, I wouldn't claim to have made 'great things'. I could just be being uncharacteristically humble though.
Matthew Scharley
matthew: as long as someone can get enthusiastic about their code/projects and explain what they did and why they chose certain solutions above others. I've never believed in people who don't program things at home for fun but solely stuff at their work
Toad
A: 

I'd agree with the statements above. Especially, very early on, getting a good grounding in the basic concepts of programming is very important, and your friend should pursue whatever method he/she learns best with.

If your friend is going to go the teacher route, he/she should be aware that no matter what, at some point in picking up programming, there will have to be a lot of independent book (and online documentation and support communities) learning.

tschaible
+1  A: 

When I teach programming and related skills I have found that people vary enormnously in how they learn best. I have found at least the following:

  1. Formal lectures. (I hate doing this but some people like the structure)
  2. Class workshops.
  3. Guided reading through a book
  4. Solving a problem
  5. Being mentored
  6. Working through other people's code

Of these 1 is not possible for your friend. I used to help run a virtual course for guided reading (in fact it was the first course on the 'Net, 1994, run by Marcus Speh on "Object Oriented Programming in C++ and won a best of web prize). Working on an open source project (4) is an option.

When I was in a company I ran a self-help programming course on C++ (using VaxNotes!). If there are no self-help guided programming courses on the web then there should be!

peter.murray.rust
+3  A: 

Does he even like programming?

I'd suggest that he should start reading about the subject. And then follow this:

if ( he.likes("programming") ) {
    if ( he.isSelfLearner ) {
        he.buys("book");
    } else {
        he.goes("course");
    }
} else {
    he.doesSomethingElse();
}

:)

Macarse
he.Master == ChuckNorris
TTT
+1 because of the "else" clause, if you initially didn't like programming then you should stay far away from it.
Spoike
+2  A: 

Like Matthew says, different people learn in different ways - but to really understand things you need a blend of different sources. Just learning from the internet is likely to lose a lot of the context and often examples are stripped down and simplified to make things easier to understand. There's nothing wrong with that as such, but if you then use those skills in the real world without the 'missing stuff' you can easily develop very bad habits without ever knowing you have them.

Personally I think a blend of book learning, just-in-time learning from Google, keeping up with times via blogs and access to experienced programmers (could be in a classroom, but also community events, taking part in open source projects, work colleagues are just as valid) is required to be a really good programmer. Where you start or how you balance those things is really down to the individual.

FinnNk