Wednesday, May 22, 2013

Source code repository and Version control in Cloud - assembla workspaces

I lost few of the changes I made to my personal project when my hard disk crashed. I used to keep back ups, but never felt the need to have version control as I was the only person working on that code base. That's when I started looking for a version control. Since everybody says that the era of cloud is standing at your door, I decided to open the door and be part of that. I started looking for a cloud based source code repository.

                                 
[Logo belongs to assembla]

From the options Google provided for a source code repository in cloud, I picked up assembla workspace. The decision was driven by the fact that they had an option of using SVN as the version control system. I already had Tortoise SVN as a SVN client in my laptop and since I loved the easiness in using it (you can download Tortoise SVN from http://tortoisesvn.net/downloads.html), I decided to go with Assembla workspace with SVN as my version control system.  

It’s been three months now since I started using it and I have to say I am a pretty happy about the product.  The following are the reasons for my happiness.

  1. Assembla has a free option for one personal project with three users maximum. It has a 150 MB limit. They have other plans starting with $19 which I feel is still high value for money.
  2. Works like a charm- I do now check in my code when i am in move. I have used 2G connections, data cards, broadband and I never faced problem is checking in the code.
  3. It doesn't even take a minute to set up and is very easy to use.


assembla workspaces is an ideal solution for small projects and start ups. It saves them from managing the pain of internal code repository with out compromising on speed.

Along with the source code repository, assembla workspaces provides you a Wiki page, mile stone and ticket tracking tool to manage your projects (not part of the free plan).  But from the perspective of working as a SCRUM team, I found Pivotal Tracker score better with its cool user interface (You can find the post here about Pivotal Tracker).

-Manoj

Wednesday, May 15, 2013

Being successful in global teams - Role of cultural dimensions

Raj was a hardworking kid from one of the small towns in India. He was a bright kid and consistently used to come top in his class. He joined one of the prestigious engineering colleges after his school. He scored high marks there also. He had a keen interest in programming and got selected in a multi national software company starting their operations in India.
Raj was very happy on the day he was first assigned on a project. It was one of the flagship products of the company and he is going to work on a distributed virtual team along with their US and Europe teams.  The only concern he had was being the only member from India in the team.  But he was clear that he don’t want to let that opportunity pass.
Things started going wrong for Raj from the first team meeting itself.  First a roadblock on his way to office delayed joining the conference call with his team by five minutes. Raj had checked in some code the night before on request from a senior developer which broke the entire build. To make things worse, there was a product demo on the same day which had to be delayed as the build was failing.  He called out in the meeting that he was not aware of the demo and he checked in because the senior developer asked him. To his disappointment, his lead didn’t agree with him and told his very clearly that it was he who is owner of that part and he shouldn’t shy away from taking the ownership.
From there, it was a downward journey for Raj. One issue after another popped up.  In six months, Raj who was once a hard working, motivated person became a demotivated soul who was scared to make any contribution to the project.
It's interesting to see what went wrong here? Even though every one in the team wanted to do the right thing, the perception of what is the right thing was completely different from person to person. For Raj, the right thing was to follow what a more experienced person asks him to do, for his lead it was Raj’s responsibility to say no to his senior developer if he was not sure of the changes.  So if you are working on a global team, how would you know what behavious is valued by your global team members? Interestingly there are not many organizations which teaches about this cultural aspect when they form global teams.
One tool that might help you to know how the values of team member affect their behavior is Hofstede's cultural dimensions theory. Geert Hofstede's theory of cultural dimensions explains how society's culture decides the values of its members and in turn their behavior.  Hofstede's cultural dimensions theory proposed four dimensions to measure this: individualism-collectivism; uncertainty avoidance; power distance (strength of social hierarchy) and masculinity-femininity (task orientation versus person-orientation).  He later added a fifth dimension, long-term orientation, to this.
Now let’s look at how Raj’s team get rated against the dimensions of Hofstede's cultural dimensions theory


In the above graph,
Power distance indicates the extent to which the less powerful members of institutions and organizations within a country expect and accept that power is distributed unequally. Higher the power distance, more hierarchical the society is.  
Individualism is the degree of interdependence a society maintains among its members. Lower the individualistic score, more closely knit the society is.
Masculinity / Femininity: A high score (masculine) on this dimension indicates that the society will be driven by competition, achievement and success, with success being defined by the winner / best in field – a value system that starts in school and continues throughout organizational behaviour.  A low score (feminine) on the dimension means that the dominant values in society are caring for others and quality of life. A feminine society is one where quality of life is the sign of success and standing out from the crowd is not admirable.
Uncertainty avoidance indicates the way a society deals with the fact that the future can never be known: should we try to control the future or just let it happen? The higher the score, the lesser will be the acceptance towards imperfection.
Long term orientation indicates the extent to which a society shows a pragmatic future-oriented perspective rather than a conventional historical short-term point of view.

As you can see when India scores high on power distance, Denmark from where Raj’s lead was have a low power distance score. So Raj expects every thing to be told to him clearly by his leads and have high respect for power that comes from seniority or role. But his lead believes in employee autonomy and each person taking the ownership of what he/she needs to deliver. If you look at the second dimension on individualism, we can understand why Raj is not able to understand the expectation his lead is having in taking the ownership of the issue

It’s impossible to avoid cultural conflicts when you are forming global teams. The way a person value his team member will vary from person to person in global teams depending up on the culture you are from. Many organizations try to overcome this by having a uniform organizational philosophies or principles across the globe. This helps the employees to understand what behavior is valued in that organization and helps to build a uniform culture across the globe. One thing that definitely helps in global team is the awareness about what your team member’s value as behaviors from you. As team members become more aware of this, they start putting focus on transferring the message more effectively by using the right wrappers reducing potential conflicts. So wearing the other cap and making decisions based on that might change the game in favor of you.
-Manoj

Tuesday, May 14, 2013

Why should you measure team velocity?

Honestly, why???...... ..
SCRUM teams use velocity to decide how much to commit for sprints and releases [You can find more about measuring velocity of a SCRUM team here].  Over a period of time, it is expected that SCRUM team accomplish a steady velocity. Sadly I haven’t got much success in attaining a steady velocity so far. It applies to even my personal project where I am the only member.  I thought it would be easy in my personal project since I have better control over the variables.
No luck so far……

[Image courtesy of digitalart/ FreeDigitalPhotos.net]
So does this mean measuring velocity is a waste of time? I don’t think so. Actually I support  measuring velocity more now. Here are the five benefits I am getting from this metric.
5.  Better scoping for the Sprint: My ability to plan on what I can deliver for the Sprint is getting better and better once i started focusing on measuring velocity. There is still a difference between committed and delivered features for each sprint.  But the deviation has reached a fairly acceptable state now.
4. Mitigating risks from the unknowns: In an effort to reach a steady velocity, I am handling the features with lot of unknowns differently.  I have reached stage where I know what is an accepted level of unknown for a feature in the product backlog.  All other features which are high on priority go to spike for the upcoming sprint or to the product backlog for grooming. Spike is a fixed time box n a sprint which is used to learn more on unknowns in technology.  Since I have fixed time box for Spikes, I have been able to create a WIP limit [You can read more about WIP here] for managing the unknowns.
3. A benchmark for self organizing and continuous improvement: Having set a benchmark helps in having focused discussion to identify areas of improvement in retrospectives and enabling self organizing in stand ups.  
2. Managing change: Accepting change is a way of life for an agile team.  But embracing change is like navigating a ship in rough sea. You need compass to help you to navigate your ship to calm waters. So when the sea gets rough by changes in the business requirement, attrition or other issues, you can use this metric also as one of your compass. But beware; it’s a compass and not a clock. It should be used to correct your direction and not to measure the success of the project or team.
1. Removing time stealers: A busy day need not always be a productive day. The difference lies in knowing what activities are adding value to the project is and what are time stealers.  Daily stand up meeting usually helps in managing the day. But this happens at micro level.  Analysis of trends in velocity helps in eliminating the time stealers which usually brings down the productivity of team.  This can be the environmental issues, external team dependencies or people issues. Usually this goes under carpet unless it’s creating an impact to the committed deliverable.  But having these recurrent issues is creating a waste. Forcing the team to re look at ways of improving the velocity during retrospectives will help in uncovering these issues.
-Manoj

Share this post...

You might also like..

Related Posts Plugin for WordPress, Blogger...