Specification By Example: learning Agile through experimentation
The main goal of the OneCMS team in Alicante is to migrate the existing OdigeO CMS called ONECMS, which is developed using #NET, to the IT common, that means using Java and the jBoss platform. We call it jCMS.
I would like to share the OneCMS team’s experience with Specification by example (SBE). After assisting to some Agile workshops, the SBE book arrived to my hands, I read it and I really believed that this methodology could help us to improve our development flow. I shared the book with the team and after a quick presentation we decided to use it for developing our new jCMS application. We were very confident that we understood the theory behind this approach, so we started to work.
We started to work in the Key examples, the Stories and the functional tests using gherkin language. Everything seemed so good but, surprise! Our waterfall mind tried to build the whole framework before starting the development of the object that really brings value to the client. We realized that it’s not so easy to change your mind, even if you want to do it… We were doing a good job but the delivery was being delayed. We were surprised about how difficult was to write the gherkin scenarios only for the framework as there was no functional behavior specified.
So, let’s imagine that this is the project you want to deliver:
When your mind works as a waterfall one, you think it’s better to define and implement everything at framework level in order to build something that will enable all future developments that could (or could not) arrive in the future. So you start working and you have something similar to:
With this previous approach you can start delivering some part of the project but the client doesn’t perceive value until the last iteration. With this approach, feedback comes so late that when the first changes are detected, the whole the project could be outdated.
Forget about the framework for a moment. Give value now!
When you use Agile principles, you want to add value to the client from the very beginning. So you slice the work, but having in mind to release something with value to the client. So after you start working this way, you have something similar to:
So, one day, we woke up and decided to drastically stop the way we were working and focus only on delivering value to our clients. We started to apply SBE but taking into account adding value to the client. We reviewed the business goal, we reduced the scope and we sliced the work. With this approach the tickets started to flow and we had the first release in the following weeks after we change our approach.
So the lesson we have learned from this experience is to try being always focused on the value you want to bring to the clients and ask yourself all the time, if it is really a business value.