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.

One of the constructs I miss from academia is a curriculum for what must be covered in order to get a degree in computer science. I started with a .NET shop almost three years ago without having any .NET training. Given my experience with the field and trying to stay up on things via conferences, blogs, podcasts, etc., I feel I'm drowning in a sea of infinite depth.

Having some structure works really well for me, so I thought the closest thing would be certification. It appears the Microsoft Certified Professional Developer (MCPD) would be the closest fit; however, others have said the Microsoft certs aren't really geared for the "get a book, study, pass the test" model -- you need to have actual experience. What if my experience is flawed or doesn't exercise techniques that others consider important? The other attractive part of certification is that it is standardized, meaning that both myself and employers know that I have demonstrated knowledge over certain topics.

I do C#/WPF development for my job and would love to get my hands on a list of things every .NET/C#/WPF developer should know. Yeah, I get the most common stuff like object-oriented design, events, syntax, etc. But the language (and the framework) has many subtleties -- extension methods, lambda expressions, delegates/events, data binding, threading, operator overloading, weak vs. strong events. Microsoft doesn't seem to offer a language-specific or framework-specific exam, so I'm left to books/blogs/wikis to fill in the gaps.

I'm committed to improving my craft through learning and experience. How do you as developers handle this situation? Thanks in advance!

share|improve this question
add comment

migrated from stackoverflow.com Jun 2 '11 at 20:24

This question came from our site for professional and enthusiast programmers.

8 Answers

up vote 10 down vote accepted

I have been developing in .NET for over 6 years and for many of those years I have done as some here have suggested, which is to "learn what you need to get the job done". This has been a necessity for much of the time, however, I find this approach sorely lacking when one wants to grow and become a "good" developer".

I agree with you this lack of curriculum is very difficult. In fact it's not just a lack of curriculum for .NET, but for all of software development and the profession in general. Often this can make it feel to someone as if they are, as you say, "drowing a sea of infinite depth".

That being said, here is the approach I have taken which has served me well. This applies mostly to .NET since that is the technology I focus on (you have to focus somewhere, right!??)

  1. Learn the basics. The basics means learning about the BCL, and about the nuances of your language and .NET in general. I develop in C#, so for me this means reading Jon Skeet's C# in Depth, Jeffrey Richter's CLR via C#, and reading Eric Lippert's blog Fabulous Adventures in Coding, and anything else that I come across that will help me understand the basics. You have to know how your language is compiled, what is really happening when you use certain commands etc. I can't stress this enough, you have to understand this stuff or you are just a code hacker.. For me this also means taking exam 70-536. No, it's not required for the .NET 4.0 exams, but you will learn a LOT about the BCL and .NET in general that will aid you in ALL of your .NET development work
  2. Once you have the basics, I would also recommend taking the other requirements to get your .NET 3.5 certifications. This will serve you as a solid foundation. It will give you a lot of good knowledge about every area of .NET so that you can make informed decisions about what technology is appropriate for what situation.
  3. Focus on what you will use the most and will serve you best
  4. Broaden your focus and learn as many .NET technologies in depth as is feasible
  5. Continue to study other basics - TDD, agile, OOD, DDD, design patterns, IOC, etc. Keep learning whatever will give you the greatest short term ROI, while still keeping your eye on the mid- and long-term ROI too.

You have chosen a tough career. You will never stop learning if you are serious about being good at it. Keep a list of things you think are important to your growth as a developer, prioritize it (giving the most weight to those that will have the greatest immediate impact on your career), and that's your curriculum. Just keep on keepin' on with the learnin'!

Addendum Don't forget to learn about the business domains you develop for. In my case that means I learn a lot about accounting etc. because most of my solutions integrate in one way or another with a company's accounting system. Whatever industry you work in, you need to be able to speak their lingo and understand their pain. This is a very crucial part of being a successful developer.

share|improve this answer
1  
+1 for taking Exam 70-536. I learned .NET as I went along too, coming from a Java and VB6 background. I'm working on this exam now and am filling in lots of gaps. It's possibly the most worthwhile exam Microsoft has. –  Mike H Jun 3 '11 at 1:51
    
@Mike H: I agree it's a great exam, but it's certainly not for the faint of heart! –  Richard DesLonde Jun 3 '11 at 4:59
    
you're telling me! I think it's going to take a while... –  Mike H Jun 7 '11 at 0:18
1  
Also studying for the 70-536, lots of material to learn but so much useful knowledge that I purposely find ways to integrate into solutions at work. It may be a certification and a piece of paper but what you have to go through to get it really gives you something worth a lot more to you as a developer, +1! –  Mohgeroth Jun 17 '11 at 2:52
    
