Why an Agile Process
is not Enough
Four Thoughts on why “Programmer Tooling” for the Business Guys is a
Necessary Complement to Agile Processes
Agile processes have taken
hold in many organisations: more or less everybody uses some version of Scrum,
you can see Kanban-boards all over the place, and many development teams use
(cherry-picked) subsets of XP, such as test-driven development.
However, for an organisation
to become really agile, two more ingredients are required. One is agile
management. We all know these stories along the lines of this:
How nice of you devs that you use Scrum, but
can you please tell us your backlog until 2020, including the overall total
estimated effort?
That doesn’t work. But this
post is not about that. Rather it is about the agility of the core business
processes/rules/calculations/behaviors. Those need to be evolve quickly, as
external requirements change or the “product people” breed new ideas. Examples
include insurance products, telecom pricing plans, or medical diagnostic
algorithms. As you probably suspect if you know me and read this, I am of the
firm opinion that domain specific languages are the way to improve the degree
of agility here. We have worked in all of the aforementioned domains, as shown
by the IEEE Software article Projecting
a Modular Future. Subsequent posts will provide more details. This one is a
me on a soapbox, preaching some generalities about how I think business and
devs should interact. It has been on my mind for years. It wants out.
Why only tools for technical people?
The technical people use
tools all over the place: powerful IDEs with integrated refactorings, test
automation, build servers, docker-based semi-automatic deployment. We
developers could not imagine working without those tools. They are a key
ingredient to productivity and quality. Yet, we somehow accept the idea that
business or product people specify the core behaviors in tools such as Word or
Doors. Maybe we let them use Cucumber to write acceptance tests. But none of
the features that make us productive and help us produce quality are available
to them. Why do we accept this? I think we shouldn’t. Let us have/build/provide
languages and tools that are suitable to the business guy, but provide the same
productivity and automation features, to make them just as agile.
We have Devops. Where is Devbus?
Ok, Devbus is a stupid term, but
you get my point. The developer community has learned that, in order to achieve
today’s expected time-to-market and reaction times, developers and operations
people have to integrate more closely. Both in terms of the process, but also
in terms of shared tools. A major part of devops is to do in operations what
developers have done for a long time: write programs, use tools and automate.
We have to set a similar goal with business people who are responsible for the
actual algorithmic core of our applications. A joint process, with tools and
automation tailored to the tasks of the business people. It’s the obvious next
step on the path to end-to-end agility.
How can you expect somebody to take responsibility
when they have no way to assure quality?
Developers, agile or not, are
expected to take responsibility for the code they write. And of course,
professional developers are willing to take this responsibility because they
write tests for their code. This way, they can be reasonably certain that the
code works. And even if it has the (unavoidable) bug, they are not criticised
overly harshly if they have tested the code to a reasonable level. How do
business people test their product specifications in Word? They don’t. Because
they can’t. So we cannot expect them to really own the core algorithms. So
let’s give them better tools. Let’s enable business people to
write/program/model/specify all the core algorithms that go into today’s
complex business applications, and let’s make sure these tools support in-IDE
execution, so they can simulate the behaviors and write tests. And the
execution of those tests should be automated, just like our tests, including on
the build server. Test-driven business development FTW.
Complete separation of business logic from
implementation technology
Ok, leaving my soapbox. I
hope I was able to convince you that end-to-end agility really requires to give
business people the same tools as we developers have, of course adapted to
their particular needs and skills. In my next post, I will outline what this
means. So long!
Wrap up
Ok, leaving my soapbox. I
hope I was able to convince you that end-to-end agility really requires to give
business people the same tools as we developers have, of course adapted to
their particular needs and skills. In my next post, I will outline what this
means. So long!