I just wrote my first certification exam for the Microsoft Certified Technology Specialist program. After devoting about 50 hours of study over the course of about 4 months I passed the exam, so I’m on my way to getting the certification (1 down, 2 to go). Woo hoo. However, rather than giving me a sense of accomplishment, the experience has left me disillusioned and very disappointed with Microsoft.
Four months ago, I began down this path a starry-eyed optimist. One of my favourite rants (I have many) is the fact that, unlike pretty much any other profession that requires technical skills — doctors, pilots, mechanics, bus drivers, etc. — anybody can declare themselves a software developer and enter the trade. The idea of a doctor, pilot, or bus driver learning on the job is laughable, but developers do this all the time, generally without great success. I’m convinced that this is one of the reasons why there is such a wide range of skill levels among developers, and few widely practised standards used to design and write software. It’s hurting the industry, and has been for many, many years.
So, I felt like somewhat of a hypocrite for not having written the .Net certification exams. The main thing holding me back was the investment of time it would require — the .Net 2.0 Framework contains over 100 classes, and I had first-hand experience with less than a quarter of them. I had a lot of catching up to do.
Fortunately, Microsoft has published something specifically for this purpose: the “MCTS Self-Paced Training Kit (Exam 70-536): Microsoft® .NET Framework 2.0—Application Development Foundation”. Unfortunately, it is 1000 pages and as dryly written as the title would suggest. But, hey, this stuff isn’t supposed to be easy or we really could learn it on the job. So, I dove in and devoted a few hours per weekend to exploring the .Net Framework, including its dimly lit back alleys.
Three months later I gratefully turned the last page of the kit, equipped with all the knowledge that Microsoft felt necessary to write their exam. But I was now glassy-eyed, not starry-eyed, and felt it advisable to get a second opinion by buying what is called a “practice exam”. Back in August I was a little surprised when a local .Net user group leader told us that he felt a practice exam was a mandatory investment for anyone for anyone who wasn’t blessed with a photographic memory. Until then I had looked upon those things as cheats used by blaguards and other men of low character. If so, call me low. On my first attempt at the practice exam, I scored a woeful 46%.
My mistake was to focus on learning concepts, rather than details, when I read through the Training Kit. I thought it would be useful to learn what options the .Net Framework offers for things like making applications more secure, or encrypting data. I didn’t think it would be useful, or even feasible, to memorize the exact syntax for doing so. Apparently, Microsoft feels otherwise. The exam questions (both practice and real) don’t test your knowledge of the relative advantages and disadvantages of the various methods of, say, encryption, but they do test your ability to select the correct syntax for encrypting a string from among several very similar blocks of code. Passing the exam won’t necessarily mean you are a knowledgeable .Net developer, but you’ll be a pretty reliable .Net code parser.
But this story has a happy ending. The practice exam turned out to be a much more effective tutor than the Training Kit, by focusing on quality rather than quantity. (Based on others’ recommendations I chose to use MeasureUp‘s practice exam, but several similar products are available.) The software consisted of 170 multiple choice questions, with explanations offered of what was wrong with each of the incorrect choices. As it turns out, they’ve done a good job of selecting questions and answers which teach you what you need to know to pass the exam. They don’t give you the real exam’s questions, of course, but I found that pretty much everything on the real exam dealt with a method, property or setting that appeared on the MeasureUp practice exam. If you read and fully understand the explanations that accompany each of the questions, then you should do OK on the certification exam.
But, of course, 8 hours of working with the practice exam isn’t going to teach you all about the .Net Framework. This is the reason why I’m so disillusioned with the certification exam: it’s a lousy way to gauge your knowledge of .Net. Instead, it tests your ability to memorize the exact wording of a relatively small and (in my opinion) not particularly important subset of classes, methods and properties. I can’t imagine why any developer would memorize those things when you can look them up (or, if you are using Visual Studio, have Intellisense fill them in for you).
If, in order to pass the certification exam, you memorized the exact name of every class, method and property mentioned in the 1000 page Training Kit, then you are a) a certified genius and b) probably still not going to pass the exam, since a significant percentage of the exam questions are not sufficiently covered in the Training Kit. (Microsoft makes you sign an NDA before writing the exam so I would be unwise to list examples, but hopefully I can get away with suggesting that you research XML serialization to a greater extent than is covered in the Kit).
Next up for me is the 2nd exam in the MCTS trilogy: “Windows-Based Client Development”.. Microsoft Press offers an 800-page Training Kit for this. But what’s the point of devoting the next 3 months to it, when 8 hours of working with a practice exam will likely be all I need? In theory, the point of the time spent training is to build up my skills as a .Net developer so that I can prove them by passing the exam. In practice, the exam does a lousy job of proving this.
Sorry, Microsoft, but I’m giving you a failing grade. I wish you’d take advantage of your own “Second Shot” program and write this exam again!