I recently got the Microsoft Certified Professional Developer (MCPD) cert in Web Development. The exam focuses on the innards of the .NET Framework, but also touches on some high level topics like architecture and requirements gathering.
Now the exam questions are generally multiple choice, and I see a few patterns that help me guess the correct answer:
- Any answer that says “Use the [insert Microsoft product name]” is correct
- If two answers invoke the same MS class, the simpler one is correct (because their tools are so easy!)
- Any questions about what you have to do when upgrading or managing multiple .NET versions, the answer is usually “You don’t have to do anything, it will just work!”.
- Any question about whether you need to unit test a MS product or a third party plugin, well you get the idea.
It should come as no surprise that a certification on a proprietary technology would have a certain level of propaganda on the excellence of that company’s products, their ease of use and scalability, and the general tendency to steer you to use even their simplest pre-built components rather than creating your own.
I could go on, but the point of this post is that certs focus primarily on the framework, which is fine. You’re claiming to be an expert on a particular software. Companies have invested in that software and want to hire you because you will be more proficient. Microsoft has no interest in making me a great Java programmer.
The question I pose it this:
Does the knowledge gained in such a curriculum make you a better web developer, or does it simply serve to make you reliant on their tools, thus strengthening their industry market share?
I guess first you’d have to define the merits good web developer, then identify how a certification assists in improving those merits. I composed my list of what I would consider a web developer with the total package:
- A deep understanding HTML syntax, structure, the role common display and form elements, and knowledge of how a browser interprets HTML into a visual presentation.
- A deep understanding of CSS syntax, its role, and the ability to use clean CSS/HTML to make a website look like a design composition.
- Knowledge of the client-server relationship. An understanding of the requests/ response lifecycle, an understanding of the role of state preservation techniques: databases, sessions, cookies, hidden fields
- Knowledge of how web servers work, performance, load balancing, security, and architecture strategies
- An understanding of basic programming principles: OOP, separation of concerns, nTier design, isolating and debugging, flexibility vs. simplicity, decoupling dependencies, logic, problem solving
- Database architecture and SQL syntax
- Experience with project life-cycle, specification, QA processes, version control, all that fun business and team stuff
- A comprehensive knowledge of the tools provided by your framework and other 3rd party resources
Personally, I weigh framework knowledge fairly low on the importance scale. Frameworks change very frequently which means deep knowledge of particular tools can become outdated, often with little transferable knowledge. Plus, if you understand the principles, and if you have experience developing without the aid of a thick framework or a glitzy IDE, you generally won’t have a hard time learning those tools.
On the plus side, learning about frameworks through certification can introduce you to areas you may not otherwise tread in your day job, such as possibly performance monitoring or event logging. Also, framework tools all address common business needs. The knowledge of these tools provides a context to learn about other frameworks because they most likely provide similar tools.
I’ve seen junior developers cling to a drag-and-drop IDE like a baby to a bottle. Their first step in solving the simplest problem is often to search for a prebuilt tool, and they are often lost if that tool breaks or requires any customization. I’ve also seen old timers stubbornly insistent on pounding out code in notepad, one character at a time, as they’ve done for the past 25 years, convinced that all these new tools are a fad.
The bottom line is this: frameworks provide a layer of abstraction from the core foundation of the web. Have any opinion you want on this fact, but the important thing is that developers know where the line exists between the framework and the web, so they can more quickly isolate and solve problems. The knowledge of framework tools is necessary to be an efficient developer, but the understanding of the underlying technology of the web is extremely useful for solving problems and making design decisions.
So my feeling is that framework certifications are helpful to a certain degree in making you a better web developer, aside from the obvious benefits of resume padding. What I think we need, though, is an industry-wide web developer certification that is framework independent and focused on the core principles of the web. A web developer’s equivalent to the Bar Exam, approved by the W3C with only the agenda of producing a better web. (If such a benchmark exists, please tell me. I’ve seen some HTML certs on W3schools, but I don’t know how much credibility they hold.)