Becoming a Better Programmer

I talk a lot about the non-programming aspects of software development since I think that they have the most impact to a good programmer’s career.  I try to remind readers that you have to be "at least good" as far as programming goes to become a Big Swinging Developer.  This doesn’t mean that I think that developers shouldn’t be constantly building and honing their programming skills. 

A post on ReadWriteWeb entitled Top 10 Concepts That Every Software Engineer Should Know reminded me why I focus on the non-programming aspects: Other folks already have the programming aspect covered pretty well.  I really liked their list and their reasoning behind it.  It’s definitely worth a read and even if you don’t agree with it completely, it’s likely to get you thinking about what you know and what you want to learn. 

Here’s their list:

   1. Interfaces
   2. Conventions and Templates
   3. Layering
   4. Algorithmic Complexity
   5. Hashing
   6. Caching
   7. Concurrency
   8. Cloud Computing
   9. Security
  10. Relational Databases

Say Less and Mean More

If you work with a group of people, chances are there’s a peer whose words seem to carry extra weight due in large part to their scarcity.  There’s an air of, "If Bob’s talking, it must be important" or "When Bob speaks, it’s worth listening".  People value Bob’s words.

There are probably several people whose words seem to carry less weight due in large part to their abundance.  "There goes Sam rattling on again" or "When Sam stops talking we can get back to the real discussion".  People discount Sam’s words.

The Sams of the world seem to always be talking to anyone who will listen.  Even to those who won’t.  It’s not that they never say anything valuable, it’s just that so much of what they say is noise that their peers build up a filter that defaults to "ignore".  The Bobs of the world, however, seem to speak only when they have something to contribute: data, analysis, examples, solutions, etc.  If something Bob was going to say gets said by someone else, Bob checks it off his list and remains quiet.

In more concrete terms, think of it like this:  If you say 20 things in a meeting and 5 are meaningful and 15 are noise, then only 25% of what you say is meaningful.  If you cut out half of what you say (all noise) and only say 10 things, where 5 are meaningful and 5 are noise, you’ve now doubled your ratio and 50% of what you say is meaningful.  Guys like Bob may only say 5 or 6 things, but the value is between 80% and 100%.  With those kinds of odds, it pays to listen to Bob.