Software development methods are evolving. Inspired from lean manufacturing, agile software development methods are replacing the waterfall method. Agile methods aim at frequently releasing small software increments, collecting user feedback, and adjusting future developments based on the feedback. Each development iteration goes through all software development phases, including specifications, design, implementation, testing, acceptance and deployment, but over a short time frame, typically 2 to 4 weeks. The main benefits are:
This methodology is proving successful in development powerhouses such as nt teams now release installable software every 4 to 8 weeks (e.g. Facebook app, Google Chrome browser, Linux kernel, Dropbox) and update web services daily.
At Sologlobe, we are implementing the most widely used agile method, called Scrum, as well as other development practices often associated with agility, such as pair programming, automated tests, and test-driven development.
We use time-boxed Scrum iterations of 3 weeks. Software features in a list, called product backlog, are ordered by priority by a Product Owner, a Sologlobe manager whose role is to represent the interests of each client. At the beginning of each iteration, the software development team estimates the development time of each feature in the product backlog. Then, based on the iteration duration and number of developers, the team commits to delivering the n first features in the product backlog. Big features are broken down into small tasks displayed on a shared digital Scrum board. Tasks are self-assigned by team members, following the order set by the Product Owner. Every day, the team meets in a 10-minute Scrum meeting where each team member reports on the work done yesterday, the work that will be done today, and on the presence of any blockers preventing the work from going forward. The Scrum Master is a team member who coordinates the Scrum meetings, helps the team stay focus on the iteration objectives, and helps removing blockers. During development, developers work in pairs as often as possible. The benefits are:
At the end of the 3-week iteration, the team demonstrates the new features to the Product Owner, who accepts or rejects each feature. A software release containing the accepted features is then created.
We are also implementing automated testing. Automated testing allows to check if a change in the software has broken an already working feature. In the context of a highly customizable software like Solochain, automated testing involves running hundreds of tests on a virtual replicas of each client configuration. By allowing to perform thorough quality assurance on any incremental improvement of Solochain, automated testing increases the robustness of deployed versions. It also allows to continuously refactor the source code safely in order to reduce the technical debt, i.e. the sum of all the coding shortcuts done to meet deadlines. Ultimately, it will lead us to test-driven development, whereby an automatic test that fails is first written, and then a feature is implemented until the test passes.
Transitioning to agile can be challenging. It requires changes in development culture, such as applying YAGNI (You Ain't Gonna Need It) to feature development, i.e. avoid to anticipate and code what developers think end-user will need in the long term. Consider change management best-practices when introducing the agile methodology to your development team. The end result will be a solid, tested, and true product and your team will benefit from shared expertise.