Last month I attended IBM’s 10th Annual [Steve] Mills event, when industry analysts converge to hear what Software Group has been up to, and where its going. There is always a ton of content, which makes it hard to summarize, so I won’t even try. But there are a couple of key narratives I want to capture, and I will use separate posts for them.
The first narrative is Get Simple.
Generally IBM doesn’t understand simple. IBM likes to create systems that are infinitely configurable, to meet every possible “need” that an enterprise might ever think of. As I like to say: IBM never met a requirement it didn’t like. But configuration is expensive – it requires consultants (go IGS!) and a lot of time and unnecessary pain.
I had a number of conversations at the Mills event however, which indicated IBM is getting a feel for the new simple. Rather than telling customers they can have all their old complexity and cloud operations too IBM is going to start being opinionated about system images. One of the first IBM products built to this way of thinking is the new Intelligent Operations Center, used as the basis for IBM Smarter City and water management plays. Customers can basically acquire the IOC in four different versions… large on-prem, large SaaS, small on-prem, small SaaS, and that’s pretty much it. But more products are likely to take the same approach.
When I have spoken to IBM Distinguished Engineers and senior managers in the past they have tended to believe that complexity could be abstracted, but after the failure of models such as Ensembles, it seems a new pragmatism at work. I talked to Jason McGee and Rob High, both DEs, and they both talked to the new simplicity as a better way of doing things.
IBM of course isn’t the only one with the config problem – its practically definitional for Enterprise software. In 2006 I said “Microsoft servers are a configuration fetishists’ wet dream”.
Unlike the enterprise however the Web thrives on simplicity – certainly on the config and operations side. Ruby on Rails, the favorite framework of many web developers, is based on a core concept – Convention over Configuration.
The idea is summed up pretty nicely here:“Design a framework so that it enforces standard naming conventions for mapping classes to resources or events. A programmer only needs to write the mapping configurations when the naming convention” fails.”
Or in my rambling fashion:
Ruby on Rails is interesting because it forces constraints on developers… and they like it.
Rails is about freedom in the Kantian sense-development has a categorical imperative – what you do should be morally applicable to anyone else in the same circumstance. Its about responsibilities rather than rights. The responsibility to ease of use.
Abstractions are aspects or constraints of the framework itself, rather than veneers to hide code behind and allow ever more configurations to be applied. Freedom comes from accepting and working within constraints. Beautiful code comes from limitations, not being able to configure everything in sight.
A related way of thinking is lesscode…