On Second Thoughts !!!

Once you accept the notion that the rights of the people can be vested in proxies, you have just about abolished the people

------------------------------



Only fools fight. The wise supply them the means to do so; at a price, of course.
-Pyare Shivpuri







































Wednesday, May 19, 2010

Business Realities

Businesses want to reduce cost and risk while increasing revenue. To succeed as a software developer, don't try to sell working software for less money than others; instead, reduce cost, reduce risk or increase revenue for those companies. I will discuss a few ways to do these things, and do them well.

1) Provide Guarantees.
So the other person provides a lower hourly cost. So what? Does that mean that the total cost is going to be less? Most people that deal with software contractors know that an estimate is rarely worth the paper it's printed on. That's why fixed-price and fixed-date contracts are so appealing to customers: It moves the risk from the shoulders of the customer to the selling organization. As long as the buying organization is certain to make money, hourly rates won't matter. (How do you compare $6/hour and "We think it'll take about six months" to "$10,000 and it will be done in three months." How about to "I'll take 30% of gross revenues. If you don't make a dime, I don't make a dime...and this will encourage me to make it good enough to re-sell")

2) Analyze the business and provide a better solution
Joel Spolsky once wrote that

"Customers Don't Know What They Want. Stop Expecting Customers to Know What They Want."

In other words, the attitude of "Just give me the requirements" fails because it has the customer solving the problem; the software developer becomes just a glorified technical writer that knows how to write in the language of a machine.

3) Dramatically decrease the defect rate
Are people willing to pay for quality in software? Sadly, generally, the answer is no. Quality in software is hard to measure; unlike automobiles, there is usually no crash or endurance tests to compare against, especially for custom software. Yet we all know that plumbers, electricians, and roofers with a reputation for quality have more work orders than they know what to do with. Producing software with less defects, that is usable, that does what the customer expects will net a major competitive advantage for years to come.

4) Create well-documented, maintainable code
Despite all the jokes about job security, companies want well-documented, easy-to-understand and easy-to-change systems. This allows them to reduce risk, and, as we've previously discussed, reducing risk has tangible, measurable value to a company. The great thing about increasing the value of what you sell is that you can now charge more for it.

5) Provide better feedback
If you prioritize every feature, you can work on the most important features first. A series of small releases gives the customer the most important features first and the opportunity to provide feedback. This is not a new idea; it is one of the core ideals of the Extreme Programming model, and it's an excellent way to give the customer more while costing you less. (Think about this: Most large projects run late and over budget. Many small projects do not. Instead of "biting off more than we can chew" next time, why not refuse to run a large project and instead run a series of small projects?)

6) Show the customer how you will make them money or allow them to cut costs.
This one is a no-brainer. It's easy to charge more for your services and still win the bid if you are selling something fundamentally different: This is why McDonald's franchises sell for more than Jerry's Pizza Shack franchises. Imagine the two sales pitches:

Jerry's: "Hey, for $10,000 and 3% of your sales revenue, I'll let you use my name, my sign, my recipes, my suppliers for food, cups, plates - the works!"

McDonald's: "For $1,000,000 and 8% of your sales revenue, we'll give you everything Jerry does - plus throw in a lease on a furnished building in residential area X. We'll promise no McDonald's competition (except the ones you own) in a 50-mile radius of your store. We'll provide management training for your people. In fact, here's a breakdown of our 200 stores in areas with a similar population to X, and their sales compared to expenses for the first five years of business. As you can see, since 1995, only 10 of those stores failed to be profitable within three years, and they were all profitable within five years."

Conclusions
From the last example, you can see that McDonald's and Jerry's are selling two fundamentally different things. They both seem to "solve" the same problem: "I want to own a fast-food business." McDonald's chooses not to compete on price; instead, they compete on delivered results.

Most banks compete on delivered results for investment. While they may occasionally advertise that they have low or no minimum balance, it is far more common to hear about a low rate for a loan or a high rate for an investment. If we are to survive the coming bust, we must Promise and Deliver Results. These results must substantially differentiate us from other, cheaper competition.

If you try to build a house and base every decision on cost, you will probably get what you deserve. Most people know this, and factor other things into the decision. As the software industry matures, we must learn to provide and market those "other things." In order to survive, we must stop being glorified technical writers and become businessmen...and the need for good businessmen is not decreasing, but instead it is constantly increasing.

Selfish Or Guilty - Neither

Selfish Or Guilty - Neither

Say It Now for it might be their last day !

Say It Now for it might be their last day !