Lets face it – most IT systems don’t really work as well as we would like. Surely by now we would have figured out how to build systems where you don’t have to have a different username/password for ever system accompanied by different ‘forgot password’ functionality for the same? Surely by now someone would have figured out, and packaged, a way to capture time easily, qucikly and effectively instead of that gawdawful ERP system that I am forced to use? Surely someone could have fixed Outlook by now so that you don’t poke with the mouse screaming ‘What are you frikkin’ doing now, stupid email programme!?’. And that is just for simple user oriented tasks. What about the fancy enterprise package that requires you to run reports from three different places and paste them into Excel so that it can be ‘adjusted’ and so that somebody can make sense of the data? What about core enterprise systems that are so bad at interfacing that it seems like the only way to get data in is through their painfully slow proprietary interface that feels like it is only one generation away from betamax tapes? How many systems are out there that barely function and are kept going like puppies on a leash by overworked and irritated system operators.
Depending on your point of view this could be a good state of affairs or a bad one. Vendors of software that is at the core of the enterprise are interested in protecting their investments and annual license fees, so a system that needs a swarm of consultants and a good dose of fear that it may go wrong is, at least to them, a good thing. Yet others (customers, users or technical people) may view that the same problems and the same mistakes that are being made again and again should, at some point, stop. Unfortunately the utopia of redeveloping all enterprise software (like a regular fresh Windows install) to make it all shiny and new is never going to happen, at all or in part – there is just too much there. There is mainframe era software, ERP systems based on pre-web architectures pushed in to enterprises to dodge Y2K, dotcom era VB applications and badly designed databases, websites that still support old browsers (and the browsers themselves), hundreds and thousands of Excel spreadsheets (with macros and formulas written by long departed users) which are pretty much used to run the business. All of these systems are costing a fortune to maintain and the developers, whether in-house, consulting or large vendors are rushing to add features to the existing applications and architectural reworks seem to yield little (initial) benefit. An ERP vendor may need to commit $100 million to redeveloping one particular package that may not result in more license sales and not only that money does not guarantee that the final system will be better, but the competitors may be racing ahead bolting features onto their systems while a development team is tied up in architectural rework.
Some of us are trying to change this pattern and may have been striving towards the vision of better software for years – inching closer and closer as time ticks by. If I just think about the people that I work with; we have the agilists, the *DDers, SOLIDers, service pushers, design by contracters, the UXers and others - all are trying in their own way to push the engineering, architecture, design and interaction envelope to get rid of the crap systems out there that our customers, and as users ourselves, have to deal with daily. We act as (dare I use the analogy?) as terrorist cells that plant our projects as IED’s, hoping to rock the establishment – sometimes getting media attention and starting a revolution and often leaving little more than a small crater on a rural road that eventually gets paved over with Excel spreadsheets.
One of the reasons why I latched on to the cloud was that I saw patterns in developing cloud applications that in some ways nudge and in other ways force developers of cloud oriented solutions to think things through in a way that would ultimately result in better engineered and implemented solutions. The cloud forces us to deal with concurrency, consistency, lack of physical access, decoupling, contracts, reliability, peak demand, security, message orientation, queues, data performance and a long list of things that we generally know about but often choose to ignore in our existing architectures and projects in exchange for pragmatism and a belief that ‘good enough’ is, well, good enough.
While my views on cloud computing are broader than many of the vendors out there, I have been fairly supportive of technologies which may not technically or academically be defined as cloud but, by implementing some of the newer technical memes could at a push be branded as ‘cloud’. After all since ‘the cloud’ is ill defined and without consensus, anyone can put a ‘cloud’ sticker on a product and proclaim it to be so – a few striking philosophers will not change the market forces. So I have been openly supportive of the private cloud which seems, to me at least, to be a good platform for vendors to re-badge their existing products and sell them back into the same enterprise data centres that they always have. The technology that supports the private cloud, using virtualization and so on, should ultimately find its way onto the public cloud where I am hoping that the changes will really be taking place.
However, it seems that the private cloud package pushers are wrestling ‘the cloud’ term from broader use and moulding the principles to suit their world domination product roadmaps. It is to be expected as the marketing money and attention, at least in enterprises, it not to spend vast amounts of money turning architectures upside down for debatable benefit, but rather spending money with trusted vendors and established systems while trying to eke out as much performance and efficiency as possible. So when I hear pro-privates saying thinks like ‘applications <need to be> re-thought, re-architected and re-written to take full advantage of the cloud <is> complete and utter nonsense’ , I completely understand where the message comes from but I slump my shoulders as I see another opportunity to build better systems slip by. The vision of the cloud, to me, is not to have a bunch of Excel spreadsheets now running in a VM that lives in the cloud – I want to do away with those spreadsheets, and possibly the system that exported them in the first place – altogether and forever. I don’t believe that the cloud is about taking badly designed databases, that have to have three full-time DBA’s tweaking, tuning and coaxing them along, moved to ‘the cloud’ so that those DBA’s can now work from home, or for less, or whatever the promised benefit may be.
I will be the first to admit that my views don’t lend themselves towards a packable software product, I gave up on that a while ago when the products that I was involved with were so awesome and game-changing that the effort to sell and explain them, by forcing a mind-shift, was so high that it was not viable. I understand how the commercial needs of selling product and the desire to make money in this quarter need to be balanced against the desire for engineering elegance and people learned long ago not to bring me along for product pre-sales. However, despite all my understanding, I personally and professionally believe that the previously mentioned time recording application that I use should not be hosted in the cloud – it should be dragged out, blindfolded and shot. Maybe it will… when the revolution comes.
Simon Munro
@simonmunro