Monthly Archives: February 2007

Productivity for Programmers, #1: Trusted Systems

Productivity for Programmers, #1: Trusted Systems. By Bob Walsh and Matt Cornell

(Note: Matt Cornell
programmer, personal productivity coach, blogger and all round good guy
and I are teaming up for a weekly series of blog postings here and at
Matt’s blog, on how programmers can be much more productive. Our goal is combine our experience, ideas, knowledge and a few bad puns to give you, our fellow programmers, a personal productivity toolkit of ideas and best practices.

If you’ve been working as a programmer for more than a few years, a
lot of our Productivity for Programmers tips will sound familiar. But
there’s a world of difference – like the difference between being the
programmer you want to be and being unemployed – between knowledge and
action. These posts are going to be all about action.

Another way to describe what we’re trying to do for you is give you
a set of tools, practices, attitudes and viewpoints that will make you outsource-proof, whether you work in Boise, Idaho or Bangalore, India. We submit that wherever
you are in the analog world, your ability to survive and prosper as a
programmer means finding and using the physical, mental, emotional and
even philosophical tools we will be covering. Brutally put, given your
replacement is a click away, how are you dramatically increase your
Internet Price? We hope by implementing, not just reading, about the
productivity tools we’re going to recommend in this series. . . .

Trusted Systems (yours, not theirs)

In this first part of Productivity for Programmers, I’d like to focus on five trusted systems every programmer needs and should have: Tasks, Decisions, Version Control, Code Snippets and Bugs. While covering these five topics in detail would take a good chunk of a book (I know, I wrote one on this and more J), I think what’s more important is focusing on key affordances and characteristics of each of these systems so that they do in fact deliver increased productivity.

By trusted system, I mean a system you – not your boss, not fate,
not anyone – owns and controls which captures 100% of its problem
domain in a way you can rely on day in and day out. A system that you
cannot rely on is worse than no system, be it the apps you develop or
the methods you use to maintain and improve your productivity.

In fact, that you have a system that you can trust is far more
important whether you write it yourself or go Open Source, it exists on
your desktop or is a Web 2.0 app in the Internet Cloud, you buy it from
a from a micro-ISV or whoever: It has to work for you and you will need
to be able to trust it. . . .  [MyMicroISV]