How SensioLabs UK drives value with BDD
Part 2 of 3: Paul Wander, co-founder and VP Sales and Marketing at the UK PHP service provider Inviqa – the co-parent company of SensioLabs UK – was kind enough to give me an hour of his time recently to talk about some interests we have in common. In this podcast, we cover the gap between human beings and machines, behavior driven development, the Gherkin syntax, and how good communication and BDD can help drive business value for clients.
In part 1, we talked about when Paul discovered open source software, Inviqa and SensioLabs UK's history, Symfony and open source software in the enterprise. In part 3, we cover Drupal 8 as a platform for continuous innovation, how the combination of Symfony2 and Drupal 8 is opening new opportunities, and open source in the public sector.
The gap between human beings and machines
It can feel like the business and IT sides of the house are at odds sometimes. Paul explains that this doesn't mean there is a gap between 'business' and 'IT', but rather that there is "a gap between human beings and machines: We don't exactly think about things in the same way." Paul points out that communication – even between two individuals – is not simple. He continues, "We've seen that methodologies wrapped around the delivery of IT systems have been evolving quite rapidly." Today's agile methodologies, "are key to the delivery of modern software because they promote good communication. At the end of the day, it all comes down to well-specified systems. I don't think that's a 'business' or an 'IT' thing. All stakeholders have to get that definition in the best way they can in order that the developers can go build and meet the requirement."
Communication drives customer value
Paul defines Inviqa's business mission as facilitating communication between people to arrive at the best technology solutions and the best value for their clients. "We're very value driven with our customers. We are not just developing vanity features; we're developing value features. That's something we take seriously. When it comes to which things get developed in which order, it should be driven by the incremental value it can add to a business or a cost that it can take out."
BDD drives customer value, too
Inviqa is trying to help customer organizations of every size, "get to grips with modern specification and delivery techniques, which brings us to behavior driven development. 'BDD' is very important to the way we build systems today. We recommend on all of our projects that we use it." Here's an Inviqa video case study about feelunique.com that talks about how BDD helped them pivot from their old platform to a new one.
BDD plus modular, open source solutions
The process working with feelunique.com went something like this: During the specification process, "they're taking their old platform; describing it using the BDD syntax, Gherkin; and then using that as the definition, the starting point to build the new platform. Component by component, they're deprecating the old application and bringing new pieces online. That's one of the major benefits of using open source technology that people don't often think about: the modularity that it affords you. You do not have to take a big, wall-to-wall, monolithic set of applications to run your business. You can take various bits and pieces – best of breed, off the shelf – try things out. Even within applications, rip and replace components in a much easier way."
Gherkin: Definitions for success
Paul explains more about BDD and how Gherkin works: "The language is English, readable, understandable by everybody ... although the correct forming of the correct syntax needs to be done correctly ..." :-)
BDD tests are formulated as 'Given, When, Then' these are the situation ("I am a content author"), the trigger ("I submit a form"), and the outcome ("The site accepts my form, writes it to the database and shows me a confirmation message"). "... It's highly readable. It's nothing like computer programming which is anathema to business people. When you're constructing the definition of your system in BDD, everybody needs to be involved, which is really good! You have the business, the product ownership, the testers (QA software engineers), the developers, the PM's, the business analysts ... Everybody involved in web development can actually participate and ought to participate in that definition."
For a modular upgrade like for feelunique.com, "We take individual components, we ask people what they think it does and start to define the external features of the system." Some can be simple, some very complex. "We talk to people, we capture requirements, we ask people to add their own acceptance criteria. On top of that, we look into the codebase, and if we see some hardcoded issues that we can pull out and 'generecise' and put into the BDD description. Once that description is good enough, the developers come along, compile this definition and it will all fail because there is no application to support it. They'll start to put pieces of the application together and as they start to offer up pieces of the application, the BDD compilation starts to turn green.
Benefits of BDD
There are two great benefits here: The developer actually develops what the business needs – great! That's really hard to achieve. Moreover, the developer does not start 'gold-plating' features. As soon as something turns green, it means the business requirement has been met. Gold-plating is dangerous for two reasons: It's un-budgeted work and it's coming out of the mind of a single developer. No one else knows about that; no one wants it ... So don't do that!"
"For me, BDD means that the requirement is understood, shared, communicated, and met. We're using tools like Behat and phpspec to help developers to their job. [The eveloper behind Behat, Konstantin Kudryashov" works at Inviqa.) ... ] For Drupal 8, the community has adopted Behat and some other tooling to help define and describe the requirements that are needed for the application itself. That's another great example of how to pivot from old tech to new tech while making sure that you're preserving the features that you want to preserve."
The audio and image were out of sync for portions of our conversation. The video reflects that at times.