Improve Business Communication with Behavior Driven Development

Written by: Manuel Weiss
6 min read
Stay connected

This is a guest blog post by Lance Ennen, Co-Founder and Chief Technology Officer of Big Astronaut. Lance is driving Big Astronaut's core technology values and development around virtual software development, running virtual teams, and delivering the 'wow factor' to his products and clients. As a former Obtiva consultant and entrepreneur, and eternal Ruby on Rails devotee, Lance has designed and built web and mobile applications for everything from start-ups to Fortune 100 companies.

The original article can be found here. Get in touch with Lance on twitter!

Effective business communication heightens productivity. An important step in increasing communication and decreasing inefficiencies is to eliminate assumptions. A teacher of mine once told the class to never ASSUME. When you assume, you make an ass out of u and me.

Every entity, which has a hierarchy of employees, managers, presidents, etc, etc. is in danger of experiencing this assumption parody if the rules of the game, and more precisely, the rules of detailed tasks are left for interpretation.

This doesn’t mean people misunderstand or deliberately ignore directions. It means we are human beings using various ways to process information. The best way to improve business communication is to actually communicate and to follow-up frequently.

How do you improve business communication?

  1. Have an effective, clear cut plan to communicate

  2. Communicate

  3. Follow-up using questions to fact check

Common Communication Problems in the Software Business

It’s common practice for a software developer to get assigned a ticket (I explain this process in more detail here). The business doesn’t always do the best job of explaining the necessary steps/details that are associated with that ticket. They might just hand it to a developer and tell them to get it done. The developer will then in turn do what his or her take is on the ticket.

That’s not exactly the best way of developing something. As I said earlier, one person is going to interpret something differently than another. Here we have communication, but obviously it’s not effective communication. To make this process suitable for the software industry, we need to tweak it a bit.

Specific Communication Problem

On a site we are currently building, there is an area where you register for an event. Each event has options you can add. Once you have added/edited the event details, it totals up a price and allows you to check out for that event.

Originally, we put in a checkout button. Then we had to go back in and put a save and close button. After that, the business wanted to add a get invoice button, because some customers may want to get an invoice and then send a check in for that event.

The order button summed everything up. The save and close button saved where the user was in the process.

The developer’s version was to save the order “assuming” the person was actually completing the order.

The business didn’t want to actually complete the order until the check comes in, which adds more scenarios to the ticket.

These steps were all done on assumptions. Someone wrote a ticket. They did a mock-up and then assigned it to the developer. Based on what he saw, the developer did his version.

The Software Communication Solution

How to improve business communication with your software developers?

Using Behavior Driven Development tools like Cucumber, we can account for misinterpretations and make the inevitable clean-up process much easier, while increasing interaction and discovering additional details with the client.

  1. Start with a Feature (Story)

  2. Break it down into small steps (Scenarios)

  3. Follow up with questions

  4. Think of additional Scenarios

  5. Review Feature and approve for development

Cucumber is a behavior driven development framework that allows you to write features. Inside those features you have different scenarios.

On a current project I’ll write out these scenarios, then review them with the Project Manager and Business Analyst. They’ll read through them, and then approve them for development.

Once the Project Manager, Business Analyst, or Client has done the process a couple times, they should be able to write cucumber features for the developers before an initial meeting to improve workflow.

These cucumber features then become working documentation that any developer or business owner can pick up and in plain english understand not only what the software does, but what the exact code is executing during these scenarios.

Each line in a scenario gets broken down into what is called a Web Step. You’re able to write code within each Web Step that actually executes what you’re expecting and based on those expectations they either pass or fail.

A new feature would be, for example, building out coupon codes inside these orders. In turn, we’ll have a new feature called coupons.

Cucumber Example Here are all the different scenarios. Once we run this Feature with Cucumber it will give us Web Steps for each line. Cucumber can be used with Capybara, which uses Selenium Webdriver with FireFox, or you can use Selenium Webdriver for Chrome. Capybara allows developers to simulate real user interactions with the application inside these Web Steps. Using capybara, the developer can fill out a form and submit coupon codes using the webdriver, either headless or if there is Javascript on the page it can pop up the browser window during this Web Step and simulate that interaction. Which removes tedious QA (quality assurance) of these features in the long term, plus allows for the developer to iterate with the business and show them in plain english where they are with the development process.

This a great process for collaboration that makes it easy to change anything, quickly.

Business Communication 2.0

Using a written strategy is helpful. Writing software that encourages communication, interaction and spurs further creative solutions is going a step above and beyond. By iterating with the business using Behavior Driven Development tools like Cucumber, we’re able to account for discrepancies in interpretations and speed up the development process over the long term while allowing changing requirements from the business.

We want to thank Lance for making this article available to our Codeship Blog readers. How do you communicate in your Software Business? Let us know in the comments!

Stay up to date

We'll never share your email address and you can opt out at any time, we promise.