Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2015

Limit WIP

Although Scrum Guide does not mention this explicitely, it is an important part of sprint planning and the sprint work itself to limit the amount of Work In Progress. Let's look at this aspect in detail and consider some examples.

Without the notion of WIP, several team members may just start work on several backlog items, say 6 developers start 6 different backlog items. In practice, this apporach often goes together with the phenomenon of one developer working on a single backlog item for several days - either because they are too big for one person to complete them quickly or because they are too big in general. If the backlog items are too big, each developer may work on their backlog item even for the whole duration of the sprint. Now, there are some disfunctions in a team that does this:

Teamwork
Each developer is focused on their backlog item, so there is no really teamwork there. If at least 2-3 developers focus together on one backlog item, it fosters collaboration and giv…

C3 - the origins of XP

I think this is not widely known, even among Scrum/XP practitioners and therefore I would like to spread it: please devote 10-15 minutes of your time to learn about C3 - Chrysler Comprehensive Compensation project.

If you read even these three short entries:
http://www.martinfowler.com/bliki/C3.htmlhttps://en.wikipedia.org/wiki/Chrysler_Comprehensive_Compensation_Systemhttp://www.coldewey.com/publikationen/conferences/oopsla2001/agileWorkshop/hendrickson.html
you will learn why this project is regarded as the one that gave birth to XP and you will see which, now very famous, folks from XP/Scrum world worked on C3 in the '90s.

To give you a trailer, this is what Chet Hendrickson wrote in the article that I provided the link to (last from the list). Share this with your Product Owner :-)

When C3 was restarted under Kent Beck’s coaching, Marie sat down and wrote the user stories we needed for the first release plan. She was able to explain how the stories fit together. She assigned the…

Scrum Days conference - Warsaw, 28-29 May

Scrum Days conference is just a few weeks ahead. On the second day, during the Workshops part, I'm going to conduct the Practical Scrum Training, similar to that I described here in my blog, but based on a different application example, so that it can fit into the time allotted.

If you are coming to the conference and you have not read the Practical Scrum Training posts yet, I encourage you to do so. I was able to try the training out with two groups of people of various skills (developers, scrum masters, managers) and I'm convinced that at Scrum Days we are going to have almost 3 hours of great fun and learning.

If you already know you want to join the workshop, please prepare a laptop with Python 2.7 installed and any source code editor you prefer (mind the tabs). You only need just a little knowledge of Python to attend the workshop :-)

http://scrumdays.pl/



Barbarians will take it all

[Wikipedia]
A barbarian is a human who is perceived to be uncivilized (...)

(...) Barbarian Invasions, was a period of intensified human migration in Europe, often defined from the period when it seriously impacted the Roman world.




We (professional software developers) are the Roman world. You who read this post, are most likely part of the Roman world.

Who are barbarians? Barbarians are all of those people who do not have the background (both in terms of education and experience) that the Roman world perceives as necessary to do a job in software development field.

Barbarians have lower expectations when it comes to salary, office and tools standard, fancy titles, etc.

They use a lot of stuff invented by the "real" developers so far. They may not have profound understanding of how this stuff works in details, but they are very skillful in using it for specific purposes. More often than not, Barbarians do not build excellent, fault tolerant software, but rather software that i…

Famous quote of W.E. Deming

Practical Scrum Training (7) Training Scenario

This is the final post in Practical Scrum Training. I will explain now how I imagine the training should be conducted. I imagine one day, with a lunch break, should be enough to cover what I list here below.

The training group should consist of a few (3-4) groups of individuals and there should be from 2 to maybe 4 people in each group. Each group should be seated in from of one computer.

The training begins with a description of the application and the participants should be able to run the included unit tests as well as the application itself.

Then, the trainer presents the initial product backlog.The trainer acts, to some extent, like a Product Owner. The product backlog refinement that we went through in previous posts is not meant to be performed upfront, but rather in several stages, on as-needed basis.

The goal for the teams is to build product increments in artificially short iterations - each 1 or 1.5 h long. The development team performs all regular Scrum events, like planni…

Practical Scrum Training (6) Discussion of Product Backlog (continued)

Let's consider the product backlog item related to the editing of data. Just this one more and then we'll jump straight into ordering the product backlog.

In order to correct the information about a person in the family tree as a family tree user, I want to be able to edit the data of a person I choose.

I didn't like this item from the start, because it seemed to me rather complicated to develop. When I think about it now, it doesn't seem that complicated. But for the purpose of training, I need to ask a question: can we do anything smaller, break it into smaller parts or do any other trick to achieve something similar quicker than if we were to develop it as is.

As always, there is something we can do. The aim here is correct data. If we add a new item that introduces deletion of people from the tree, it will be possible to delete a person with incorrect data and then add same person again, this time with good data. Maybe a little awkward to the user, but if we despera…

