Don't you hate it when something innocuous sets your mind wandering along a path it won't let go of??
Triple J just had a chick describing her job as a graphic designer, and listed the following as the skills needed to be a good designer:
1. A very good attention to detail
2. A good eye for colours
3. A whole world of computer skills you pick up along the way
Q: If you couldn't suggest a technical skill, what would you look for in a budding programmer??
Nb: In these answers I'm going to assume I'm a reasonable dev... Some people may debate that, but it's my assumption :)
Maths skills? I was never horrific at maths, but it's a long way from my favourite discipline, and I downright struggled with things like Queue Theory, storage of floating point numbers (I still shudder at the word mantissa) etc at Uni.
Intelligence? I've never met a good dev who struck me as being a few stubbies short of a carton, but I'm a long way from Mensa material, and I know plenty of very good devs who are the same.
Problem Solving skills?? Definitely important, after all that's the business we're in!
Ability to Learn: Crucially important in this field, but how do we gauge it in other people short of throwing them in the deep end?
Lateral Thinking?? I think so, being able to look beyond the obvious and discover another way through the wall is crucially important.
I contest these last two points are just two facets of the same notion: An ability to reason.
The ability to observe a set of behaviours, deductively reason back to a hypothesis that results in the observed behaviours, and then prove or disprove that hypothesis is the absolute core of what we do day in and day out..... except we call it debugging!
Yet the reasoning we're asked to perform is different form that in some other disciplines, because it spans so many layers. One minute we're reasoning on an almost microscopic level...
if (a && !b || !c){}
and the next we're operating an inter-galactic level: why is this xml doc getting corrupted when we have more than 4 people in the website at a time??
Sherlock Holmes, that fictional epitome of deductive reasoning, provides a beautiful example of how his coldly analytical logic makes up for any lack of 'creative' lateral thinking in his classic quote:
“How often have I said to you that when you have eliminated the impossible, whatever remains, however improbable, must be the truth?”- Sherlock Holmes
And it's this ability to mentally discard all non-relevant scenarios that leads to the 'psychic debugging' phenomenon, where someone can beat their head against a problem for hours, ask you about it, and with only the most basic of information you produce a correct answer.
When this happens, trust me, you will look like a freaking legend!
(Bonus points for doing it from a verbal question, and providing a verbal answer pointing to a seemingly unrelated part of the app within 5 seconds of the question, with no outside assistance).
So, back to the original question: What would I look for in a pre-dev dev??
I'd look for a smart (but not necessarily genius) person, an ability to learn quickly, and most importantly with a very good ability to reason.
Sounds like the perfect description for those budding forensic analysts that CSI etc have produced, but who's job market is ludicrously small!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment