Lately we have been visiting a potential customer of ours that is interested in learning more about z2 and eventually using it to increase development productivity, maintainability as well as customizability of customer installations.
The approach behind z2, i.e. what we like to call System Centric, to a large extent and regardless of the implementation implies or at least fosters these attributes. As there is little to no development setup, no build fixing, and integration happens essentially as soon as meaningfully possible, productivity naturally goes up. As sources and customization is always at hand, maintaining and customizing further works just as well as the solution at hand intrinsically allows.
What is strikes me is that developers and operations professionals with an ERP background (disclaimer: not even SAP in this case) typically get this right away.
That is strangely contrasted by the observation that Java developers have a much harder time to notice the waste of time and the added complexity that gets dragged along. That may be due to being so deeply used to the working mode that it has become close to a natural law – nothing to question anymore.
Another reason could be that every now and then some toolset manages to creates a level of hype and a so deeply convinced following that tools expand beyond their space of usefulness. In other words, there is a lot of “golden hammers” out there. One now historical example is the Enterprise Java Beans (EJB) technology, that actually started out as Remote Objects – which makes sense – and then got perverted into some sort of locked away, XML polluted, and finally slowly starved “Java Objects Deluxe”.
One more recent example is the Maven toolset. Not saying that it doesn’t have it’s place and problem to solve. It does. Development and maintenance for business solutions is however not part of the Maven problem space. More on that in another post.
In the specific case, the development team had lost a lot of time fiddling with OSGi dependencies, building and deploying bundles, keeping installations in sync, keeping version vectors straight and more technical aspects of solution assembly – none of which added value to the solution.