I’ve written and sent resumes before. Looking at the job requirements listed by some of the companies, I will never meet many of the job descriptions. 5 years of C and C++ programming experience? 3 years of programming experience, involved in at least 2 complete development life cycles?
I daresay I’ve done more in a year than some ideal candidate of theirs with 10 years of experience. Alright, 7 years. Ok, maybe 5 years of experience.
The point is, programming is different from other jobs. The years of experience don’t count in the traditional sense. A manager of 5 years of experience is highly likely to be better than one with 1 year of experience. This doesn’t scale with programming. A veteran programmer with 5 years of experience can very well be worse off than a brilliant programmer who’s been coding only a couple of months.
It’s not the years of programming experience that count. It’s the number of lines of code you write that never see the light of day. And I’m not talking about superfluous stuff like
int i = 2 * 7 ;
I mean, you might be paid by the number of lines of code you write, but seriously…
It’s that chunk of code you wrote to test out a concept in a
for loop. It’s that
printf statement you wrote to check how the output would look like. And those lines of code never make it to your final product. They never get migrated to a production environment. They were probably written to help you, and only you, to automate some task on a temporary basis (generating SQL insert statements come to mind).
I practised till my fingers bled
I was 13, 14 years old. I was in my school’s Chinese orchestra, and I played the zhong ruan. It’s like a guitar, just with 4 strings instead of 6.
I had a lot to learn then. I don’t have a music background, and I wasn’t familiar with Chinese orchestral music or instruments. Luckily, the musical scores were in numbers instead of what’s affectionately known as the “tadpole script”. So a 1 represents “doh”, 2 represents “re” and so on. A dot above the 1 means it’s a “doh” on the next octave. I just find numeric scores easier to read. *smile*
Anyway, one of the hard parts was learning the finger placement. The left hand was to hold down the strings on certain ridges on the instrument, while the right hand held the pick to strum the strings. The strings were taut and thin, and the string with the normal octave was the third one (and the second thinnest).
So after practising for a few weeks, my fingertips on the left hand started to hurt. I could see grooves forming, and there were red patches around them. It’s especially bad for my index and third fingers, since they pressed down the most frequently. And then it happened. The strings cut into my third finger.
I just put on a plaster and continued practising. I couldn’t quite feel the string anymore, which made playing harder. It depends on the sense of touch, since I don’t know if I’m pressing down hard enough. But I practised strumming instead. Did you know using the pick to strum a string back and forth in a consistent manner is very hard?
The point of telling you this entire experience was how determined I was to learn how to play zhong ruan. I knew after a while, the skin on my fingers would harden. I just needed to be patient. I was encouraged to borrow the instrument back home to practise, and I did. I remember lugging that huge instrument case around, and taking a taxi back home. I was just a young boy then, a bit on the thin side, and that case was very large and heavy.
Then I started to appreciate the music. I can follow the 4 beat pattern. After a while, sometimes when I was walking, I would feel the music in my mind, and I would walk to the beat.
1, 2, 3, 4, 1, 2, 3, 4
Right leg, forward, left leg, forward, right leg, forward, left leg, forward
I was living and breathing the music. Then I looked at the scores for the other instruments. I learned how they blended into the overall music, how they fit in. I could visualise in my mind that at a particular point, the cello would come in, graceful and mellow. Then the stringed instruments (that includes me) would bring up the main tune. Then the flutes would fly to the high notes. It’s just beautiful.
Learning how the entire orchestra works made me a better player.
The blood, sweat and tears
Did you know footballers (or soccer players) do weights training? You’d think they’d concentrate on foot work and stuff. It’s about balance. The entire body needs to be trained. Abdominal muscles to stop an airborne ball passed to them. A strong upper torso to maintain balance while the right leg strikes the ball. And I’m starting to get out of my league here… someone more qualified please cite me a scientific reference…
I watched a commercial featuring athletes. A tennis player (Maria Sharapova?) was doing balancing training and “crab dances”. You know, the moving from side to side part. What do you mean you didn’t know tennis players move from side to side a lot? Tsk, tsk… And there’s a Chinese hurdler, lifting his right leg just over a hurdle, then moving his leg back. He’s practising how much to jump and lift, to minimise the energy used for jumping, and funnel it back to running.
Sure, these athletes practise their sport. They also supplement that with complementary training, training that involves other muscle groups and skills. Because having a balanced body, a more responsive body makes them better at their core sport.
So what’s the real experience?
It’s the things you do behind the scenes. So what if you’ve got 5 years of programming experience? A dunce could maintain applications for 5 years and never create anything new or exciting or beneficial.
So start learning about the business surrounding your applications. Then you’ll be able to spot edge conditions that business people never saw. Try out code concepts in small chunks or applications. Then you’ll understand more of what your programming language can do. I mean, changing an integer to a string, then parsing it back into an integer so you can assign it to an integer variable is just stupid.
I practised for months before a music competition or school performance. Athletes practised for months for a sporting event. And all that practice, never really gets noticed.
Using years of programming experience as a benchmark doesn’t work anymore. Technology moves fast. You could get hired and sit tight without contributing anything substantial. 5 years go by and boom, you’ve got 5 years of experience.
Or you could practise the things that speed up your learning curve, that prepare you for a balanced programming skill set, that allow you to face a fast-moving world with uncertain problems. And create something that’s actually useful to the world. So how many lines of programming experience do you have?