månadsarkiv: oktober 2012

Why is it so hard to sell the idea of model-driven-development (MDD)

Last night I was listening to a colleague who talked about his experience of using a model-driven-development (MDD) approach to develop information systems to support business processes.  The tooling and approach that he talked about comes from the Swedish company Capable Objects.

I am a bit indecisive of what I should think about what he talked about…

On positive side, I am fully convinced about the merits of MDD in terms of speeding up development, producing more consistent and higher quality systems.  After all: I have spent 9 years at Rational Software and much of that time I was advocating modeling and MDD to a lot of people and organizations.

On the negative side, however, this is something the industry has been talking about for years.  As mentioned above, I too was one of those people talking about it.  But the results of all this talk are very poor.  There are certainly examples of successful MDD usage for specific domains at specific organizations, but the larger-scale usage that everybody was dreaming about 10 years ago has not materialized.  Why is that?  Why has this been such a hard sell?  Why has the industry not embraced MDD?

My theory for the reasons is divided into a few parts

First, the agile movement of the past years has put less emphasis on modeling in favor of doing coding directly.  But proponents of MDD could really use the agile movement to their benefit, since agility puts a great emphasis on development velocity, which is something that MDD should provide.  But this has not really happened…

Second, the available tooling for MDD has not been (at least historically) very good.  Either it has been too simple, which does not give to the level of detail needed to tweak and configure the finished system in an appropriate manner.  Or it has been too complex which makes the transition to MDD too hard and which also requires significant consulting efforts implementing it, which means that the adoption of MDD moves very slowly.  Also, MDD means that much work is required to produce the transformation mechanisms where models are transformed (perhaps in several steps) into executable systems, and this work is only relevant for a rather specific type of systems, which means that this work needs to be repeated across system types.

Third, there has been a significant pushback from the developer community.  Perhaps this pushback has at least some of its roots in the fear from developers of loosing their jobs when the level of abstraction is raised.  Proponents of MDD usually talk along the lines that MDD is so simple that the business people can do the development themselves, which of course scares the developers.  Personally, I do not believe that line of reasoning.  Business people usually have a hard time understanding models so we would still need some type of developer to produce the models.

Going back to banking

The ink was barely dry from my last post, which I wrote yesterday when I got a new assigment and I am going back to banking.

I will do some development of liquidity risk management solutions for a major Swedish bank.  It will be interesting to go back closer to the technology and code once again.  Lately I have mostly been a producer of documents:-)

What’s up with banking people

Over the years I have worked with software development in a number of industries including e.g. telco, defense, law enforcement, real estate, airlines etc. In most of those industries the software and/or IT people are mainly just that, i.e software/IT people. Also, the people in those industries usually approach the idea of other businesses as something they may certainly work in (although perhaps they never do)

But in my experience one industry stands out: Banking. A lot of the people working there cannot envision working in another industry, even if they “only” do software/IT (something not directlyrelated to the business itself). Furthermore, to get a consulting gig in the Banking business it is much more important with industry experience than in many other industries.

Why is that? Why is the banking industry so much more constrained to its own industry?

Perhaps you could argue that software/IT in the banking business requires a deeper domain knowledge than in other industries, but I do not buy that. Other industries certainly have as many peculiar ways of doing things, as much business lingo and as much dependence on odd processes as banking does. So it must be something else, but what?


Hi there and welcome to my blog.

This blog will focus on my work in the software development business and my interests there: agile development, architecture, new and interesting technologies, trends in the larger business etc. etc.