Wednesday, 8 July 2009

Certification vs. Burnination? Recruitment, Employers, Developers – Let’s Talk (Long)

Robdor This has been something that has been playing on my mind for quite some time, so I thought I should get my thoughts out onto the Interwebs and see what people thing. But first a little background..

A Little Précis on Rob

I have been working with C# in the “pro” environment for about 2 years. Before that I had about 1.5 years “bedroom programming” experience. I am a relative newbie to the development world.

In the past year, I really wanted to shake that feeling off. I spend nearly ALL of my time studying and [hopefully] improving my craft – ask my friends, they think I am a loser.

Would I consider my “.NET Skills” my selling point? Probably not – the one thing I have always prided myself on is my attitude:

  • I do not miss deadlines (unless things really hit the fan).
  • I am not afraid of looking stupid, I am afraid of being stupid.
  • I am 110% honest. No matter how bad I look.
  • Always, always, customer first.

I KISS – Keep people happy. Spare me red tape, spare me B.S. – let’s just work together and get the job done.

Back when I was training for the forces (failed entry due to eyesight) I kept it even more simple (and crude – forgive me)

         I do not f*ck around

Moving on..

Certification

In order to try and make myself more “sellable” I have been working towards some Microsoft Certifications (I have Windows/Web 1.1, Now working towards ASP.NET 3.5).

Recently however, this has REALLY been bothering me.. I am constantly having problems trying to brute-force meaningless crap into my head. The MS certifications are notorious for really grilling you on things that actually are hardly ever used. It’s trigonometry all over again.

This would be fine if I did not have lots of other things that I feel that I should be looking into. I genuinely feel like I am wasting precious clock cycles in my brain. When I could actively be learning things that make a difference to how I work, what I can do for my employer and ultimately, the customer/end user.

Burnination

This is a reference to “Trogdor the Burninator” and some fun banter I had with my previous manager. He used to call me “Robdor the Burninator” because I would go crazy at lame code in the repository and then hack like crazy to fix it (we even have archived projects called “xxx – PRE ROBDOR” – they make me happy).

Anyway, the whole idea here is that I am a developer, I enjoy cutting code and I want to solve people’s problems for them.

As an example, I recently started a personal project. I want this project to evolve into a product. I want it to be worth lots to lots of people. I want to change the way people work and ultimately - save them money and help their business grow. In return, I hope I can get a business of the ground and grow myself.

I have been working on this project for about three days now. In that three days I have learned more about:

  • Prioritising tasks/features effectively.
  • Improving the design of my code for increased testability.
  • WPF
  • Organising my tasks/features/futures into some logical sense.
  • How to use Git and remote repositories.
  • My ability to estimate timescales on features.
  • Innovating is not hard (per-se) when you are free to do it.
  • How much I enjoy writing code.

.. than I have in the last year at my employer. I kid you not.

Now, looking at that – what do you think is actually going to have a greater impact on the work I produce for you?

The Usual Suspects Job Requirements

I have seen far too much weight applied to certifications/meaningless experience when it comes to job opportunities.

In the current climate, there are a lot of people looking for jobs. There are CV’s flying everywhere. Now I know for a fact that my CV has been instantly binned because:

  • I have not had >5 years experience in .NET.
  • I do not have a Comp. Sci. degree.
  • I do not have a MCPD

When I can also tell you:

  • I have met people who have > 5 years .NET experience but cannot write a unit test using Debug.Assert let alone xUnit etc.
  • I have met ASP.NET developers that have never written a line of Javascript.
  • I know people with an MCTS in Windows/Web Dev but cannot code up a simple CRUD app, let alone apply design patterns etc.

Now, please do not take this as a flame against those people, it really is not. My point is this, these “basic” requirements can easily be met by people who will genuinely struggle with a lot of development roles.

Training for the Royal’s was a classic, you would often meet absolute beefcakes who would crack and crumble REALLY easily. But the skinny, spotty 16 year old kid would pass every test with flying colours. Why? Looks can be deceiving and the only way to really test a person is to bring them in and run them through the mill.

Selection

