Fog Creek Software
g
Discussion Board




Can you learn .NET and it's framework with books?


My colleague has been sent to a few "Learning Tree" training course to learn .NET

Do you think I could gain the same knowledge just by reading books & practising at home on pet projects ?

Newbie
Tuesday, March 9, 2004

Absolutely, as long as you have a computer to use for the samples;  choose books with lots of step-by-step samples.

Joe Hendricks
Tuesday, March 9, 2004

IMHO, courses almost always suck.

You can learn faster at your own pace if you are interested enough and have a machine to experiment.

Look for sample code on the net. Lots of sample code. Don't just look at one way of doing each thing, compare different approaches, measure performance, create you own variants.

But, most important, read books that really give you information hard to find out there on the net. For example, instead of reading 'Teach yourself DataGrids in 21 Days' (I made it up), read something like the excelent 'Applied .NET Framework Programming' by Jeffrey Ritcher, that gives you the internals of how the technology works.

Good luck!

.NET Developer
Tuesday, March 9, 2004

The best thing the training courses give you is the simple fact that the time you spend there is actually fully reserved for concentrating on the subject.
All the info can be gotten from different sources: books, online etc.
Of course, the best tutors provide you with a great experience, giving you fast track insights that might be more difficult to come by elsewhere, but most course leaders do not seem to fall into that "wizard teacher" category.

Just me (Sir to you)
Tuesday, March 9, 2004

Let me be the dummy here...

Its easier for me to learn by listening to a teacher than by reading a book. 

Of course if I had to pay the Learning Tree tuition out of my own pocket, different story... :)

josReader
Tuesday, March 9, 2004


I'm not a big fan of courses, and many of the books out there are just fluff. As another poster said, stick with the better known authors and avoid any of the 21 Days books. They are utter crap.

The best advice that I can give is to come up with an idea for a program and then go write it. It doesn't have to be unique or have market appeal. Just go write something. Go build a newsgroup reader, a program that performs daily backups on your computer, an RSS aggregator, a graphics editor, an e-commerce engine, even a bug tracking applicaton <g>....Just find something and start working on it. When something stumps you, turn to Google.

Clearly, you probably aren't going to write anything that is useful to anyone else, but you will learn a magnitude more by needing to know how to do something for your project than you will by reading an article and not having an immediate way to apply it.

Good luck!

Mark Hoffman
Tuesday, March 9, 2004

I'm learning .NET (I already know WINAPI and C++ programming) by working on a project at home without books: by mostly using MSDN, with occasional searches of http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&group=microsoft.public.dotnet

I don't know whether that's exactly "same knowledge" as I'd get from a "Learning Tree" training course ... you could probably check their curriculum, if you want to see a list of the topics that they address.

Christopher Wells
Tuesday, March 9, 2004

I completely learned .NET using only the .NET framework SDK and the Quickstart tutorials at www.asp.net.

Now, I was highly motivated (as I was stuck with a really crappy ASP setup that I hated working with).

I've since expanded my knowledge with technical articles and books, of course.  If I come across a class that doesn't seem like 90% rehash of what I've already learned, I might think about taking it.

Richard P
Tuesday, March 9, 2004

The value of a course is all about the instructor. If you get one that just reads the slides, then you've wasted your money. If you get somebody who's got good experience with the subject at hand, then things become more freeform, and you will get tons of good hints, tips, and best practices that typically don't get written down anywhere.

Another good thing is that with a good teacher, you can ask very specific questions about what you're doing right now, and get directed answers that will get you over your current hurdles.

I teach a COM/ATL class about twice a year, and I try to do that. I usually get good evals since I have the experience to answer "we're doing this, what's wrong?" kind of problems in the context of real problems.

You don't get that kind of stuff from a book.

Chris Tavares
Tuesday, March 9, 2004

> "we're doing this, what's wrong?" ... You don't get that kind of stuff from a book.

I don't mean to contradict you, but you can 'ask' a book "what is the right way to do this?", and/or search for similar questions on newsgroups.

It's also possible to ask any specific question in peer-support forums in the internet.

Christopher Wells
Tuesday, March 9, 2004

Mark Hoffman said, "Clearly, you probably aren't going to write anything that is useful to anyone else [by writing a program on your own and consulting books as you do it], but you will learn a magnitude more by needing to know how to do something for your project than you will by reading an article and not having an immediate way to apply it."

