Some Initial Thoughts On Agile Developer Skills And Certification

There’s a new mailing list over on Google Groups surrounding the ideas behind Agile Developer Skills Certification. After reading this post by Ron Jeffries, I joined up with the group and started reading the traffic. I generally share the same opinions as many of the people on this list about multiple choice, memorization based ‘tests’ – the Microsoft Certifies XYZ type test where the only thing you need is a good memory and no real skill. This type of test is lousy and we should avoid it at all costs.

Then, a response to a another post by Keith Braithwaite got me thinking and re-surfaced some previous thoughts that I’ve had but never articulated. Keith’s statements were:

That seems to me like a somewhat mystical view of "skill". I think that the IEE Certificate I mentioned in a previous post did something useful and conrete. Here’s what I had to do to get it:

Solve a small simulation problem in C++. I got extra credit because I kept my source under version control.

Devise and build a small relational database schema to handle a business problem, put a VB UI on it.

Implement a very (very!) simple network protocol on top of sockets in C. I got extra credit because I made the documentation of my protocol look like a man page.

Model a problem domain using OMT Work in a small team to plan and execute a small development project to build a small app in C++

Write an essay showing an understanding of some well-known IT project disasters and their causes.

The approach that Keith describes here reminds me of the education system for receiving a Masters degree or Ph.D. My wife is a Ph.D. in Social Psychology and a professor at Baylor University. I regularly have conversations with her about the Masters and Ph.D. students that she is advising/mentoring,I was dating her during her last few years of graduate school and I remember her describing how her Ph.D. defense was conducted.

The Masters / Ph.D. Defense

When a Masters candidate goes up for the final ‘certification’ that they are worthy of having a Masters degree, in psychology, they don’t take a multiple choice test, a written test, or anything that involves memorization like that. The candidate has a Thesis in the form of a study, the collected and analyzed results, and the final write-up of the results and information and how it contributes to the global community of psychologists. The candidate takes this information and presents it to a panel of ‘judges’ that grille the candidate with questions that are designed to make them think, all with the purpose of seeing how they respond and how they handle the questioning, as well as to test the foundational knowledge of the candidate, to ensure that they understand the foundations and details of what they have built.

When the psychologist with a Masters degree is then going up for the final ‘certification’ of having a Ph.D. worth skillset, they again go through the same type of process – only significantly more in depth and detailed, requiring much more analysis and writing of the results, and with a much greater level of scrutiny and nit-picking from a much more judgmental panel of other Ph.Ds.

(Yes, I know got many of the details of the Masters Thesis and Ph.D. Dissertation defense wrong. The details aren’t the point and are not that important at the moment.)

Software Development Is Not Unique

It seems the software development community has thought itself to be unique in terms of demonstration of skill, and I believe that it’s an incorrect view of the software development world. We as an industry have a bad habit of this, as we’ve seen with the recent explosion of Lean Software Development and Product Development based theories and practices that are being assimilated into our craft. Psychology – especially social psychology – is as much a ‘touchy-feely’ art as it is science, in my opinion. Sounds a lot like software development, doesn’t it?

Taking A Page From Masters / Ph.D. Candidacy

The point of my lengthy blabbering is to say that I believe we should take a page out of the world of Masters / Ph.D. candidacy and defense to create a similar and as reputable form of Agile Developer Skills certification. There’s a tremendous history and wealth of knowledge to be pulled from, in the education and psychology community, and it would be a shame to ignore such a wonderfully paralleled industry.

About Derick Bailey

