n Blog(n)‎ > ‎

CSDP Certification

posted Mar 5, 2014, 7:52 PM by Christopher Ellison
Last year, I wrote about the CSDP preparation course I was taking at the time.  Late last year, I took and passed the CSDP examination, gaining that certificate.  I've been wanting to write this followup for a little while, but I wanted to let my thoughts settle and organize a little first.  

First off, I can say that my general perceptions of the CSDP based on the prep course were only reinforced by the actual exam.  The exam questions, thankfully, at least had proper answers, making them automatically superior to the prep course questions.  Unfortunately, the questions were largely the same types of questions in the prep courses.  

Perhaps I should clarify.  When I was going through the prep course, I was often astounded by the wild swings in attitude expressed by different sections.  Reading the questions and answers in the prep course very clearly exposed the biases and opinions of the author for that particular section.  The obvious examples revolve around the "Agile vs. Traditional Methods" debate.  In the interests of full disclosure, I fall into the opinion camp that the whole spectrum of methodologies is just a range of tools you should have available to you; one of your first jobs as a software engineer is to evaluate the project and choose a methodology appropriate to what you're being handed.  In contrast, the prep course sections would bounce between severe Agile extremism in one section and clear anti-Agile backlash the next.  This is not a reasonable approach to evaluating software engineering methodologies.  I don't know how much clearer I can be without quoting specific questions, and the terms of the NDAs associated with the CSDP prevent that.

Anyway, the questions in the exam exposed this same type of wild opinion-swing, though thankfully to a lesser extent than that in the prep courses.  In my mind, that doesn't really bode well for the general applicability of the CSDP.  I realize that software engineering doesn't have an underlying physics to rely on, but that doesn't mean we should be basing our ideas of professionalism on "agreeing with whoever screams the loudest."  That seems to be exactly the current state of the CSDP exam, though.

The other major issue I had with the exam itself is that it often relied upon questions regarding specific technologies rather than discussing the underlying concepts.  For example, I think Java is a fine language; it's both widely and broadly used.  Does that mean that every single software engineer should be familiar with the inner workings of Java?  If you're working with it, yes... but what if you're focused on embedded systems using C?  What if you're a web engineer developing in other very commonly used languages like Python or Ruby?  Should you still take the time to learn Java?  The CSDP exam seems to think so.  To be clear, I think you should know more than one language as a software engineer; I'm just not certain I'd make the argument that one of those languages must be Java.

When I was going through the prep course, I worried that the CSDP was going to fail in some fairly specific ways.  That perception has been almost completely confirmed by the exam itself.  As it stands, I don't see how the CSDP can really be considered a useful certification without significant additional work.  I wasn't hoping for a be-all-end-all of software engineering, but I was hoping that the CSDP could at least be a useful starting point, a grand overview of topics every software engineer should know.  Having taken it, I can only say it falls far short of that dream, and I don't see much hope that the IEEE will put in the needed effort to rework it into something that useful.