The value of a qualification.

Partly because the company I work for is looking for new developers and partly because I?ve been thinking about getting some kind of piece of paper that says ?I can do what I say I can do.? I?ve been looking at training and certifications available in IT and in particular in software development.

The company I work for mainly uses Microsoft .NET so the logical certification to look into is a MCSD/MCAD from Microsoft. (*sigh* this alphabet soup stands for Microsoft Certified Solution Developer / Microsoft Certified Application Developer, you learn a lot while trying to puzzle out CV?s.) But after spending some time browsing around the MSDN site at Microsoft and various other forums online, I keep seeing posts like the following:

I?ve never heard of Regular Expressions what are they?
And what?s the difference between a regular expression and an irregular expression?
And what exactly is an Expression?

Paul Surname ? Seattle, USA
MCSD

And no I?m not joking I keep seeing posts like the above by people who have a MCSD certification who actually don?t know what basic stuff is and it appears can?t use Google to find out. Admittedly I don?t know a lot about Regular Expressions but I do know what they do and how they can be used and have used them on occasion. (in .NET even) I have no idea what an irregular expression is but I?m sure if they do exist Google (or a similar search engine) will be able to enlighten me.

Then of course while browsing around the website of companies that provide training for a MCSD or similar qualification you see things like the paragraph below which explains why there are people like Paul.

Entrance Requirements

Ideally students should have a matric certificate and/or a good knowledge of a Windows Operating Systems. For those who are not computer literate, the necessary training will be held before the commencement of this year course.

The above paragraph comes from a website of a company that provides training for MCSD qualifications and is on the page that has all the details about what you need to get a MCSD qualification.

Maybe I?m wrong but surely you should be able to use a computer, internet etc before attempting to get a qualification in Software Development? Wouldn?t this be like taking a creative writing course but being unable to actually read or write? Or becoming a librarian having never seen or used a book before?

This all reminds me a lot of a MCSE I once met who had a MCSE but knew absolutely nothing about Computers or Windows. After chatting to the guy for awhile I suddenly discovered why, he had managed to get the certification with only minimal use of a computer (he didn?t even own one at the time.) The most computer use he had was while he was actually writing the exams. How did he get an MCSE? Well he just studied really hard and could almost recite the book back to you so it was easy to answer most of the questions. This was back in the days of NT 4.0 when having an MCSE almost guaranteed you a job; in fact many training places actually said that if you got a MCSE they would find you a well paying job and if they couldn?t they would give you your money back. (Or something like that?)

Does this put me off getting a qualification like a MCSD? No, not really. I realise that because of the popularity of Microsoft products you?re going to get a few people who got the qualification because it seemed like a good career move even though they should have gone and done something else like street sweeping, burger fryer, lawyer or doctor or something. What it does show is the value of experience and how it actually can be more important than the qualifications. As a friend of mine always says ?Qualifications get you in the door, experience keeps you there.? (Or something like that?)

So how exactly do you get experience? It?s that viscous circle of how do you get experience if your require experience to get a job to gain experience. One way I guess is to go work for nothing or slave wages, the problem is that often you have to sign a contract or something which means you tied up for a year or so doing something you really don?t want to. The real way to gain experience is to actually do something, for example coding silly applications for cheap for friends and family. I did plenty of ?coinage? spreadsheets that worked out the correct coinage for wages or applications that did reports or something for friends and family or sorted images. The other thing you could do is contribute to an open source project or even start one, this is an excellent way to actually learn how to apply your newly acquired skills solving real world problems. Most open source projects need help and there?s always something simple you can start on. The other advantage of contributing to an open source project is that if you?re good you gain a ?public? reputation for knowing what?s going on. This means that if your future employer ?Google?s your name? they?ll find your bug reports, CVS check-ins and examples of your code.

It?s amazing what you?ll learn when you actually start trying to apply all the theory that you?ve got to a real world problem. I probably learnt the most about software development when Gary and I ran Iridium Software, our little software development company that was responsible for Freight Manager. All of a sudden we had to work out exactly how you speed up the launching of an application, working to real deadlines and bug fixing in an application with 1000?s of lines of code and still trying to run a company and do the accounts.

Of course I?m picking on Microsoft certifications they?re an easy target because there are so many people with them. Java certifications don?t seem to be as common and generally the people who have them seem to be a little more clued up about what?s going on. I haven?t seen any Python or Perl certifications although I guess being able to actually read Perl would be proof enough of your l33tness.

I haven?t mentioned University qualifications either because they?re a very different type of qualification. A University qualification is more about teaching you to think and teaching you the underlying theory of how things work rather than specific implementations of those theories. So you wouldn?t learn how to do X in C# .NET 2.0 or something like that, but you?ll know more than enough to be able to puzzle out how to do X and better yet you would know how to do it in other languages should you need to.