Philippe’s 3 Rules of Software Craftsmanship
Philippe Kahn is a technology innovator who’s main claim to fame is the founding of Borland Software. This business began with no venture capital and was worth over $500 million by the time Kahn left. Obviously, he knows a thing or two on building a successful software business.
In his keynote address at the 2007 MEMS Executive Congress, Kahn outlined his three rules of software craftsmanship.
Rule 1: “Start with a vision”
This is the first step for success in any business or any other goal you are trying to achieve. You have to know what you want in order to be able to makes plans in attaining it. The vision does not have to be a business plan. Write down a paragraph on your software company’s goals and how you intend to solve your users needs with your application.
Rule 2: “Throwing more bodies at software projects only makes things worse”
Its been said that “too many cooks spoil the broth”. Many software companies hire programmers in third world countries because their salaries can be as low as $2/hr as opposed to hiring a local engineer for $25/hr. Is hiring twelve programmers better than hiring one? Not necessarily.
Its better to hire one good engineer than 12 low cost mediocre ones. You should look at how much money an engineer can produce versus how much it costs to hire them. A local programmer will produce better code with fewer bugs than one from a third world country. Also, there won’t be a language barrier which can affect understanding and implementing software requirements.
Rule 3: “There are three vectors that drive software craftsmanship: quality, schedule, and features. The challenge is that you only get to pick two”
The reason why you can only pick two of these “vectors” is that each one requires a tremendous amount of resources to accomplish. I think the two that should be picked are quality and features. Software is almost always late because of these two things. “On budget, on time” comes at a penalty of diminished quality or features. Ultimately, the customer wants a product that works well and meets their needs, not a buggy application that was delivered on time.