Archive for November, 2005

Version Control and Set Based Development

There are a lot of people hacking on the Linux kernel all around the world. And while they mostly work on this or that sub-system, there are a lot of cross-cutting concerns. Not only that t there are any number of people working on cleaning up old kruft, so you’d expect that they would either need to be very well coordinated, or they would have a lot of patch related pain.

But they don’t!

This is the result of the widespread use of a distributed version control system, where every single linux developer can publish their own source tree, and cherry pick patches from anybody else’s source tree. This, when combined with a set of maintainers — who get patches, aprove them and put them in their own trees and then work with Linus to get them moved into the “official tree” — creates a remarkably effective system.

For people who want to transfer ideas from Toyota’s Product Development success into software development distributed revision control is an all important tool. But unless you let go of your fear of duplication of effort, you’ll never see the full value of Bazzar–NG.

The key to Set Based Development as practiced by Toyta and Honday is the ability to break down your product into different components, with various interfaces. Then you develop the various components concurrently, and work on several approaches to each of the components simultaneously. As you move forward toward product release, you have a series of integration events, where the interfaces between components are defined more and more concretely.

Other critical components for making set based development work are:

  • clear documentation of the design decisions for the various approaches for each components — even those not used in the final product
  • a single technical lead who can focusing the vision for the entire product when selecting from among the various alternatives

If you do set based development right, you will always have a safe bet, and you’ll almost always have one or two experimental pieces that turn out great — even if they don’t turn out to be a good fit for the specific product you are working on right now.

But this only works if you can leverage tools like Bazaar-NG to make sharing patch sets easy, and make branching and merging custom development trees painless. Of course, no tool is going to take away the need to document trade-off curves, or make good technical choices for you or your distribution team. But distributed version control tools should make it easier to have lots of choices, and easy to find the right ones for your project and fit them into your product.

The Psychology of System Administration?

Gerald Weinberg wrote The Psychology of Computer Programming almost 30 years ago, and it has made Software Development better by focusing on the people who do it well and how they work.

But to my knowledge nobody has written anything even remotely like it in the field of System Administration. And it is too bad because Jerry’s work helped lead the way toward programming languages designed for human beings, not machines.

Can somebody write this book soon?

We need to better understand what makes SysAdmin’s tick, and how the great ones solve complex problems quickly under pressure. The more we know about the best at our profession and what particular talents drive them, the more we’ll be able to move our profession forward.

But there seems to be no community of interest around this subject, and unless that happens it is going to be hard to find a market for a book like this.

If you this is something you are working on, or even just something that interests you, let me know and I might start a mailing list or something to help us organize and grow this idea.

Books for IT Managers

Here’s a list of some of the books that have resonated particularly well with me. I have learned a lot from each of these books, and I highly recommend them to all sorts of IT Managers, team leaders, and project management professionals.

Books about IT, but not a specific technology:

  • Becomming a Technical Leader: An Organic Problem Solving Aproach
  • Rapid Development
  • Code Complete
  • The Practice of System and Network Administration
  • Peopleware
  • The Pragmatic Programmer

Books about Lean and the Toyota Production System

  • Lean Software Development
  • Lean Thinking
  • Product Development for the Lean Enterprise: Why Toyota’s System Is Four Times More Productive and How You Can Implement It

Books about Human Relationships

  • Crucial Conversations
  • Getting to Yes
  • Influence: Science and Practice

Books about organization/time management

  • Getting Things Done
  • Organizing from the Inside Out

The slippery slope of distrust

Andy Hunt (one of the authors of The Pragmatic Programmer) blogs about how Ford Motor company is explicitly logging the amount of time their employees are spending in the bathroom. This tells their employees that they are not trusted, and it saps the morale, creativity, and eventually the productivity of their workforce.

Clearly this initiative required IT support, and while I don’t suggest that IT Departments make it their practice to regularly second guess business decisions, I do think somebody should have thought longer and harder about how reasonable it was to spend time and money installing key card readers, writing a system to track time in the bathroom, and provide nice reports to management.

Besides this kind of micro-management is pure waste. Does your customer care how much time your employees spend on the toilet? I seriously doubt it. They want products that are cool, reliable, and reasonably priced — all the activity you spend tracking other things is wasted time and energy.

And, if you happen to have an employee who gets more done in a week than any of your other programmers, but for some reason spends more than the average amount of time in the bathroom, is that a problem?

Tracking the wrong thing can get you focused on “solving” non-problems, and that’s another common form of waste.

First ISV Certification for Ubuntu Linux

IBM is the first out of the starting gate. They have certifies Unbunu Linux for use with DB2. This just validates my view that there is a compelling case for Ubuntu Linux in mainstream businesses.

Does this mean they Ubuntu will have to change it’s slogan to “Linux for Human Beings (and Large Multi-National Corporations)?