Friday, September 29, 2006

Blogging from Hyederabad airport

I am quite amazed to see indian airports becoming hi-fi day by day. On my way to Dallas, while waiting for my next flight I could see many people browsing in the lounge. I wanted to give it a try, and upon switching my laptop I could clearly was able to get atleast 2 signals, and one of them helped me to blog this post !!

During my journey from Bangalore to Hyderabad, I was able to read some 20 pages of Goldratts book Goal. The book kind of takes your through a trance, you will forget your surroundings !

Monday, September 25, 2006

Importance of coaching in distributed agile development

When an organization starts a new practice or introduces a new process into software development team, there would be some slack time before it really sees some gain. This is true especially when an organization decides to move from traditional development to Agile methodology. The practices like test driven development, refactoring are not so easy to learn without a coach in place.

In a distributed agile development scenario, one needs to be careful about the gap about the knowledge of agile methods between onsite customer and offshore customer. More the gap, more resistance resulting in reduced productivity. Generally this type of productivity problem happens, if both the onsite customer and the offshore team are new to agile methods. If one of them has really mastered agile methods then the gap can be reduced fast and there would be a productivity gain.

For Ex: if the onsite team coordinator "thinks" TDD is good, and starts pushing offshore team to practice "TDD". The offshore team, which is new to TDD would not only resist this, but also will try to write code to make the coordinator happy. This results in overstepping the values behind TDD or any other agile practice for that matter.

Friday, September 22, 2006

Agility and maturity

I keep hearing from people time and again that agile methods are for matured teams. My immediate reaction to such conversations is, agile makes the team more matured. I have been applying agile methods from the last two years, and each one of the team member (including myself) had come from CMM (or synonymously called traditional water fall model) have changed a lot after certain time. When I say change, it is not only the ability to deliver quality software but a mindset to learn and adapt. The reason being, the key practice, I would like to put it as "heart" of any agile methods practice is the "iteration". The rhythm and responsibility that gets created within an iteration makes the team more responsible and matured.

I am becoming more and more confident with great stories to prove that, one can apply agile methods to any projects and any "type" of people, and the result from it is always going to be something positive "on" the mindset of the team.

Valtech Days Conference Dallas Oct 2-3

I have prepared couple of presentations to share at Valtech Days conference going to be held on Oct 2-3. I would be presenting paper on "Monitoring distributed agile projects - tools comparison". I would be leaving India on Sept 29th and planning to be back by mid october.

I have done enough research in the last few weeks comparing various Agile PM tools available in the market(both open source and commercial). I was amazed to see that there are nearly 20 tools available and in various stages of development.

Valtech cockpit is tremendously ahead of other tools when it comes to third party integrations.

Thursday, September 21, 2006

What is Agile

I know that you would be surprised to see the title !!! But, if you read the article by David Anderson you would definitely realize that most of us are forgetting the goal that was created to create agility in software development.

Just to summarize the point from the above article,
A process is agile if it

* enables companies to easily respond to change
* delivers working code to market faster (than previously or with other methods)
* delivers high quality working code
* improves productivity
* improves customer satisfaction
* and provides an environment for a well motivated team with high job satisfaction

Here is a good comparison between defined process and agile from Mishkin Berteig

Agile Axioms: We are Creators, Reality is Perceived, Change is Natural
Defined Process Axioms: Humans are Resources, Reality can be Legislated, Change is Bad

Agile Disciplines: Empower the Team, Amplify Learning, Eliminate Waste
Defined Process Disciplines: Enforce the Process, Avoid Experiments, Eliminate Variance

Sunday, September 17, 2006

Looks like I am able to blog again

From the last couple of days, the entire blog thingy was working weird. All my posts seemed to get into some kind of black hole not able to see the outside world. Hopefully this should work now.

Thursday, September 14, 2006

Benefit of tools in Software development

Today we were having a great debate on features and flaws of several tools. One thing I noticed during the discussion was, tools are being developed to control the people and process. I am feeling there is something terribly wrong in this concept. Even though I have been using several tools from many years, I had never noticed such a huge influence of tools in software development.

Many a times, the management decision to use a particular set of tools in the organization forces the development team to constrain themselves to adopt to the tool. This constraint reduces the creativity, productivity and enthusiasm in teams.

Saturday, September 02, 2006

Difference between Test First programming and TDD

I have seen people using the words "Test First Programming" and "Test Driven Development" interchangeably, which is wrong. There is a subtle difference between the two.

In Test first programming, you just write the test using xUnit family(mostly) and then you write your code. There is not much rule associated with it.

Test Driven Development is a special case of test first programming where there are certain rules defined. For Ex: You write the test first, ensure that the program fails, then you write the code to make the test work, and finally refactor. This cycle is continued.