Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

One of the constructs I miss from academia is a curriculum for what must be cove

ID: 642286 • Letter: O

Question

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!

Explanation / Answer

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!??)

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
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.
Focus on what you will use the most and will serve you best
Broaden your focus and learn as many .NET technologies in depth as is feasible
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.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote