ReneX (4) [Avatar] Offline
#1
Hi Jon,

I really enjoy doing a lot of research revolving C#/.Net topics and find myself always learning something new through your website and posting on the C# newsgroups.

I recognize that you really know your C#/.Net stuff and I really think that reading your book will provide me and many others with a lot of cool insights regarding the C#/.Net subject.

However, I find myself getting increasingly frustrated by seeing all the new stuff that Microsoft is coming out with and not being able to keep pace with it. I don’t consider myself to be a C#/.Net beginner (I think of myself as intermediate) but I realize that I still have ways to go before I can think of myself as someone that can be considered an authority on the subject.

Having said that, I was wondering if I can get your opinion on what you would recommend someone like me should do in the next couple of months/year regarding C#/.Net research. My options the way I have them planned are as follows:

1) Spend a couple of months (free time I have after work) going through your book and get more comfortable with the C# 2 & 3 language.
2) Move on and start learning about the new WPF, WCF, WWF etc, and use our book for now as a sort of reference books.

Like I said, I feel pretty comfortable programming with C# 2 but I am just starting out with C# 3. Since I have not read your book, I am not sure how much of your book is tailored towards C# 3 subjects.

Also, it getting harder and harder for me to find the time to do research so I want to maximize the time I have and research subjects where I can get the most bang for my time.

Your feedback is appreciated.
jon.skeet (451) [Avatar] Offline
#2
Re: Off topic question (to read or not to read)
First off, thanks for the vote of confidence smilie

I have a great deal of sympathy for your situation - I've found the amount of new technology coming out (not just from MS, but all over the place) pretty overwhelming too. I'm personally very familiar with C#, have reasonable knowledge of *most* of the "core" .NET stuff, but if you ask me stuff on WPF/WCF/WinForms/etc you'll get blank looks a lot of the time smilie

My book is split into three parts:

Part 1: Introductory material
Chapter 1: Whizz through language features, bit of history
Chapter 2: Go over a few C# 1 topics

Part 2: C# 2
Chapter 3: Generics
Chapter 4: Nullable types
Chapter 5: Delegates (particularly anonymous methods)
Chapter 6: Iterator blocks (yield return etc)
Chapter 7: Bits 'n bobs (partial types etc)

Part 3: C# 3
Chapter 8: "Small" features (implicitly typed local variables, anonymous types etc)
Chapter 9: Lambda expressions and expression trees
Chapter 10: Extension methods
Chapter 11: Query expressions and LINQ to Objects
Chapter 12: Whirlwind tour of other LINQ providers
Chapter 13: Predictions and conclusions

I think even if you're fairly familiar with C# 2, you'll find there's quite a bit in the book which you may not currently be aware of. (Put it this way: there's a lot in there that *I* wasn't aware of a year ago.)

The book isn't really designed to be a reference - at least, not until after you've read it once through from start to end. If you skip around, you may well find you get lost fairly quickly. However, you could *skim* it reasonably quickly (there are a few sections which are pretty heavy but not hugely important to understand in detail *immediately* - I highlight these before starting them, so you can skip them first time round) and then move on to other technologies such as WPF.

Personally, I find life is just easier with C# 3, even if you're only targeting .NET 2.0. Little things like object and collection initializers - and particularly automatic properties - are really handy in almost any code. Likewise lambda expressions are often much nicer than anonymous methods (or "C# 1 style" delegate creation).

If your C# 2 is pretty good, you *could* just read chapter 8 and the first part of chapter 9, then use those new features of C# 3 on their own with whatever other technology you're using. If you want to look into LINQ, then you'll probably want another book *as well* (Manning's "LINQ in Action" comes highly recommended) but at that point the rest of the third part will be important too. Few LINQ books will go into the level of language detail that I do, I suspect. Personally I find understanding the *language* to be important as a way of creating a solid foundation on which my understanding of the library side can be built.

Does that help at all?

Jon
mgravell (64) [Avatar] Offline
#3
Re: Off topic question (to read or not to read)
Can I second Jon's view, but also add:

