Archive for July, 2007

Habits are a Moat

Tuesday, July 31st, 2007

From http://www.flickr.com/photos/logicalrealist/Charlie Munger and Warren Buffett often talk about companies with “moats” or with some intangible asset that makes it very hard for other companies to effectively compete with them. Coca-Cola’s brand is their moat. The network effect has created an amazing moat for Microsoft around their operating system business. Google has a similar network effect moat around their advertising business. While I have almost always heard moats discussed in a business context, I was considering Munger’s “multi-disciplinary” approach recently and realized that moats apply just as well to individuals and the success that they can achieve.

An individual’s moat is their habits. After reading just a little of Munger’s writing it becomes clear that his great success in life comes from his habits of learning constantly, using mental checklists, and approaching all problems in a multi-disciplinary way. I’ve learned enough to recognize how powerful these practices can be but I haven’t really made them into habits. Most people haven’t. Of course, these aren’t the only habits that lead to success, and I’m sure Munger himself has many more. In some ways, his message for individuals is the same as Stephen Covey’s in The Seven Habits of Highly Effective People. Although Covey discusses seven specific habits to develop, he also states up front that it is the habits we have that create success. He wouldn’t limit success to just seven habits any more than Munger would.

Of course, corporations have the equivalent of habits in their corporate culture, and some corporations have great cultures that work like moats. The moats I discussed above, however, are not primarily culture based. Likewise, individuals can have non-habit moats such as personal networks or reputation. However, I believe that to develop these we need to have the right habits. Scoble’s habits of constant blogging and networking have made him into a force to reckoned with in the technology world. Many others have developed the same habits and the same ability to influence others.

Regardless, as I try to become a better software developer in the coming months, one thing that is weighing on me is the idea that I need to be developing the habits of a professional engineer in order to create a personal moat that makes me more competitive. But I’m also looking beyond that to the habits I need to be more successful in other areas of my life - my family, church, hobbies, etc. I suppose its time to go back and read 7 Habits, if only for the reminder of how to change them.

Old Construction Prerequisites

Monday, July 30th, 2007

Code CompleteSo it’s now been two weeks since my last post committing to a daily post about what I’ve been reading. I went on vacation to Bear Lake for a family reunion that was great fun except for the bad sunburn I got. I’ll have to tell you sometime about my bad burn from ‘91 (Florida).

Anyway, I did manage to get chapter 3 of Code Complete read at some point during the vacation. I was half-surprised by how much of McConnell’s advice parallels the agile principles that are so popular currently, given that it was written about 15 years ago. While the focus is still on waterfall development the value of iterations is recognized and the need for using development practices that “accomodate changes.” I did get a kick out of how many of the questions in the checklists are things that might not even be considered up front by many agilists nowadays. The most dated section was the section on programming languages, with no real discussion of modern programming languages like Java, C#, or any functional languages. I’ll have to go get me a copy of the second edition.

Becoming

Wednesday, July 18th, 2007

Taken by http://www.flickr.com/photos/simonov/Because I’ve been working to develop myself as a professional software engineer, I recently read Designing Learning by by Andy Hunt and Dave Thomas, the authors of The Pragmatic Programmer. It inspired me to go a little further and write down a specific plan for the things I want to learn and how I’ll learn them. Then I noticed that the meme has been making its way around the blogosphere. Ok, now I feel like a copycat. That’s out of the loop. Ah well. I’ll be documenting my plan and how well I follow it here on this blog. I’ll also be using the blog to record things I learn and my thoughts about them.

Just for background, here’s a bit about my current state as a developer. While, I don’t consider myself a great developer, I do want to improve more than most of those I know. At work I code in C++ and do some powershell scripting.

After brainstorming, I’ve decided that the areas where I would like to focus my learning are:

  • .NET framework and C#
  • TDD and unit testing
  • Software classics - CS theory and software engineering especially
  • MicroISV and software entrepreneurship
  • Automating everything
  • Other programming languages, such as Erlang
  • Regular reading of journals and magazines, such as Dr. Dobbs

I will be using the following proven techniques to learn:

  • Reading (includes watching presentations)
  • Writing
  • Projects
  • Experiments
  • Discussion with others

So I’ve chosen 5 specific things to do that include a mix of the things I want to learn and the techniques for learning.

  1. Project: Write unit tests for EGX, begin TDD, avoid Mocks
  2. Read one article, book chapter, etc per day (at work or on commute)
  3. Write about what I’ve read about on blog, even if it’s just a link and a note
  4. Experiment: Spend a day thinking about every activity I do, and how it could be automated
  5. Discussion: After reading an article or two, talk to David about starting a MicroISV

And to make sure it happens, I’ll do the following in the next few weeks:

  1. Do an hour of EGX development on each driving day of my vacation
  2. List chapter, article, etc. to read on Joe’s Goals each morning
  3. Joe’s Goals checkbox for writing about reading
  4. Spend tomorrow considering how I could automate everything I do
  5. Find some MicroISV articles to read on vacation, forward to David