My first experiences on a Scrum team

I moved to a new job recently, which applies agile methodologies to manage software teams, particularly Scrum, which was adopted to make an effective management of price, estimates, task and resources. It’s my first experience working with an agile process and I’m no doubt it brings a lot of values for a software project.

The Scrum methodology works something like this:

The team works on iterations (called sprints) during from 2 to 4 weeks (it depends on the project, organization..) on features prioritized by the owner(s) and the Scrum master of the project referring to a list of requirements written on a document (called product backlog). The priority is set according to the business value of the feature. The called owner is a representation of the customer. The Scrum master is the person who removes impediments for the team to keep them focused on the tasks and keeps the focus on the sprint goal. More information you can find here.

Every sprint start we estimate some stories and select the work to be done on the current sprint. At the end of the sprint, we have the review and restrospective of was and wasn’t done.

Above are my opinions about this agile methodology working with for a month:

  1. The team is completely committed to the overall goal of the sprint
  2. Members try to help each other as soon as one poses an impediment
  3. Everyone on the team knows which task the others are doing
  4. Every member helps each other to complete their tasks when they finish their ones
  5. The Scrum Master is always there to remove obstacles, clarify the understanding of the stories and help the estimates
  6. The PO acts with the team to give directions and suggestions for the next stepsand how to interact with other areas on the organization

I’m very motivated with Scrum practices and the way we put it in practice, and I know I have to learn a lot more.

Have you ever worked with Scrum? What do you think about this agile methodology?

Association or Aggregation?

I’ve been discussing with my co-workers when we have to use Aggregation or Association in UML models. Martin Fowler in UML Distilled, 3rd Edition says aggregation is the part-of relationship. It’s like saying that a car has an engine and 4 wheels as its parts. But aggregation was included in UML to differentiate from association, because in pre-UML days people didn’t knowhow to differentiate them. But aggregation, as Fowler says, is meaningless. Jim Rumbaugh says “Think of aggregation as a modeling placebo”. Association is a way to notate a property in our classes, but you don’t manage the life cycle of the associated property, as the aggregation relationship do. The solid line between the classes define the way one instance of the associating class can execute methods (operations realizations) of the associated object. So, why to use aggregation?

Early abort idiom

Take a look at those Java code snippets:

public void insert(Order order)
   if(order != null) {
      // insert code here

public void insert(Order order)
   if(order == null) {
   // insert code here

The second code scratch is said to increase the Thomas McCabe’s cyclomatic complexity. The cyclomatic complexity is a model metric instead of implementation metric, as you may think. An example about implementation metric is LOC (Lines of Code). When I was in college, I learned the McCabe’s metric measures the number of control flow statements and return statements of your code, but it doesn’nt count the normal return statement of your methods. So, the McCabe metric is two for the first code and two for the second. McCabe says that the computation complexity rises with the increase of the execution routes. Cedric has an interesting opinion about this subject. Particularly, I think when you try to use the first insert(Order order), you end up having some nested if’s, your code tends to be a little messy. The second one focus on the basic flow of your method, that is, the normal bahavior its expected to have. In my daily basis, sometimes I apply the first one, sometimes the second one. And you? Do you think in cyclomatic complexity when you are coding?

Sun is gonna open source Java?

I’ve came across Vnunet to a interesting news that Jonathan Schwartz, Sun’s new CEO, said that Sun will release the source code of Java. One point of view is that this announcement would attract more developers to Java technology although this could lead to a lot of Java development communities, the same that occurs to the Linux OS distributions. On the other hand, this can be very interesting to developers who always wanted to explore the Sun’s JVM code.