The .NET 3.0 things (WF, WCF, WPF) are not things that you can really pick up in isolation - I would *only* learn about any 1 of these if I had a genuine purpose in mind. I know almost nothing about WPF, for example - some WF, but quite a bit WCF. I don't recommend thinking of any of these as "must have" - and indeed I'm very glad that in the new MCP programme, WF and WPF are side-features.

In contrast, the .NET 3.5 things (i.e. LINQ) are the exact opposite - LINQ is a philosophy, not a specific tool. LINQ knowledge will help with objects (System.Linq.Enumerable), but also *so* many other things (LINQ-to-SQL, EF, Astoria, LINQ-to-Amazon, LLBLGen, etc).

So given reality (limited time etc) I would spend time learning about LINQ, and the C# 3 stuff that underpins it. For the latter, Jon's book is (in my independent opinion) very good. For the latter - well, LINQ in Action is sat on my shelf.

Marc
mgravell (64) [Avatar] Offline
#4
Re: Off topic question (to read or not to read)
One other thought re the 3.0 tools; in my day-to-day work, WCF is the most useful, as I do a lot of things that involve comms (I'm largely a "tools" person, so pretty UI [WPF] doesn't feature very highly - I leave that for people with design skills...).

However; Astoria (ADO.NET Data Services) provides a lot of this, but manages the comms layer itself - i.e. by knowing when (and how) to use LINQ flavors, you might sidestep the need to learn vast quantities of other tools (like WCF).

Obviously this won't cover every scenario ;-p

And yes - I 100% agree that there is a lot of "new" lately - and perhaps even more upcoming (ASP.NET extensions [MVC, scaffolding], EF, Astoria). Speaking only for myself, I suspect that this may lead to even more specialization - i.e. I doubt I am going to be able to keep up with UI changes (WPF and ASP.NET) while also doing justice to my core competencies (data access, comms, security, etc). Conversely, many of my colleagues focus on UI and "user experience" etc; I fully expect to have to lead/guide them more on data access etc.

I'm fortunate enough to have a big enough department to make this possible - but for a small team or 1-man crew? It would be thoroughly daunting.
ReneX (4) [Avatar] Offline
#5
Re: Off topic question (to read or not to read)
Thanks Jon/Mark

Well, I guess I better stop trying to hide my head under the sand and accept that I need to dig in as much as I can into the new C# 3 language and things related to LINQ.

The reality is that a strong foundation on basic concepts such as C# 3, .Net 3.5 core knowledge and object oriented design philosophies etc can make learning new technologies a lot faster.

Anyway, I am kind of sick and tired of spending most of my weekends doing .Net research. No matter how simple the subject I am studding at looks like, I almost always end up spending a whole week on one stupid little subject just because one link leads to another and another and another…….

Jon’s books concerns me because as far as I understand he covers the underpinnings of the technology and I am a sucker for this kind of stuff, I already know that a paragraph of Jon’s book will probably end up sparking my curiosity and here we go!!..….. another 2 week spent learning how Lambda expressions work from the inside aggggggggggggg.

I guess this wouldn’t be that bad if it wasn’t because 3 months later after doing all this research I am going to be like……. mmmmmm…. How exactly did that stuff that I spend 2 weeks looking at worked??? Did I already forget??? Damn it!!

Thanks guys.
ReneX (4) [Avatar] Offline
#6
Re: Off topic question (to read or not to read)
Jon,

Quick question, does your book teaches LINQ basics or are you expecting your readers to have basic understanding of LINQ? Is it better to read the “LINQ in Action” book and then the LINQ section of your book?

Thanks
jon.skeet (451) [Avatar] Offline
#7
Re: Off topic question (to read or not to read)
I don't assume any prior LINQ knowledge, but I don't really build it up in depth either, when it comes to the specific providers. I cover LINQ to Objects relatively thoroughly because a) there's not much to it anyway, and b) it's how I explain query expressions. Things like LINQ to SQL and LINQ to XML require much more explanation, which isn't really the focus of the book. I whizz through them quickly in chapter 12 to give a good idea of the *kind* of thing you can do with them, and to build up the big picture when it comes to LINQ, but I certainly don't try to make the reader proficient in them.

I don't think it matters too much which order you read the books in - I would personally choose to read my book first, then LINQ in Action, to build from "building blocks" to "real uses" as it were, but I'm sure it would be fine the other way round too.

Jon