Practical Scrum Training (5) Discussion of Product Backlog (continued)

As promised in the previous post, we are going to discuss the product backlog item:
In order to secure integrity of family tree data as a family tree user, I want to have checks for all data I enter so that entering invalid data is not possible
Is this an easy one, or rather difficult and big? Maybe it's not super-difficult, but it is a large one, probably in the top three biggest items that we currently have in product backlog. How can we break it down?

First of all, let's realize which data needs to be checked. When adding a new person to the tree, we enter:
name and surname - these probably do not require any checksmother and father IDs - definitely needs checkingNow, depending on the order of the product backlog, we may or may not have additional attributes that need checking. If we deliver an increment with birth and death dates and gender attributes available for the user before we deliver this item, then this will open a whole new set of checks and the item will be even …

Practical Scrum Training (4) Discussion of Product Backlog

This post is a base for a discussion that could be held with a group of developers, facilitated by a trainer.

Let's look at our Product Backlog again and color the items that seem clear and straightforward green and those that require further discussion blue.
In order to add new people to the family tree efficienty as a family tree user, I want to be asked if I want to add another person right after I added the last oneIn order for the family tree to be easier to read as a family tree user, I want the graphical representation of the tree to present each generation in a different colorIn order to secure integrity of family tree data as a family tree user, I want to have checks for all data I enter so that entering invalid data is not possible In order to correct the information about a person in the family tree as a family tree user, I want to be able to edit the data of a person I chooseIn order to distinguish the gender of a person in the family tree as a family tree use…

Practical Scrum Training (3) Product Backlog

This post features the product backlog that will be used for the remaining parts of the training. It is deliberately not ordered and some of the items are written such that they can be good candidates for Product Backlog Refinement.
In order to add new people to the family tree efficienty as a family tree user, I want to be asked if I want to add another person right after I added the last oneIn order for the family tree to be easier to read as a family tree user, I want the graphical representation of the tree to present each generation in a different colorIn order to secure integrity of family tree data as a family tree user, I want to have checks for all data I enter so that entering invalid data is not possibleIn order to correct the information about a person in the family tree as a family tree user, I want to be able to edit the data of a person I chooseIn order to distinguish the gender of a person in the family tree as a family tree user, I want to be able to assign gender attr…

Practical Scrum Training (2) Basic functionality is ready

I completed what can be called a basic version of our family tree application. This is what the user can do with it:
add new people to the treeprint the tree in text modesave the tree as png file The program works from command line and can be started by typing:

$ python main.py

Prerequisities: there must be pydot and graphviz installed on the system to run the program.

The files:
https://drive.google.com/open?id=0BwKLVgwZWGw1UlRNbFJZV1ZPUnM&authuser=0https://drive.google.com/open?id=0BwKLVgwZWGw1UjhEM3NONHZRWlE&authuser=0https://drive.google.com/open?id=0BwKLVgwZWGw1SEY3QmMzUzdCczA&authuser=0 https://drive.google.com/open?id=0BwKLVgwZWGw1Z3FkNjU2MjFMaUU&authuser=0 The program has some shortcomings, for example it requires one to put the IDs of parents while adding a child, but in general it works fine. It can create a png picture like this one below.


This version is the baseline for the trainees to start. The backlog from which to work on extending the application will b…

Practical Scrum Training (1) Outline of the application

Next several posts will be devoted to the Practical Scrum Training I decided to develop. The basic idea for the application that will serve as an example will be this:

A desktop application capable of maintaining and presenting a family tree. The basic version of it (that students will be provided with at the start of the training) will most likely allowed just for:
entering individuals and defining their relationshipspresenting data (I'm not sure how, at the moment)persistently storing the data so that it can be loaded at next start of the application That's most likely all it will do. It will not be written with great care to the craftsmanship and that will be on purpose - it should be like any of these applications that you start working on when it has already been developed to some extent and your job is to extend it rather than develop it from scratch.

Practical Scrum training for Developers - a proposal - your feedback is welcome!

I have an idea of developing a practical Scrum training targeted at Developers that would use hands-on programming examples.

Most of Scrum games that I know of or experienced are metaphores, like building objects with Lego blocks, not real software development. I'm not saying these examples are bad, but there is definitely something lacking in terms of what Developers may practise at a training session.

My objectives for the training are:
develop an application and a rough product backlog that could be then refined and implemented during the training sessionfocus on breaking large user stories into smaller and smaller onesincorporate TDD as an XP practice The training would be done using Python.

Now, I need your feedback: do you think you would sign-up for such a training, if I had one ready? Would you want me to run this training for you? Do you also think that's something that is missing from regular Scrum training offer?

Please use comments or contact me directly with the fe…