Lines of programming experience

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?

  1. Ben Barden

    Great post. I did IT in a large company for around 8 years. Started as a trainee, became a junior, then a developer (minus the junior prefix)… then moved into test management for my last 2 years before moving on.

    I remember being congratulated on my test management position when I knew that either nobody else in my department would have wanted the job, or nobody was suited to it. I still wonder if a few people thought I was crazy. lol.

    The reason I moved was because I was sick of being a programmer who hardly ever coded. I also wanted to broaden my knowledge of IT, and spending some time in testing seemed like the logical way to do that.

    I ended up coming away from that company with much more knowledge and truly useful “experience” than I would have, had I remained a programmer. I’m now in a programming job again, but this time I’m in a small company. Things move more quickly, and most importantly, I get more coding done. It’s made me a far better programmer in 18 months than in the 8-ish years I was in the last job… or, to be more accurate, the 5-ish years I was a developer there.

    Basically, I agree with you 😉

  2. Vincent Tan

    “I was sick of being a programmer who hardly ever coded”
    Hear hear!

    “Things move more quickly, and most importantly, I get more coding done”
    It’s amazing how much you can accomplish when it’s a small company or group or team. Things, just, move. Probably because there’s no one else to push stuff around to… 🙂

    I write small chunks of concept code because I need to see if they’ll work. There’s no one else I can ask. The business logic usually required a fairly customised piece of code. I’m sure I can piece together some kind of solution given enough time on Google or something. That’s it, isn’t it? Time.

  3. Christopher Tay

    I agree with you that the amount of experience programming does not necessarily commensurate with programming ability if a comparison is made amongst people, with different initial and learning abilities / motivation, on an absolute scale. The point you’re trying to make I believe is how much useful knowledge is gained within a standard time frame.

    I have currently no industrial experience yet. However, I believe the number of years of experience is simply a heuristic if you would like to think of it this way. As for whether the candidate can really code, it should not be too difficult to get a feel of during face to face interviews?

  4. Vincent Tan

    Hi Christopher, years of experience is a simple criteria, and it’s easy to understand. I just want managers hiring programmers (or for any other jobs for that matter) to look beyond just the years of experience.

    Thanks for giving your views!

Comments are closed.