Last Friday evening, I came home after three days in sunny Cambridge, where I had the pleasure to give a talk at Code Generation 2014. This is a very quick summary of my impressions.
Code Generation is a three-days, industry-focused conference about all things related to Model-Driven Engineering (MDE). I attended Code Generation for the first time two (or was it three?) years ago, and last week’s edition was my second visit. I enjoyed it much more than the first edition I attended, but this may have to do with the fact that, this time, I was staying in Cambridge instead of commuting, and therefore got to attend the social events – a very important part of any conference.
I went to Code Generation with the objective of finding out what the software industry is working on in relation with MDE, and to find out what the current hot topics, as well as the current issues, are. It was quite interesting to compare my findings to the previous edition I attended. This year, I had the impression that DSLs were less of a hot topic than they were a couple of years ago. Although they still are a key part of the discussions, they aren’t discussed so comprehensively anymore – perhaps because progress in that area means that they are better understood and very much taken for granted, but perhaps also because of the (very much noticed) absence of Xtext developers.
Some new topics have emerged: the cloud, and the concept of “citizen developers”. MDE and the cloud has been extensively discussed, in keynotes as well as in regular sessions, and from a variety of perspectives: online DSL editors, code generation as a service, etc. Citizen developers, on the other hand, is a term that came out quite a lot. I never heard of it before, so it came as a bit of a surprise for me. Gartner defines it as follows:
A citizen developer is a user who creates new business applications for consumption by others using development and runtime environments sanctioned by corporate IT.
Much of the discussions, both during the talks and around coffee, food and beer, focused on how to design DSLs and, more generally, environments that allow citizen developers to write software within a somewhat constrained environment – some of the discussions were also mentioning cloud computing. But there were also discussions about whether it is indeed a good thing or not. Arguments in favour of citizen developers mainly cite the shortage of “qualified” software engineers, and the (actual or perceived) slow reaction time of IT departments. Those in favour argue that allowing citizen developers to write their own applications speeds up development time and reduces the workload of the IT department, which can presumably redirect its resources to critical systems – and the infrastructures to support the citizen developers’ environment. On the other hand, those opposed to citizen developers put forward their lack of training, resulting in suboptimal, poorly tested and potentially harmful software. They also worry about the difficulty to centralise or communicate knowledge, as well as the maintenance nightmare that may result from a variety of applications with uncontrolled dependencies. Historically, “citizen developers” would be developing macros in MS Excel or small applications in MS Access. Nowadays, cloud platforms propose to replace those tools, allowing users to create and share their own apps, but hopefully with more control over dependencies, versioning and security from an IT department.
Most of the talks I attended were very interesting. Setting aside the one or two sessions that, in my opinion, felt a bit too much like sales pitches, the rest was of very high quality. Some of them were filmed, and hopefully the videos will be available in the near future. My own talk was about rbacDSL, how it works, and what sort of research we have done and carry on doing using it. I posted my slides online for everyone to see, and I still welcome questions, comments, suggestions and other enquiries.
The conference closed on a panel session lead by Andrew Watson from OMG, asking the four panelists the following question (from memory): “Model-Driven Engineering: for the masses, or for the elite?”. Discussions were of course connected to the citizen developers’ issue, but another point of discussion was how to convince software engineers that MDE, when done correctly, is a good thing. Agile was mentioned, sometimes to point out that, contrary to popular belief, it isn’t necessarily incompatible with MDE, just like using MDE does not necessarily mean following the waterfall development model. I may eventually write a more detailed summary of the panel discussion, which in my opinion was one of the highlights of the conference.
Last but not least, I should add that perhaps the most important part of the conference happened over lunch, dinner and coffee breaks. Discussing with people from various places, backgrounds and interests is incredibly motivating, and hopefully gave me a better understanding of the current issues and challenges of MDE in practice.