What drives the demand for continuous change?

Lately, it seems, no system is ever “finished”.  You are only running “this week’s build”.  And this is how we want it!  What drives the demand for continuous evolution of information systems?

In my opinion, it’s the possibilities. The possibility for interconnections among disparate systems, stakeholders, and devices. The model of exteme interconnectivity is enabled through standard protocols and data formats, and it is the single most striking change in IT from 4 years ago. There was a time when you needed to buy your CPU and your hard disk drive from the same manufacturer, or they wouldn’t work together. And can you belive we actually had vendor-specific networking technology?  Does nayone remember DecNet and IBM’s Token Ring?!

Just ten years ago, Scott McNealy, then CEO of Sun Microsystems, was criticizing .NET as “Not yet” or “Dot Not”. His line was that .NET was a “lock in” strategy. Lock in!  Remember that?  Java was proposed as the way to avoid “vendor lock in”.  Does anyone really think about vendor lock-in any more?

We have come a long, long way. Rather than worrying about evading vendor leverage, CIOs are interested in proactively solving business problems, and they realize that means interconnecting disparate systems. It means buying what they can buy, and building the rest, and forging as many connections as the business needs.  It means relying on JSON, XML and REST – messaging, rather than elegant distributed object models like CORBA or Java everywhere, as the preferred way to connect systems.

The interconnectivity enabled by that practical approach is the impetus for continuous change.

Open standards and defined data formats allow the interconnections that produced the explosion in possibilities for building software systems. Any developer today can perform lookups on Google’s data services to do geolocation.  It is straightforward to use Bing maps to display a color-coded map of sales results by country, or a map of the density of clients by county.  This stuff was exotic or expensive just a few years ago, and now, because we can interconnect systems so easily, the state of the art has advanced to the point where the business demands this sort of analysis and intelligence.  Look at Tableau Software – they are a terrific example of a company exploiting this trend.

Analysis of business data right now. When a new opportunity opens up, I want to be able to analyze that, right now.

But there is still so much more upside. Just the other day I was speaking to a sales manager who bemoaned the inability of his IT staff to produce a report he needed. But that situation is as unnecessary as it is frustrating.  Why is he relying on someone else to produce his reports? He should have access to his own business data, the way he wants it!  He should have desktop business intelligence. He shouldn’t have to wait for his monthly staff meeting to see the data.

There’s lots more to come.

 

Sideways Scrum

In a previous post, I talked about the change in software development approaches over the past 15 years. It has been slow, but in aggregate, the effect is striking. People are doing iterative development now, and succeeding with it. But despite the growing body of evidence in support of these approaches, in some cases it’s still difficult to get an organization to adopt them, to follow along.

There are lots of approaches to get an organization to move – there are course in MBA programs designed around this very problem. With the opportunity for efficiency with iterative management, managers need to take the lead.

I have a story of one such reluctant organization. This is a successful business, it’s been running for years on a business system that was created in-house. The business is going well, they weathered the 2008-10 downturn well and are now looking to grow. They’re nicely profitable and well-managed. They know they need a new business information system to support the growth they’re seeking. They’re willing to commit significant capital investment to produce this new system. All sounds good, right?

The problem is this: while the business leaders are creative and energetic, and interested in aggressively pursuing the business opportunity they see, the IT and development staff in the organization are reluctant. They have done waterfalls for so long, that they eat, sleep, and breathe formal requirements analysis documents. They are accustomed to large meetings, building consensus, and deliberative efforts. This old-school approach results, frankly, in an inability to execute. The engineering team cannot seem to make any progress on the project, and if they are actually making progress, they have no good way of demonstrating that to the boss, the guy who is paying for the effort. It’s frustrating, and the boss is not so sure that his investment in the new business system is being managed wisely.

Often, strategy and business leaders are inclined to delegate – to let the development teams do what they do, and that’s just what was happening in this case. They stood back, figuring that participating too actively in the development effort would be distracting.  But the business leaders were unsatisfied with the progress on the project. This was the catalyst for action.

At first they tried to persuade the dev teams to get more Scrummy, more agile. There was some grudging movement, but no real commitment. Progress was still slow. Meetings continued to be painfully large and inefficient.

Finally the boss, the CEO, decided to get tough.  He insisted on a status update meeting, every other week.  He wanted the meeting to be 30 minutes only, and he wanted to focus on measuring and demonstrating progress. He insisted that the meeting be attended by only a small number of people, and that the dev team conceive and use a clear metric for measuring its progress that they could show him during these meetings. He insisted on seeing actual working demonstrations of the application.  

