How to Improve Business Communication with Behavior Driven Development
April 21, 2013
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?
Have an effective, clear cut plan to communicate
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.
Start with a Feature (Story)
Break it down into small steps (Scenarios)
Follow up with questions
Think of additional Scenarios
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.
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
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.
If you have any questions or need help pleace contact me.