Saturday, May 2, 2009

The 5 Most Important Programming Skills

As offensive as it may seem to bundle up such a complex field as programming into 5 major characteristics I hope you can appreciate that this is certainly not an all encompassing list, and nor does it aim to be. To prep undergraduates for molding by their employers is what I aim to do.

I hope my blog goes at least some way in achieving this.

To save me from being incinerated by angry readers I claim that this list is by no means definite; it's just my opinion. Take it or leave. The most I can hope for is that it clarifies my thinking and where I'm at. If it gives you something to think about too, then bonus. Let me
know.

So, the top 5 characteristics a programmer should have. Ok. See, this has been changing for a while now as I've being doing my research, but I'm confident that now this list will provide a good framework for undergraduates and others to focus on.

Here we go.

1. Communication - Yep. This is number 1. Most important. This may have been an obvious one. But I mean like almost English-major-good at communication. If you can't get a job as a programmer then you should be able to get a job teaching university English. I believe good communication skills are more important than mathematics. I also believe that this may make people slightly uncomfortable. Certainly during my education all the emphasis was on mathematics, 'coz there's so much to know. And communication means that talking thing, right? Ah, it's not so bad, but I'm mainly referring to reading and writing skills.

If you're like me then you might feel that you need to brush up on these skills a bit. Well I have some handy pointers, just for you:

a) Blogging is an excellent way to practice your reading and writing skills. Read people's articles (including mine), and what you liked about it and perhaps what you could have done better (including mine).

b) An excellent book is 'Writing with Style: Conversations on the Art of Writing'. It's small so you should be able to read it over the course of a few days on your commute to work, or during your lunch break or whatever.

2. Touch Typing - Vital. I find it hard to respect programmers who can't type. See my article on touch typing for why.

3. Text Editor - You should have a favorite editor. Bottom line. I think this would make a good interview question.

Every programmer should be comfortable with a powerful text editor. I'll give you two options. Emacs or Vi. Both are excellent.

Anyway, using any other editor than your favorite should drive you crazy. It should feel like changing keyboard layouts. As so many people have said before me, it's probably the program I spend more time in than any other. And not just a little more time, it's a lot.

4. Compilers - I'm taking a bit of a stab with these last two, as I haven't actually learnt them myself. I have looked into them though. This is kinda of almost the all encompassing CS theory point. Knowing compilers I'm told requires strong knowledge in a range of CS fields. All your essential CS mathematics, regular expressions, parsing, code generation, artificial intelligence, data structures, ... So much good brain food here.

5. Operating Systems - The Compiler's CS brother in arms. This one should be obvious.

But hey, I'm just an undergraduate stuck in the alcoves of academia. What do I know? I'd love to hear your thoughts.

No comments:

Post a Comment