software master at the intersection of technology, science and art




Scrum is a formalization of RAD and extreme programming. It is a team centered development paradigm. The team is composed of developers, qa staff and project owners. A time period, called a sprint, usually 5 days to 3 weeks is used to complete business measurable deliverables. Business measurable does not necessarily mean interfaces as it may reflect infrastructure elements which are measurable. The team decides the complexity of each deliverable, sometimes called a task or a backlog item. The complexity is a separate concept for effort needed - I discuss this below. The team is coordinated, different then led, by a scrum master who oversees the process. Daily the team meets for less than 15 minutes to report on progress or any impediments which may have been encountered. This meeting is done standing up to foster the summary nature of the reporting and thus the meeting is called a "stand up"

Scrum has been very successful and I prefer it. The only issue is that there may be a major amount of refactoring as dictated by required changes discovered during later sprints. Refactoring is a major part of Scrum but I feel can be reduced by insuring that a member of the team has a full range knowledge of the project. This member can advise when future requirments may impact the current sprint deliverables. Also designing for interface and not implementation can reduce such refactoring.

Complexity is hard to measure - the experience of the team must measure the complexity of each task, This is done using a rating system, the most common being a set of Fibonacci Numbers ( 1,2,3,5,8,13,21). The higher the number the more complex the task. The difference between simple tasks is easier to measure then complex tasks. Thus the closeness of the lower numbers - complexity grows exponentially. Complexity does not always correlate to time- the complexity may be in creating the solution but the implmentation may be quick. However, in my opinion, time should figure in a complexity measurement particulary in tasks which may be simple but require a large amount of time effort.