Feeds:
Posts
Comments

Posts Tagged ‘TDD’

Scrum by definition and design is meant to provide an alternative project management framework to traditional waterfall method. As one of the most used Agile methods, Scrum is non prescriptive but rather focusing on fostering team collaborative effort to achieve short term objectives following a relentless steady rhythmic work style.

Sprint after sprint team keeps shoving User Stories from the backlog to the development mill rotated by the collective effort of the team.

However, in the rush to finish the current tasks, quality can be easily overlooked and irreversible technical dept may accumulate unless consistently and actively monitored and controlled using a defined process such as the one I suggest here.

Again, four and three, four meetings types and three artifacts are the only rituals the Scrum Guide offers!

In practice, it is necessary to build on the framework offered by Scrum in order to avoid low quality deliverables that may occur by the mechanical application of the basic method.

Engineering practices that focus on quality borrowed from Kent Beck’s Extreme Programming (XP) is a good option here!

From those, Test Driven Development (TDD) , and Continues Integration (CI) are among my favorite recommendation to add to your Scrum practice.

Another example of an aspect of Scrum where the framework provides only a skeleton to be fleshed, is Architecture!

Unlike a method such as Rational Unified Process (RUP) whose “Elaboration” phase focus on realizing architecturally significant use cases producing what is called an “Executable Architecture”, Scrum doesn’t say much about how to Architect for a team that develops using Scrum? All what it says is that the team should decompose the system into shippable pieces, and deliver a piece per sprint.

In the last workshop I attended and organized by Egypt Scrum community, I started a discussion with a colleague about shipping a usable product every sprint and if that is really possible? My colleague insisted that time to market mandates shipping every sprint. I asked what type of projects she was working on, she replied that it is an upgrade for a layer of an existing software.

Oh yes, for such a project where you upgrade parts of the system while you can keep the rest working with old libraries, you can in fact deliver a working product every sprint.

But if you will develop an enterprise application that relies on a thick layer of relational databases and a complex business logic, it is rather difficult to vertically dissect the solution into shippable across-layer pieces that can be delivered incrementally.

In order for that to be possible, a good architecture effort is required in advance and possibly new architecture styles need to be used such as the one described in this white paper.

Microservices and Single Page Application

Keyhole Consultants (www.keyholesoftware.com) suggest that an architecture style based on Microservices-SPA shorten time-to-market for Scrum teams and enables agility and incremental delivery of working software.

So, in my opinion, Scurm alone is not enough for complex software intensive projects, it could be even dangerous! Among other things, you need to make good use of XP engineering practices to deliver quality products, and you need to build good architecture capability into your team to facilitate shipping every sprint which is very important for the success of Scrum practice as a whole.

Salam,

Advertisements

Read Full Post »