views:

30

answers:

4

Is it possible to or how should one use agile development processes (Scrum/XP) and write user stories in order to develop purely technical programming libraries (think Spring or a game engine for example)?

A: 

The same as you do for business-based requirements, except the reqs are prioritized by the API consumers/technical people?

hvgotcodes
Yes, see the comment on Shady's answer below.
Arthur
A: 

If you're talking about Spring or Game engine, you still have a customer/product owner point of view to write your stories from..

That's you'd talk about your API, how other developers will use interfaces or what is exposed of your black-box

Shady M. Najib
Yes, exactly. Should stories be written along the lines of "As a developer, I want to be able to add entries to the queue, so that the queue can be populated"? That is, should the stories describe the API?
Arthur
Shady M. Najib
A: 

They are many component vendors that use Scrum to manage the development of their libraries.

I can tell you two of the StackOverflow.com sponsors are using it actively.

Pierre 303
A: 

Yes, you can use agile to develop software that doesn't have a front end UI used by human users. First, because you don't have to use user stories to be agile. Even Scrum doesn't prescribe that the backlog has to be expressed in user stories. It just says there should be a backlog, it should have one order of priority and items on top of it should be small enough to fit into one sprint. They can be expressed in any way that is understandable to both the Product Owner and the team.

But, second, you can write user stories for libraries too. You just think of potential pieces of software as roles - or even create imaginary personas that could be using this library directly. "As a text editor I can call this library to encode strings in Base64" would be an off the bat example of the former technique.

To sum it all up: any type of software can be developed with agile, user stories are not key to agile - they are just one pretty useful technique frequently used by agile teams.

Andy