Sunday, April 17, 2005

Prepare Your Code for Globalization

Many of us in software feel pretty smug right now: We "made it." The crash came, the jobs left, but we survived. We persevered. We studied, we worked, we applied ourselves, and we made ourselves worth employing in a down market.

Well, it's going to get worse. I will explain. Most of us realize that the economy moves in cycles: Things change, new jobs are created and old jobs become obsolete. The 1930's created many jobs in the automotive industry, but who used those machines? In the midwest, tractors replaced the horse and plow, and enabled a single person to do the work of dozens. Of course, this made it uneconomical to be a farmer.

By the 1970's, globalization came to the auto industry. Instead of the big three, competition came from Japan, Korea, and Germany. Many Americans felt pride, even loyalty to their country; Yet, when the import cars came with the same quality for fifty cents on the dollar, American money went overseas, and the jobs went with it.

Right now, globalization is hitting the office furniture industry. The American companies that are doing well have stopped building themselves: They are importing components and doing assembly work, or have moved plants to Mexico, India, or other areas with cheaper labor and materials.

Globalization is coming to technology.
This comes as no surprise to many people: The largest company in India is TaTa Consulting, which has been offering trained software consultants for rock-bottom prices for years. Twenty years ago, author Ed Yourdon wrote Decline and Fall of the American Programmer. After ten years and major changes in the economy, Yourdon wrote Rise & Resurrection of the American Programmer. You see, communicating across continents and time zones is hard. Then came the internet. Yourdon wasn't wrong...just too early.

Right now, today, it's possible to write up a specification for a piece of software and send it off-shore for far less than it would cost to develop in America. In this age of tightened belts all around, why would anyone buy American software when they can buy it from someone else for one tenth the price?

Of course, this article is titled "Prepare your code for globalization". And so, I intend to provide strategies that can keep you employed and earning more and more even if your competition charges less and less.

Keep in mind the reality; 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 enocourage 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 are 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 Johnny Pizza Time franchises. Imagine the two sales pitches:

Johnny's: "Hey, for $10,000 and 3% of your sales revenue, I'll let you use my name, my sign, my recipies, 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 Johnny'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.

0 Comments:

Post a Comment

<< Home