None of this fit with the path the dev team was intent on.  But, notably, it all fit very well with Scrum.  The demand for measurable progress is characterized in a burndown chart. The working demonstrations requires a sprint-like approach.  The small cross-functional team is right out of scrum. He’s getting scrum sideway.

Now, this isn’t a perfect situation. It would be nice if the organization could adopt scrum “openly”. It’s almost as if the CEO had to sneak it in sideways.  But, this may just work.  His demands for this sort of status update, with regular progress reports and demonstratable code, has moved the dial. It may be the thing to convince the conservative dev team that it is safe to be more agile.

It will be interesting to watch…

The Quiet Revolution in Software Development

There’s a natural human resistance to change. Everyone has it, everyone is subject to it. Some of us are more aware than others of our own tendencies to resist change unconsciously.  But by and large, all of us like to minimnize surprises, like to feel that we are in control.  We have enough going on, right? Especially in a work environment, where compensation is dictated by achievement and performance is judged and weighed, we don’t like to push the envelope lest we fail. We might lose that pay raise, we might even lose our jobs.

So when a new approach to project management comes along, it’s not surprising to find resistance.  It’s the conservative approach, and there’s a lot to be said for being consciously conservative in business.

On the other hand software project management is just screaming for a new approach. The domain is novel enough that the analogues we’ve tried to apply – Software as system design, Software development as building architecture and design, distributed systems development as city planning – have always been less than satisfactory.  Yes, software development is a little bit like those things, but it is a lot unlike them too.  If we blindly attempt to lay models from those domains into software development, we’ll fail.

Not only is software unique, it is also evolving rapidly. This is cliche, but the implications are sometimes overlooked. Developing a software project today is much, much different than developing a software project 15 years ago, even in the same industry. In 1997, the web was hot, and everyone wanted to figure out how to web-enable their business systems. These days, the web is the platform.  Where before we were delighted to be free of green screens, now we demand integration with mobile consumer-oriented devices. Building inspectors want to bring their ipad’s to jobs to fill out forms, take pictures, and submit their reports over the cell network. These use cases were firmly in the realm of miracle only a few years ago. Now they are de rigueur.

And the ever-expanding list of demands – for more and more connections, more integration, front-ends, back-ends, reporting systems, feedback systems – this explosion of possibility has implications for how we execute software projects. Not only is the list expanding, but it is also ever-shifting.  This is why the building analogy fails: buildings last for years, while we design software expecting to re-design it or extend it in 4 months. We expect it!  There is a demand for constant change, a demand for more or less continuous evolution of business systems.

The waterfall – the comfortable, conservative, well-known approach where there are clear handoffs, lots of documents describing exactly what is happening when, lots of reports, formalized requirements documents, many review meetings – that model simply cannot work any longer, not with the changes in software we’ve seen. This is a model that made sense in projects where testing was expensive and slow, driven by humans. With those economics, it made sense to make sure the plan was rock solid and air tight before we took the first step.

But that model no longer serves us. There’s been a slow but undeniable revolution in software development processes, driven not by hype or synthetic demand driven by vendors, but by a real improvement in results. I’m talking about Scrum and Agile methods. Iterative approaches that favor learn-as-you-go approach, with lots of automated testing that drives many small corrections, rather than a rigorous lengthy planning process upfront.  Software projects  that use these methods are more likely to succeed today than projects using the old-school waterfall methods, if we judge success as on-time, meeting requirements, and on-budget.

Software companies, like Google, Microsoft, games companies, and other organizations that make their money mostly or wholly from software, know this. They’ve been steadily and quietly increasing their commitment to test-driven developments, sprints, Scrummy project management. This isn’t about new products – it’s about new practices.

But larger companies that aren’t in the software business – the ones that think of themselves as manufacturing companies, or financial services companies, or healthcare providers, or telecom – some of these have been slower to adopt these practices. Conservative business people run these companies and they have good reason to tread carefully.

But I’ve got news for you: Scrum is now conservative. It just works better. It’s not hard to do, though it does require some new thinking.  You don’t need a squad of A players to pull this off. You don’t need to raid Microsoft’s dev teams. You can do this with competent developers and competent project managers; with B and C people, the people most companies in the world are stocked with.  In light of this, any software project manager or CIO who prefers to lean toward Waterfall methods for  new development efforts, is taking on unnecessary risk.

Yes, there’s a hesitancy to embrace new things when large sums of money are at stake. Rightly so.  But Agile and Scrum are no longer new.  They are no longer unproven.  You’ve been standing by the side of the pool long enough.  It’s time to jump in the water.