The beginning of December had some good news for my day job. I had a job post out for some help and I was fortunate enough to have a friend of mine beat out the competition for the role. I’ve begun his training and a big part of it is teaching him my personal strategy for our client that we’ve been marching towards. I somewhat surprised myself at how I could boil 17 years of accumulated strategy experience down to three items. In retrospect, I think I learned these right out of college when I was a software developer. They are so simple but have worked exceedingly well for me. I thought that I should share these with everyone.

  1. Standardize – Agree on the standard, upgrade non-standard material, do not allow exceptions but always look for new ways to keep it best of breed. This has so many benefits unto itself that one could write a book on it.
  2. Consolidate – Use a repository (doc, code, etc.), shutting down rouge or excess locations allows folks to locate and interact with the material better. It also saves a ton of money and drastically reduces confusion. I have found that it is always better to harden the central area than distribute it. This doesn’t work for everything (e.g. peer to peer, bazaar coding model (e.g. DARCS/BZR)) but it does for most things.
  3. Automate – Queue up some simple tooling and automate as much as possible. Aside from saving money it allows you to focus your employees on things worthy of their attention instead of the mundane. It does wonders for productivity and can have a positive impact on communications.

So, my secret is to use the above three when determining strategy for a new project, department, or organization. Once these are accomplished then you can move into more interesting and directed areas. The mistake I see many people making is that they don’t do these three things up front, and it costs then dearly on the backend. These are really akin to planning on a project. If you take the time to plan it right, you’ll save money on rework, meet the actual requirements better, and typically have higher quality deliverables.

In the Open Source world, we’re all about standards. We often get the low hanging fruit when it comes to consolidation although we could stand do to better in this area. Automation, aside from the build, bug, and install/upgrade processes is just about non-existent. This is why I happen to be a fan of Launchpad. It combines bug, translation, feature specifications and blueprints, releases/distro planning, support requests, meetings, and other material into one central area. Having chatted with the Launchpad devs at UDS-MTV, I know there are some new features on the horizon and I’m excited.