.NET Certification Blues
By Jonathan Goodyear
As the .NET Framework and Visual Studio .NET (VS .NET) made their paces through beta testing, a common question kept cropping up: How would Microsoft handle developer certifications for .NET? A .NET Microsoft Certified Systems Engineer (MCSE) track was released fairly early, but Microsoft kept almost everybody in the dark about its plans for a Microsoft Certified Solution Developer (MCSD) .NET certification. When the question was posed in front of hundreds of developers at VSLive Orlando's Midnight Madness in October 2001, the Microsoft panelists didn't really know how to answer. In fact, I was still unable to get answers from Microsoft mere hours before the VS .NET launch. It was frustrating to keep running into the same brick wall of shrugs and blank stares.
Shortly after the launch of VS .NET on February 13, 2002, I finally got some answers. Microsoft has created two developer certifications for .NET. The first is the Microsoft Certified Application Developer (MCAD) certification. This is a subset of the premium MCSD certification. After reading over the specifics, I'm rather disappointed. Disappointed in the way the exam specifics were shrouded in mystery, and disappointed in what appears to be the final product. I think things could've been handled much better.
Although Microsoft did a great job of working with other organizations, such as the W3C, IBM, Sun, and Oracle to create the standards leveraged by .NET, the same cooperation wasn't extended to existing MCSDs when it came time to decide their certification futures. I find it ridiculous that Microsoft would disregard the collective knowledge of thousands of expert developers and develop its new exam tracks in a vacuum. Developers like to be spoken with, not spoken at. Many companies have upper-level management that get themselves in hot water because they haven't yet realized this tenet.
You may think that I've forgotten about the certification beta exam process. While moderately helpful, beta exams don't leave open enough latitude for real change to take place. As beta exam takers, you're allowed to influence the pattern of the wallpaper or the outside landscaping, but the house has already been built. It's the foundation of the .NET developer certifications with which I take real issue. What if I really wanted five bedrooms instead of four?
I think that creating two levels of multi-exam .NET developer certifications was a step in the right direction, but the requirements for each are out of alignment. For example, the MCAD certification doesn't require the "70-300, Analyzing Requirements and Defining .NET Solution Architectures" exam. The frequently asked questions page on the Microsoft Certification and Training Web site states that the reason for this omission is that the relevant parts of the .NET Framework will be discussed in the context of the VS .NET tool. Unfortunately, this is precisely the attitude that has led to an onslaught of developers who cannot function without fancy wizards and prefabricated template code. Tools are a way to make your development efforts more efficient. They shouldn't be a substitute for knowledge about what's going on behind the scenes. A firm understanding of the .NET Framework is fundamental to successful .NET development, and a certification that doesn't include it is severely crippled.
It also confuses me that Microsoft has continued with its support of singular language certification tracks. As an example, you can become a .NET MCSD without any knowledge of Visual Basic .NET. Or, you could do the same without touching C#. While this approach may be satisfactory at the MCAD certification level, MCSDs need to be held to a higher standard. MCSDs are expected to have the knowledge to bridge disparate systems into a cohesive workflow. Odds are, those systems aren't going to be developed solely in one language. The ability to grasp and understand multiple languages is essential to being a top-tier developer. Knowing only one development language is tantamount to a United Nations translator who knows just a single spoken language. It doesn't make any sense.
Microsoft has made the task of learning .NET languages rather easy by encapsulating 90 percent of the features of any .NET language inside the .NET Framework classes themselves. Picking up a different .NET language flavor is just a matter of learning the semantics of a new syntax. It no longer requires learning an entire new API. No matter which language camp a developer adheres to when they have home field advantage, they simply must get used to handling other terrain. Microsoft has made a grave mistake by over-emphasizing the "lifestyle choice" mantra. More often than not, the choice is made for us.
One of my biggest gripes with the new .NET developer certifications is that they don't take specialization into account. To obtain my MCSD, I was required to take both client-side and distributed (e.g., Web-centric) exams. There were only two major players in the application client field, so this wasn't too much of a problem. With the explosion of different application clients, however, it has become necessary for niche players to enter the field. Those players need specialized certifications. For example, some developers will develop almost exclusively using the Windows Forms classes on the client. If all they want to obtain is an MCAD certification, then they're fine. But what if they want a premium certification? Under the current system, they are flat out of luck. They have to study for and pass several Web-based exams that they have no use for in their current job function. The situation gets even worse for those who develop exclusively for mobile devices. There aren't any exams targeted for them. Instead, they'll probably end up lumped in with the ASP.NET developers with whom they share very little in common. It just doesn't make any sense. In the NFL, there are players who make millions of dollars a year while only playing in a handful of plays per game. More money than some of the players who play all of the time. Why? Because they're specialists, and when you really need them, they're there to save the day. Many developers (myself included) make their living off of specialization, yet there's really no appropriate .NET certification that takes this into account.
Not surprisingly, one of my favorite books of all time is Dr. Seuss' If I Ran the Zoo. In the book, young Gerald McGrew travels the world picking out a perfect array of animals for his imaginary zoo. I'd like to give this idea a try with .NET developer certifications. If I ran the .NET certifications, developers would be required to learn the .NET Framework inside out before they were awarded with certified status. Developers would need to break through the barriers of language homogeneity and learn to effectively communicate with code from other systems. Web Services can't do it all. If I ran the .NET certifications, developers would be able to earn premium certifications in specialized fields like ASP.NET, Mobile Internet, or Windows Forms development that would enable employers to more easily locate developers with specific skill sets and expertise.
Just as in Dr. Seuss' book, I really don't run the zoo. I do hope that Microsoft changes its tune, however, and opens its eyes to the true composition of the developer community it helped forge. Things aren't as simple as they used to be, which is a good thing. As developers, though, we need a structured certification system that reflects the complexities, specializations, and interconnected nature that will drive technology for years to come.
Check out these relevant links:
Jonathan Goodyear is president of ASPSoft (http://www.aspsoft.com), an Internet consulting firm based in Orlando, FL. He is a Microsoft Certified Solution Developer and is author of Debugging ASP.NET (New Riders Publishing). Jonathan also is a contributing editor for Visual Studio Magazine. Reach him by e-mail at mailto:[email protected] or through his electronic magazine, angryCoder, at mailto:www.angryCoder.com.