How to Improve Business Communication with Behavior Driven Development

By. Lance Ennen

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, 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:

Feature: Coupon Codes
  As a user,
  I should be able to apply a coupon code to an event

  Scenario: Coupon codes expire
    Given a logged in user is on the event page
    When I register for an event
    And I enter a expired coupon code
    Then show the user a message that coupon code is expired

  Scenario: Coupon can be for amount off
    Given a logged in user is on the event page
    When I register for an event
    And I enter a coupon code for amount off
    Then the amount off should be reflected in total price

  Scenario: Coupon can be for precentage off
    Given a logged in user is on the event page
    When I register for an event
    And I enter a coupon code for precentage off
    Then the precentage off should be reflected in total price

  Scenario: Coupon can be applied to emails
    Given a logged in user is on the event page
    When I register Mike from Mike & Mike for an event
    Then I should see Mike is coming for free

  Scenario: Super Admin user can create a coupon with amount off
    Given a logged in super admin user
    When I create an event
    And I add a coupon code for an amount off
    Then I should see a message that coupon code has been saved

  Scenario: Super Admin user can create a coupon with a percentage off
    Given a logged in super admin user
    When I create an event
    And I add a coupon code for an percentage off
    Then I should see a message that coupon code has been saved

  Scenario: Super Admin user can create a coupon that expires
    Given a logged in super admin user
    When I create an event
    And I add a coupon code with an expiration date
    Then I should see a message that coupon code has been saved

  Scenario: Super Admin user can create a coupon and assign it to an email address
    Given a logged in super admin user
    When I create an event
    And I add a coupon code to an existing users email address
    Then I should see a message that coupon code has been saved

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.

Return to Blog