Desire paths

September 5, 2010

A desire path is what a person wants rather than what an architect builds. The term desire path originated from landscape architecture, but it’s an increasingly important concept for software architects to grasp. If you understand desire paths, you understand the future of software development.

A desire path represents the evolutionary nature of how people interact with their environment. An engineer designs a concrete path, but people find it more convenient to create their own. Software isn’t any different. Users bump up against the limitation of an application but find their own workaround through sheer necessity. The next generation of software won’t dictate to users, it will listen to them, and let them guide design rather than the other way around. Anyone who keeps this in the back of their mind is already ahead of the curve and ready for the changing software landscape.

Large corporations are often slow to respond to change. In no space is this more evident than technology. If you’re a developer and have used both ClearCase and Git for version control, you know exactly what I’m talking about. The big business version of source control is painful compared to the next generation of light and nimble apps crafted by small or open source development shops. Git and GitHub are a true pleasure to work with. I can’t say the same for ClearCase.

This is a fairly accurate picture of the future of software; an increasingly polarized space where the next generation of software developers duke it out with their predecessors. A space where large corporations try to adapt to users as quickly as their smaller counterparts, but bump up against the severe technical limitations of their outdated infrastructure. A space where resting on your laurels may mean going out of business or watching your professional software development career come to an abrupt end. A space where developing crappy applications will get an organization or developer laughed out of the industry. A space where kids who grew up with a laptop in their baby crib become consumers (and even the heads of corporations) and have a completely different expectation of what software should do.

CIBC was the first Canadian bank to release an iPhone app. It reminds me of a scene from the movie Glengarry Glen Ross:

We’re adding a little something to this month’s sales contest. As you all know, first prize is a Cadillac Eldorado. Anybody want to see second prize? Second prize is a set of steak knives. Third prize is you’re fired.

The last bank to release an iPhone app only has a chance of saving face if it’s the greatest iPhone app ever invented.

Is an iPhone app really going to change the bottom line of a bank overnight? Absolutely not. But in a market like banking where switching to a competitor is incredibly difficult, the only way to ensure future success is to convince young people to get on board from the beginning. Once they choose their first bank, odds are they’ll stick with them for a very long time. These seemingly small technical advantages may not appear to be a big deal today, but CIBC just posted an impressive profit by focusing on retail banking. The cornerstone of retail banking is customer engagement, and when it comes to engagement, small things count.

Mobile computing will continue to have a profound impact on how users interact with apps. More users are turning to native applications: think Twitter, Facebook, etc. How many people use Twitter’s web UI? Hardly any. Most people use a native application instead. Desktop and laptop computers are slowly being outnumbered by PDAs, cell phones, tablets, and a variety of other gadgets, especially outside of North America where cost is a much bigger issue. Web-based user interfaces are becoming less important while APIs are becoming more important. Don’t get me wrong, web-based interfaces will be around for quite a long time, but users will depend on them less.

If software were fashion, APIs would be the new black.

Integration and continuous improvement are becoming the two most important aspects of software development today, and will only increase in importance over the next decade. Simple, light, extensible, and integrated; big bang development may continue, but smart companies realize that there is no such thing as a finished application. Applications are no more finished than the people who build them! Think evolution rather than revolution. “Application oriented” development will replace “object oriented” development in terms of developer mindset.

Software spending is becoming an arms race. The gap between the haves and have nots will grow significantly. Organizations that fail to adapt will fall quickly behind their more adaptable competition and bleed market share.

Flexibility is key.

Your architecture must be flexible enough to adapt to an evolving world in a moments notice. Flexibility has always been important, but five years from now, it could mean the difference between your organization being #1 or being out of business.

The opportunities over the next few years are immense for organizations that really get it. Frankly speaking, most software sucks. Building something better isn’t all that challenging if you listen to customers.

ING Direct Canada was able to steal market share from every other bank simply because they built software that was easy to use and didn’t suck. Sure, they competed on rates, but Canadians lined up to stuff their money in some Dutch guy’s shorts rather than walk down the street and hand it over to a Canadian bank. Why? Canadian banks were slow to adapt to a market that increasingly craves convenience and simplicity rather than filling out forms in triplicate, haggling over 25 basis points, understanding complex fee schedules, and rushing to a branch in person before some guy takes his two-hour lunch break. Ten years ago, if Canadian banks had simplified their processes and software, ING Direct wouldn’t have had a chance to get a foothold in the Canadian market. ING listened to the market and scored, while Canadian banks dictated to the market and lost. Yeah, Canadian banks are the apple of the world’s eye right now, but they still dropped the ball. Otherwise the guy juggling oranges on TV wouldn’t be so damn smug.

The good news is it’s not too late for companies of all sizes to compete on technical prowess and simplified processes. To put it plainly, most software still sucks. But it won’t forever.