Derick Bailey is an entrepreneur, problem solver (and creator? :P ), software developer, screecaster, writer, blogger, speaker and technology leader in central Texas (north of Austin). He runs - the amazingly awesome podcast audio hosting service that everyone should be using, and where he throws down the JavaScript gauntlets to get you up to speed. He has been a professional software developer since the late 90's, and has been writing code since the late 80's. Find me on twitter: @derickbailey, @mutedsolutions, @backbonejsclass Find me on the web: SignalLeaf, WatchMeCode, Kendo UI blog, MarionetteJS, My Github profile, On Google+.
This entry was posted in Agile, Certification, Education, Philosophy of Software. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Jeremy Wiebe

    I tend to feel the same way about the current set of certification exams (I’ve only done MS certifications so that’s all I can comment on). For the most part they are “trivial pursuit” style exams and focus alot on memorization of facts rather than concepts.

    That said, in the business world that we developers must live/work in, certifications carry weight when it comes to winning contracts. I don’t think know how contract decision makers can tell you if a given certification means something or not, but I’d guess it’s a low percentage. And you can bet that if the competition comes down to two companies the one with more certified developers will most likely have an advantage, whether it’s deserved or not.

    I think this is something that we, as a profession, need to change, but it will be a long road to where a non-developer will recognize that certification A is meaningful and certification B isn’t.


  • I have some college and plan to finish later for myself. If it helps me land a job in the future so be it, your point is valid. The time I spent studying in the past for MCP certifications was wasted time that I’ll never get back.

    On the other hand time I’ve spent at Open Spaces and working with Alt.Net peers has been invaluable. Hopefully concepts we consider cutting edge now are required knowledge 10 years from now because I’m growing tired of acting apologist for all things right.

  • @Scott,

    My point was not that we should have to go to school to be certified or get a degree for software development. I’m in the same boat as you – i have some college experience, but only a 2 year associated degree in music of all things. I got into software development on my own and earned my way to where I am on my own.

    My point was that the software development community does not have to resort to pedantic memorization tests like the current Microsoft tests. We can create a valuable set of certifications that are modeled around the ability to actually produce high quality work through intelligence, thought, craftsmanship and hard work – the same way the masters and ph.d. defense is done.

  • T. Moriarty

    I find it amazing how a Computer Science degree doesn’t hold more weight. And in reality, that is what you are arguing for. Well, maybe not you specifically, but the people who want our industry to be more professional. Lawyers, doctors, etc. basically have to get a bachelos degree and a post grad degree. Then they have to pass a state test. Developers can get into the industry with much less education. And they can be outstanding developers. But it is hard to rail against the reality when so many are unwilling to make the sacrifice. I am guessing your wife dedicated at least 7 years to her education. Are developers willing to do the same to raise the level of professionalism?

    Disclamer, I do not have a Computer Science degree, although I do hold a Bachelors in Electrical Engineering Technology. I wish I did have CS degree, but at this stage in my life, I am not willing to go back.

  • @T. Moriarty,

    The problem I have with CS, CIS, MIS, and other such degrees from today’s institutes of higher education, is that I hire a lot of their graduates. Invariably, the graduates that I hire – to work in the field that they have supposedly be trained in – know nothing about software development other than how to put an if-then statement together. I have to train and train and train every one of the college graduates I hire as if they are starting from the ground up – because they are. I’m lucky if they have even heard of source control, let alone had any exposure to strong engineering practices such as TDD and the SOLID principles.

    I’m not advocating that we require any type of degree, as I noted earlier. I would never turn my back on the people that are like me – uneducated, country bumpkins with a pathetic kansas public school education, who happen to find software development intriguing to the point where they become passionate about doing it right. :)

    I’m not even going to say every developer should go through the ‘defense’ style certification. This is not and will not be for everyone. There’s plenty of room for the working-out-of-mom’s-basement software guys. They often help the rest of the world move toward some greater insight and breakthrough.

    Only those who wish to be recognized as industry leaders would or would like to become industry leaders would go through the trials of this ‘defense’ style certification. I would imagine multiple levels of certification, based on the Craftsman/Apprentice relationship at first, possibly traveling through a series of stages such as Shu/Ha/Ri from martial arts, or another such path that ultimately leads to a final title that is the development certification of Ph.D.

  • T. Moriarty

    Don’t get me wrong, I am not advocating that either. I know the degree doesn’t make the person. Ultimately, a person will only get out of college what they put into. I know some CS graduates that are brilliant, I have also met CS graduates that are not worth anything. I guess what I was envisioning, is a CS program that has a good mix of pratical value (source control, test, etc) as well as theory. Then one could have a graduate focus on agile, TDD, etc. I like your idea as well. I would love to have a mentor, or at least more people I could bounce ideas off of. I guess what we are after is a good way to distinguish the talented and passionate from the people that are only going through the motions. Also, I would like to agree, I am not in favor of the multiple choice types of test.


  • @T Moriarty

    There’s a huge difference between undergraduate and graduate degrees here. The point of undergrad degrees is to prepare you to be a complete beginner.

    One other idea is the PE (Professional Engineering) program. It requires you to pass a test to be an EIT (Engineering in Training). You then have to work with other PEs, and after a few years, you can take the PE exam. It’s an accredited apprenticeship model.

  • Hi Derrick-

    I was writing (a couple of times) on the topic, most recently,

    What do you think about Scott Ambler’s rant?