Remember this one, "The microprocessor changes everything!" No, it didn't. Yes, it had a big impact, but people still fretted about the same problems and tried to accomplish the same things. They just created problems and accomplished things more efficiently. How about, "The Internet changes everything!" No, it didn't. Yes, it had a big impact, but people just got that much better at creating the same problems and accomplishing the same things. Now we have, "Software plus services changes everything!" Oh, spare me.
You might claim, "I. M., you're wrong about this one. Microsoft did change dramatically with each of those shifts." We changed quite a bit, but not dramatically. If we had changed dramatically, we would have cut or replaced the majority of the workforce (talk to your friends at other companies). Instead, we augmented our tools and our workforce to take advantage of each new opportunity.
Look, I don't want to downplay the importance of any of these shifts. They improved people's lives and made the world smaller and more accessible. They grew new businesses, improved quality, and increased productivity. That's fantastic. But don't go around saying a new technology changes everything, because the things that count don't change: people, their problems, and what they want to accomplish. Just ask those companies who focused on the technology instead of the customer. Oh wait, you can't. They're bankrupt.
Naturally, the shift to the microprocessor led to establishing Microsoft. So, I suppose that does count as a dramatic change for the company. However, my point remains the same—everything didn't change. People didn't change. They still needed to maintain relationships, earn a living, and achieve personal and business goals. What changed is how people accomplished these activities.
This is why nothing makes me more miffed than engineers who say, "What is software plus services?" Or much worse, "It's a new world; we've got to create services!" Hearing that makes my lunch call for a reappearance. Stop focusing on the technology you fools! It's not about the technology. It never has been. It's about the customer and what they want to do.
Hold on, I hear an Ozzite calling, "But Ray says it's all about services and the cloud." Listen, when Ray Ozzie talks about services and the cloud, he talks about things people want to do and how services and the cloud can help. The starting place is always the same: customers and their goals.
"Oh, so we focus on how customers want to use our software with services, right?" No! Get this straight! Customers don't want to use our software for the sake of using our software, in case your family and friends haven't made that clear. Customers want to accomplish goals, like writing a term paper, sharing pictures of their kids, or fulfilling a purchase order. To the extent that services help customers achieve their goals, we want to integrate and provide those services.
Ray Ozzie is the relatively new Chief Software Architect at Microsoft. He'd agree that cool for the sake of cool is for rock stars and entertainment news. It's cool for the sake of the customer that counts.
Perhaps some examples would help. Let's talk more about that term paper, the kids' pictures, and that purchase order.
Writing a term paper is a common enough goal for students that businesses are built around supplying term papers for a fee. If we want to help students write term papers, the first step is imagining what a wonderful term paper experience would be like. We've all had horrible term paper experiences, so this shouldn't be too hard.
Okay, so the instructor assigns students to write a paper about preparations for the Beijing Olympics in 2008. Stu, our student, opens a word processor and starts jotting down a rough outline. "Let's see," says Stu, "I'll start by talking about the Olympic Games, then the city selection process, then perhaps a history of Beijing, followed by some details of Beijing's bid, followed by their preparation plans, and closing with the current status." Nice outline, Stu.
Stu hits the research button and phrases in the outline get highlighted. Stu clicks on Olympic Games and a search result frame pops up with info about the games. Stu scrolls through previews, selects the ones he wants, and the text is inserted directly into his document. He repeats the process for city selection, Beijing, and the other sections. In each case, the search is narrowed by the context of the previous searches, knowing Stu cares about the Olympic Games.
Next, Stu edits the text to make it sound more like he wrote it and actually understood it. The grammar checker, in addition to highlighting grammar and spelling mistakes, also highlights sections that are too close to the source text to be considered original. When the text is clean of errors and outright plagiarism, Stu sends it to his instructor.
I wish my term papers could have been that easy. So, what pieces of this scenario does Microsoft have already? We've got a word processor; we've got Internet search; we've got a grammar and spelling checker; and we've got e-mail. What we need is a plagiarism checker and a client user interface for Word to talk to Live Search and download parameterized search results. That shouldn't be too hard. Viola, software plus services that is actually valuable.
Sure, it would be even more valuable if Stu could store his term paper in the cloud as he worked on it from multiple devices, including his car and phone, but you can't start there because the cloud and phone are cool. You start with Stu and what Stu wants to do.
A subtle point here is that perhaps you don't want to make writing term papers so easy. They should be more about discovery and integration of ideas rather than Web searches and editing. Checking against plagiarism helps, but it has become a bit too easy to pull term papers together. Perhaps it's time to move the end-to-end scenario back to the instructor creating a challenging and instructive assignment. I'll leave that as an exercise.
We all know the sharing-pictures scenario. You plug in your camera, upload your pictures, and click the button that should be there to share pictures. Okay, on Windows XP there's a link to Publish the selected items to the Web and on Windows Vista there's a Share button, but it doesn't share across the Web. I get why this scenario is hard when it comes to open markets and working with partners. That's a good reason, but not a good excuse.
Even in the Windows XP case, assuming the customer can find and understand the Publish the selected items to the Web link, have you tried it? It focuses on giving Windows XP the information it needs to complete the operation, not on the customer trying to share their pictures. This is a case where we've got just about every component we need to deliver a useful software plus services scenario, but we've designed the experience to serve our software instead of serving the customer.
I don't mean to demean how incredibly difficult it was to create the picture-sharing scenarios we have. The Windows XP work was an early attempt at handling a complex web of handoffs and agreements. Governments pressure Microsoft to avoid integrating too much into the operating system. Partners often don't agree or share with each other. The key is not letting those considerations influence the design of the end-to-end customer experience. Once we have that compelling story, we can then consider the practical constraints.
Most of us shop online for at least some of our needs these days. While it's tempting to talk about the end-customer buying experience, let's talk instead about the order fulfillment experience of the online retailer.
When a customer submits their order, the retailer must:
§ Receive validation of the credit card from the bank.
§ Bring up the confirmation page and e-mail a copy to the customer.
§ Check inventory for the product.
o If the product is in inventory, send the instructions to the warehouse to ship the product to the customer, and update the inventory.
o If the product isn't in inventory, order the product from the supplier with instructions around labeling and routing the product to the customer, then track and record the transaction for data mining future buying.
§ E-mail the shipping information to the customer.
All this seems simple enough. Once again, we've got most of the components—Web services for the transactions, ASP.NET for the confirmation page, Exchange for the e-mail, SQL Server for the inventory, and Dynamics for the all the business logic. The key is, "Does this scenario come together as easily as it sounds?" When our small business customers try it, do they have to fight our software the whole way?
Remember, customers believe that all Microsoft software comes from one place, and that Bill Gates writes all the code. They don't understand why one application works differently than another. They can't afford to be experts at setting up each different piece. Making software plus services work isn't about clever new code. It's about focusing on what the customer is trying to accomplish and making that easy as it crosses boundaries.
Enterprise customers often want to design the end-to-end solutions themselves, or through consultants who understand the special details of their business. However, we still need to design for those end-to-end scenarios. The faster and easier it is for enterprise customers and their partners to realize their scenarios, the better their results will be, the less costly they'll be to maintain, and the more they'll appreciate our work.
Okay, you're right; there are aspects of software plus services that involve change. The service piece is not a static image on a DVD. It's a living and breathing entity in a datacenter whose life only begins the day you ship. When you patch, upgrade, or revert a service, it all has to happen while the service is still live and functioning. Debugging is insanely difficult, so you need to instrument your service to diagnose problems across machines from anywhere in the world.
All this implies designing your service, and the software that uses it, from the ground up to be resilient, maintainable, and manageable. You don't get to walk away from services after the ship party; the party is just beginning, as is your commitment to keep improving your service every day.
However, none of that matters if we get seduced by the technology and features, and lose sight of the customer. The customer doesn't want software plus services. The customer wants to achieve goals, and well-designed software plus services can help.
The real trick to software plus services is working well across product and group boundaries to make end-to-end customer scenarios work the way the customer expects, instead of the way our company is organized. Learn to do that well, and you will change everything.
You can read more about how to work well across product and group boundaries for end-to-end scenarios in my column on, "The other side of quality—designers and architects."