Thanks for your thorough answer, and acknowledging that this career is difficult (if you want to stay relevant). Do you have any recommendations for exam preparation? I've heard mixed reviews about the Microsoft Press books, and I really can't afford (and don't think I need that much hand-holding) training classes. A colleague recommended Transcender, but he used them 5-6 years ago. –  geoffmazeroff Aug 4 '11 at 15:52
show 3 more comments

.NET is huge

learn what you need to get the job done

skim the rest in case it turns out to be useful

there is no "list" or "curriculum" that every .NET developer must know1

1If there is, send it to me.

share|improve this answer
add comment

I think the Microsoft developer certificates are the closest things to outlining a .NET curriculum you're going to find. I have also been looking at these, not so much for the certificate as for the outline of things to study. Take a look at the table of contents in MCTS-Self Paced Training Exam 70-511 and see what you think.

There are certainly other ways to gain this knowledge, but at least the certificate provides a structure, which may be what you're missing. (I've always been a certificate-skeptic, but I do think they are more meaningful when you also have real-world experience to go with them, which it seems you do.)

share|improve this answer
add comment

others have said the Microsoft certs aren't really geared for the "get a book, study, pass the test" model -- you need to have actual experience. What if my experience is flawed or doesn't exercise techniques that others consider important?

When people say that, they mean that the Microsoft Press books that accompany most of the certification exams aren't really geared towards teaching the technology to someone who has never used it.

If you have been working as a (largely self-taught?) .NET developer for several years, then you'll find that the "get a book, study, pass the test" model should work just fine for you.

You will definitely find chapters that cover areas of the .NET framework that you have never had any reason to use. But as a working developer, you should have no problem learning those areas from the book.

share|improve this answer
add comment

If you are thinking to be qualified as MCPD, you need to pass several exams. There is no such a thing called MCPD exam. but I think you already know that. I don't know if you had have a look at the exams but here are they;

MCPD on Microsoft Visual Studio 2010

Windows Developer 4—for developers who build rich client applications for the Windows Forms platform by using the Microsoft .NET Framework 4.

So among those, you need to choose which area you are good at and focus on that. As you indicated, the language (and the framework) has many subtleties but I think they are divided into separate divisions very well.

share|improve this answer
add comment

I like to buy a fairly popular overview book for each technology I am working with. I happen to be a C#/WPF developer as well, so I went with C# Step by Step and WPF Unleashed.

I read through the book once from front to back, then revisit each chapter until I fully understand each one. There are only about 15 chapters in most of those books, so in a few months, you could realistically have a thorough understanding of every concept covered in the book. After that, you start to see the holes where the books did not explain something with too much detail. Look up these topics through online documentation and try them out yourself. Always do as many examples as possible with actual code, so that you can see that you are truly understanding it. If you find that certain topics were not well covered in the books you have, but you keep running into them all over the place, then get a book on that too. For example, if you are C#/WPF developer, you will probably be using WCF a good bit as well, and may find you want a more comprehensive understanding of that platform as well. Add onto that a book on SQL Server, and a book about MVVM, and if you read them all to the point of understanding, write code for each concept, and actively fill in the blanks, its hard to imagine that you will not have a pretty comprehensive understanding of the stack.

I know everyone is always bashing on ".Net in 20 minutes" type books, but books really can be a terrific learning tool (only programmers would need to be convinced of this point : ) ), provided that you are extremely thorough, motivated to learn, and allow for a realistic timeframe.

share|improve this answer
add comment

I'm in a similar boat as I have recently been trying to expand my .Net skills as far as I can. Aside from what is already mentioned, I would keep doing what you are doing and stick with popular blogs/podcasts. Any time you run into something you know nothing about, do a bit of research on it. You can then decide how much it pertains to you based on your current skill level.

Other than that, start looking for side projects to implement with an eye toward using general techniques/parts of the framework you aren't familiar with. If it is very hard to find a project to implement while using "X", then maybe "X" should be further down the list for you.

One thing that has really given me a boost is downloading podcasts and listening to them on the morning commute.

share|improve this answer
add comment

Microsoft releases course materials intended for its classroom trainings and online trainings from time to time. Taking a look at the table of contents of these course materials will help you get a good idea of the curriculum on a broader level. Here's the link to the catalog listing all .NET classroom training courses:

http://learning.microsoft.com/Manager/catalog.aspx?qry=.NET&nav=trainingtype%3aClassroom+Training&btn=1

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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