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?