That's great advice.  I agree completely.  Mark points out the main reason why classes are almost always a big waste of money and time (in my opinion, of course).

Humans just aren't made so they can catch onto something like programming just from attending a class about it, even in a good class where instructor knows the stuff and can provide great answers to questions that come up.

To really learn the stuff, you need to have a problem that needs to be solved and, ideally, you need to have knocked your head against a brick wall a couple of times looking for a solution.  Then you're going to be focussed and alert and "grok" the solution when you find it.  It will be yours and you can file it away for future use.

Some classes are better than others, of course, but even with the better ones if you're not primed to be receptive to the solutions you're being presented with (by having problems that you haven't been able to solve), it's going to be like spoon-feeding.  It will mostly go in one ear and out the other.  It may help you to have heard about something later when you run across the problem and need a solution, but you're still going to mostly have to figure it out on your own. 

Maybe not as much as mathematics, but not far behind, you can't really learn programming from lectures in a class.  You can really only learn by doing, and by solving problems as they pop up in front of you.

So I would say, sure, go to a class if you want and if you don't mind spending the money.  But view it just as a way to get your feet wet and understand that the real learning is going to come when you tackle the stuff on your own.  Understood that way, there's no reason to think of "learning yourself from a book" as a second-rate alternative to attending a class.  It's not.  In fact, I'd bet that people who teach themselves from books (and doing on their own) are generally more accomplished than people who attend training classes.  (Of course, I'm not saying anything here about training in a formal CS education at university level, which hopefully combines best of both worlds: students work hard on problems on their own, consult texts, and also go to lectures about the topics they're working on and reading about.  One or two day, or even week long "training seminars" are a whole different animal.)

Herbert Sitz
Tuesday, March 9, 2004

"It's also possible to ask any specific question in peer-support forums in the internet. "

Yeah, but in a course you've got somebody up there who's being paid specifically to answer your questions, and is motivated to figure out the answer if he/she doesn't know the answer.

Plus, an instructor is really helpful when you just don't know where to get started.

I guess I'm just saying that classes aren't useless, like some posters here have said. If you need to get up to speed quickly, a one week class can give you a *big* head start. You can certainly learn such things on your own (I certainly have) but it takes longer.

Chris Tavares
Tuesday, March 9, 2004

> I teach a COM/ATL class about twice a year

Perhaps .NET and its framework are easier to learn than COM/ATL.

> I guess I'm just saying that classes aren't useless

They certainly can be useful. I remember taking a one-week _Structured Design of Real-Time Systems_ course, and then going back to use it on the job: and being pleased that I'd been taught it, because it was applicable.

Although, that was 20 years ago, and I haven't attended another formal 'class' since then.

> Plus, an instructor is really helpful when you just don't know where to get started.

Whereas I did know how to get started:

- The C# book in MSDN, to see the differences between C# and C++

- The MS Development Environment, whose IDE is very similar to MSVC's

- Begin to implement components, whose functionality we had already specified (before we decided to use .NET to implement them).

> somebody up there who's being paid specifically to answer your questions, and is motivated to figure out the answer

When I said it's possible to learn at home, your being equally if not more motivated to figure out the answers to specific questions is probably a prerequisite.

> You can certainly learn such things on your own (I certainly have) but it takes longer

I've averaged about 120 LOC/day in the last 8 days. I spent 15 hours reading MSDN before I started. I've been coding for 2 weeks. 120 LOC/day is the same as on my previous project ( http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=119169 ). Your mileage may vary.

I'd guess one advantage of a course might be that its curriculum could include things that you didn't know you wanted to learn.

Christopher Wells
Tuesday, March 9, 2004

Chris Tavares said, "I guess I'm just saying that classes aren't useless, like some posters here have said."

I don't know if I'm one of the posters who might have implied that classes were useless.  I didn't intend to be, I do think they have some value.

But the original poster was actually asking merely if it was _possible_ to learn stuff on your own without attending a class.  And the answer to that is a definite Yes.

Apparently the training-class-marketing-industry makes some people feel like they can't even learn this stuff without attending a class, and that's pure bull-hockey.  You can learn it just as well without, since really most of the learning will come on your own when you do it anyway, and all the classes really do is give you a little bit of a headstart.  A little headstart, along with (usually) a very big hit to your pocketbook (or your employer's pocketbook).

Herbert Sitz
Wednesday, March 10, 2004

*  Recent Topics

*  Fog Creek Home