On Wednesday afternoon at the Cortina Software Architecture Workshop, Erik “it depends” Dörnenburg started a session entitled Developer Productivity. We’re all looking for ways to increase the productivity, but what works and what doesn’t?
Frameworks
Everyone present at the session agreed that frameworks can offer a gain in productivity. A good framework allows one to focus on writing business logic, instead of writing plumbing code. This improves developer efficiency.
However, a bad framework can decrease productivity. If a framework does not offer the required functionality, every developer will create their own solution. If it forces a certain way of working which is impractical, workarounds will be created. Sometimes, developers are forced to use a framework, because it was developed by the project architect, or because it is part of the Infallible Reference Architecture. While a reference architecture can help less experienced developers; it can frustrate the more experienced.
In conclusion: a good framework helps you. If a framework does not help you, stop using it1.
Capturing Abstractions and Intentions
If a tool can capture a set of concepts and build an abstraction over it, it can increase productivity. Also, productivity can increase if a tool can capture out your intentions, if it “knows what you want”.
An interesting example put forth in the session was that of GUI builders. GUIs mostly consist of labels with fields that are tied to variables. If the variable is a string, a edit box should be shown; if it is a boolean, a checkbox. One would imagine that GUI builders gain a lot by adding an abstraction which captures this combination. In practice, few GUI builders have it. Perhaps this isn’t such a great abstraction after all, and the Law of Leaky Abstractions applies here.
1 - Political and business decisions complicate things.