Sure, I understand that you need some kind of filtration process, you cannot possibly have EVERY applicant in. But please know what you are shopping for before you go to the supermarket. I am finding myself actually getting turned off of opportunities that use the same old boilerplate crap. “Your loss” you are thinking Mr Agent/Employer right? WRONG – I think most people with even just a reasonable amount of talent are feeling the same way and you are potentially losing out on some great people.

This is not to imply that I am the greatest geek in the world, far from it. But I know that given a good opportunity, I will take it and run with it, that is my nature. I am the geek that will likely die at 40 by way of a stress-induced heart attack, and go to heaven/hell mad at myself for “being weak”.

OK Geek, So Now What?

Apply some brain-time to it:

Understand the Lingo

I am sick to death of being told “it’s a great opportunity” by recruiters that do not know the difference between “C# Windows” and  “C# ASP.NET”. How the hell can you find me a good opportunity if you can’t read the damn label?

Work for Us, Not For You

Modern developers are nothing like the geeks of old. We endeavour to approachable, helpful, honest and act with integrity. We have to. We are not douche bags so do not treat us as such. Talk to us, build a relationship and genuinely want to help us/make us happy. Sure you may lose a little commission or a little time, but one happy geek who refers you to their network of 200+ other good geeks may actually get you the exposure and results you are actually looking for.

Understand that Burnination Can be Worth a LOT more than Certification

Keep an eye out for those that are heavily invested in developing themselves. Someone who is very active in the community or actively developing themselves can bring valuable insight to the team. Don’t underestimate what that can do for your business.

Know What You Want and What You Need

Do you want the safety of that little boilerplate piece of text HR have used for the pass 15 years, or do you want to find the most up-to-date an innovative person you can to drive your business forward?

If You Scared, Use Protection

Many modern processes (such as Agile methodologies) are excellent at highlighting problems early. I am sick to death of hearing managers moaning about how they have “gotten their fingers burned in the past” as excuses for stepping outside the box with recruitment. Stop moaning and start managing! YOU are in charge.

Look at how YOU allowed a “bad apple” to sit in the team long enough for it to become such a major issue. Nearly every employment contract I have signed has a grace period where my employer has the right to bin me without warning. Use that time. Put me through my paces. If you don’t see any hope, exercise that right. But I will say, give people a chance to correct mistakes and if things are not working out – they should know about it. Geeks are in fact human.

If this is not an option, change the way you work, have increased checking, pair program, have 100% code reviews until the other developers are happy with the output. Take control and stop deferring responsibility. I really would not be surprised to see a greater success rate from managers really investing time in making sure they have a solid “integration process” for new employees.

Don’t Throw Recruitment “Over the Wall”

There has been a classic situation like this with designers and developers for a long time. I have often been regaled with tales of “these crazy designers” and I have also witnessed some of it myself.

The problem is this - developers write code and throw it over the wall and expect the designers to make head and tail of all their geek speak and “logical” UI’s. Designers create really sexy UI’s that look great but fall apart when the data from the DB actually replaces their “Lorem Ipsum”. Problems ensue because once the respective individuals job is done, they just “throw it over the wall” then the mess is in someone else’s garden.

In recent years, these barriers have started to come down, and it shows. I actually really enjoyed a recent project with a third party design company because I worked with them, I learned stackloads and had a lot of fun seeing their creative magic at work. We did this by maintaining a really tight loop, always assuming joint responsibility for the end product and keeping each others best interests at heart.

I think WE need to do the same with recruitment. Yes "we” – employers, managers, developers, everyone.

  • Take the time to educate them (whoever you are talking to) on YOUR needs. Don’t write them off straight away. Let them know your issues and give them a chance to address them.
  • Respect theirs, yeah we can all get annoyed, we are all very busy, but they have needs too.
  • Both aim for the same goal – a happy employee with a happy employer. Yes recruitment agents, that means stop drooling over your commission cheque for 5 minutes.
  • Those in the middle (Agents, HR) help both parties get their point across. “Sure, this employer uses VSS, but they reward internal training with a days holiday – why not train them on SVN?” or “Sure, this person interested does not have Comp. Sci, but they have worked with X technology and we are really moving in that direction”.

You get the idea. Really put on your “matchmaker” hat rather than just indiscriminately forward some people and brutally chop down others.

In Summation

I personally feel that too much weight is applied to certifications by companies that somehow want to take the “easy” road. They somehow feel more safe slapping a qualification on it. Maybe it gives them more protection if something were to go wrong. Who knows?

What I do know is: I am really starting to wonder if these are the kind of people I want to be working for. I would much rather continue working for a crap/mediocre employer and working to improve myself to the point where I can go solo/start a joint venture as opposed to move somewhere that cares so little about the true quality of their developers that they just slap a boilerplate label on it and hope for the best.

Certification does not make better developers. Developing makes better developers. My perception of this has really changed drastically over the past 6 months and I have yet to come up with a good counter-argument to this internal change. It genuinely feels right. I am more enthusiastic than I have ever been (even after passing certs.) and I am starting to amass some code to prove it.

I believe the truth is this, you are only kidding yourselves.

What are your thoughts? Certification or Burnination? Is this a problem or a symptom of internal issues/false mindsets?

16 comments:

  1. I think you are missing two key points here:

    1) Certification carries real financial value to Microsoft Partners. It's a points system. Wanna be an MS Gold Partner and save tens of thousands on software licensing? You need a certain no of MS certified devs to earn those savings

    2) I disagree about the content/relevance of certification content. All certification I've seen is aimed at giving broad (not in depth) coverage of a topic, the idea being that when you find a need for a specific area you're at least aware of possible solutions in that area which you can dig into in depth at the appropriate time. But if you are not even aware of their existence, then .....

    It's become fashionable to attack certification, especially from the cool kids who are just too lazy to put in the hard work required to get them. Yes, of course there are bad programmers with lots of certification, just as there are bad ones playing with all the cool toys, rushing from one fad to another without thinking through the best tool for the job (in terms of lowest cost, ease of maintainability for the AVERAGE developer etc) . But being a good developer is about lots of things and education/certification is just one string to be added to the bow.

    ReplyDelete
  2. I feel the same way about recruitment agents, but unfortunately the reality is they will never work for us except out of the goodness of their hearts. We don't pay them, so they don't work for us. And like, say, project managers, it's just not their responsibility to know any technical details about the work that we do, even if it helps them do their job better.

    ReplyDelete
  3. The people doing the recruitmentcan aslo share some of the over emphasis on certification here, the recuiter works off a spec from an employer.
    You point about self study and development is crucial, but some people elect to go the extra mile and get certified in their own time and I value that too.

    ReplyDelete
  4. There’s something to be said for Ian's second point. Certification does force you to obtain a broader scope of a given technology area than you would get in day to day use. Invaluable when you hit a problem which you haven’t encountered previously.

    I've never been certified, partly because it’s never been an issue with clients and partly due to a very early experience with certified network engineers when I was network manager at GMTV.

    Part of my job at GMTV was managing the Novell Netware mirror (SFT) servers. Whenever a drive failed the server reseller would send in a CNE (Certified Netware Engineer) to 'rebuild' the servers. It only took a couple of times of watching them nearly wipe our servers by mirroring in the wrong direction, for us to tell them that their job was to be an observer and to go nowhere near the console.

    However, as experienced as myself and my colleagues were at mirroring a Novell SFT pair, the CNE’s were useful when you needed the broader knowledge of tweaking Netware installations. They provided a reliable source of information on the more standard areas of Netware. Part of that was Novell ensuring their certification process covered as wide a range of Netware topics as possible.

    I believe you can get some of that breadth of knowledge by participating in user groups, attending conferences, and reading oodles of books and blogs to track areas of interest which you may not yet be applying. However, it's much less formal, is hard work and it very hard to quantify on a CV.

    In fact I’ve taken to presenting at user groups and conferences like DDD in order to ‘force’ me to study specific topics in more depth, and then coherently organise that information for others. Fortunately that can go on my CV.

    At some point I may get Microsoft certification, but if I do I suspect it will be a personal intellectual and developmental exercise. I don’t think any of my clients will really care.

    ReplyDelete
  5. I agree for the most part with what you've said. I strongly disagree with professional certification programmes. They often seem to represent the kind of people that think they can gain job experience by book learning without any practicality and it always seems to show on the job.

    I'm aware that there are some fantastic people with MS/SUN/Cisco certifications, but at the end of the day I suspect the famous internet certified devs are the tip of a massive iceberg of people using certification as a checkbox to a salary raise.

    On top of that, as someone with a computer science degree, I don't value them whatsoever. They often teach the wrong things and are constantly out of date as far as applicable skills go. They often masquerade this under the banner of teaching principles not skills, which is all well and good, however when they still insist on teaching practicle skills that are out of date and old or broken models of development it seems like a rich comment at best.

    A good little bit of experience and some drive are all you need. I'd honestly be in favour of a personal-statement like C.V. (in fact, my own has something of the sort to get this across) that gives you a taste for the person. Combine that with phone screening and a bullet point list of competencies and you'll get quite an accurate sense of the level of knowledge and enthusiasm. Recruiters don't and will never see this because at the end of the day, they're sales people paid by the "other side" in the negotiation.

    I strongly disagree that the "younger set" avoids certification out of laziness, I actually feel like the current "next generation" of developers and cross functional teams have more of an emphasis on learning that ever before, especially as they're armed with the tools and accessiblity of information to do it in the right way - an applicable and consistent way.

    In short? Fuck recruiters, fuck certification, embrace learning and really CARE about what you're doing.

    ReplyDelete
  6. I agree on your points with the certification / education side of things.

    A few years ago we took on a developer who previously had no commercial experience and very few qualifications, but in his interview he showed a flare and knowledge none of the other candidates showed. It was the correct decision, turns out he's the best developer I have ever worked with (hat tip to @jagregory).

    I don't have ms certification either and have been asked about that in many interviews, it clearly has been a problem for some people, even though I've pointed out I've read the books but felt I was learning nothing new from them.
    I personally feel I've learnt a lot more from being involved in OSS projects and I honestly believe every developer should get involved in OSS projects and stop hiding behind their screens.

    In regards to your points on recruitment agencies, unfortunately it is very difficult to get away from using them, especially in areas where finding a developer is difficult. I've had endless frustrations with agents though when stating I am looking for a web developer with .net experience and they constantly send me any .net developer they come across. Agents need to realise that to be a web developer you need to have good front end skills as well such as HTML (with knowledge of semantic markup), CSS and JS etc. To be a good web developer you need to know and understand the whole process. Yes I do specify all those other web developer skills to the agents, but they somehow ignore those and just concentrate on the .Net stuff.

    Agents also get very confused if I mention Alt.Net ;-)

    ReplyDelete
  7. Sorry should have added this to my last point.

    For those who say certification has real financial benefit to companies, I understand what you are saying, but surely companies can gain real financial benefit from taking on great developers who don't necessarily have certification, simply by the fact that the quality of the development will be better.

    I'm not saying all certified devs are bad and all non-certified devs are great, more that certification proves nothing. Experience and ability are far greater attributes. Don't ignore us devs with no ms certification.

    ReplyDelete
  8. I've watched a very experienced and talented dev manager bin CVs simply because they've over emphasised their Microsoft Certificates on their CV.

    Some businesses are just ignorant snobs though. My degree is Computing and Information Systems and I've been knocked back because it's not Comp Sci. That's normally a good indication that you're not a good match.

    Cracking rant Rob, keep it up.

    ReplyDelete
  9. There are too many lazy arsed developers out there that slag off certification because they're not intellectually capable of studying at that level.
    I'm just about to embark on MCPD certification myself and am looking forward to the challenge as I'm studying as a personal development exercise for my own benefit. Studying for the MCPD will give me a broader depth of knowledge of the MS stack which will ultimately help me out in my day to day tasks.
    If it gets my foot in the door in a recruitment process, then that's a bonus.

    ReplyDelete
  10. Nice post Rob, I think it is possible to pick something up when doing the MS certification. However, I think you can pick up a lot more doing other things.

    The company I currently work for bins CVs that have any MS certification listed. A little too harsh perhaps but I think it emphasizes the fact that there is a major split in the software industry about the importance placed on MS certification.

    ReplyDelete
  11. @ John Polling, I agree that companies can "gain real financial benefit by taking on great developers who don't necessarily have certification." But that financial benefit is harder to measure than that gained from the MS Partner reduced licensing fees. Some organizations will pursue the more-easily-measured benefit over the other. "Tell me how you measure me and I will tell you how I will behave."

    ReplyDelete
  12. very good post Rob, and my thoughts:

    Certification
    I think fundamentally I relate this to my degree (computing related) - my first 2 years I hated it, didn't see the relevance of it, and didn't have a clue why we were covering all of the topics that we were... until I got my first job. I then found I was normalising databases without thinking about it, thinking about the implications of designing an object and its relation to the overall solution etc. What MCTS will give (if done correctly, which is what I'm also working on, albeit slowly) is a more thorough understanding of the framework, a more thorough understanding of the tools available to you, and will make you a more rounded developer. Sure, you may then re-focus on a very small area for your employer, but you are more aware of what is out there to support you for future problem solving. There are those that do it 'wrong' (Indian software houses spring to mind, where there are documented cases of their developers going over the set of questions over and over and over again till they can reliably pass) - in that sense, no, the MCTS is pointless. But if done right, I see it being of very great value to you, both day to day, and from a CV perspective.

    Self deprecation and you versus the world
    Rob, this one is fantastic - honestly, it was one of your earlier posts that helped me realise I was getting into a bit of a rut just focussing on client delivery and widened my perspectives/thoughts on where I wanted to be. Hell, I follow you on twitter because you have good stuff to say, and you're one of those developers I rate very highly.

    One of the things I've found recently is that my blogging has been seen by a perspective employer, and rather than them thinking 'great, he's pushing forward to learn more, good candidate' they thought 'he doesn't know enough, he's trying to learn' - initially they didn't want to see me simply because of my blog. Thankfully I was able to reply to their thoughts letting them know exactly what skills/development I'd done over the past 4-5 years, and I got the job at first interview. I wouldn't change what you write at all, you look at technology in the right way, and as Jeff Atwood posted on a blog yesterday, enthusiasm is the best starting point - it consistently begets experience/skills, which in turn will promote enthusiasm, and it gets cyclical. You're clearly seeing that with your tech days and the play with pomodoro, and it's great to see.


    Don't give up hope mate, recruitment agencies aside, employers will see what you're doing and will realise what a find they have.

    Cheers,
    Terry

    ReplyDelete
  13. I agree, many put too much weight on certification but that is not always the case.

    I have only been a professional propgrammer now for about 3 years and I'm a Software architect responsible not only for the design but the implementation of a network of software on nearly 200 servers.

    I have gotten this far so quickly purely on proving I can deliver what it is the employer is sking for.

    I don't have a degree nor do I have an MCPD but I do have a CMS I wrote myself to some very strong standards and often show the code to potential employers as a means to prove the level of work I am capable of.

    Certification is a tick in the box for many employers but also acts as a benchmark for showing what the person has had exposure to and understands, like you say rob, it's not always relevant or absolutely required in order to do what the job asks but still it may be asked in order for the employer to "play it safe".

    There is often a high price assocciated with the recruitment process, many don't want to be doing it any longer than they absolutely have to.

    ReplyDelete
  14. Personally I use certification as a motivation to learn more about the technologies I'm involved with, specifically .NET development. Currently I'm an MCTS in WinForms development in .NET 2.0. I chose this route because it currently matches what I do at work. The certification process has helped me become aware of options while developing that I might not otherwise have been exposed to. I plan on finishing up my MCPD in the same line and then moving on to the Web development in 3.5 line of certification.

    I work for a financial institution where the only developers are myself and one other individual. The opportunities for me to learn more do not present themselves in the work environment, and as a result I try to go out of my way to be involved in the community to hopefully learn more about proper processes and how to improve our practices at work. This requires more than just certification knowledge. This requires learning better coding practices and learning how to implement them successfully.

    Certificates can open up the possibilities in a language or set of tools. They will not teach you how to make successful projects or how to code better. The basic MS dev certs won't show you how to create architectures that work and are decoupled and smothered in gravy. You've got to learn that any way you can, if it's not available at your workplace.

    ReplyDelete
  15. I've blogged about studying for my MCPD certification here.

    ReplyDelete