In recent days, I have been working closely with Craig larman to bring out a new domain modal based on scrum for Valtech cockpit. During the discussion with Craig, he talked about how stakeholders ask for % completion of the project and, how our PMs give them a %(percentage) !! It all looks idiotic if you read the rest of the following section.
The core reason for introducing agile methods in software is to manage the changes, adapt accordingly and be open to get changes. As per the statistics, change requests increases as the project size increases. If we are getting more changes obviously it would add more effort to existing estimated effort and this becomes a moving target. How can anybody estimate how much % of project has completed in this scenario? It is as good as telling not the truth, if I tell my stakeholder that we have finished 50% project !! (Unless you add a clause saying "as of today")
So, instead of using "% Complete" as the measurement, one can use the "estimated effort" remaining to complete the project
Monday, May 22, 2006
Saturday, May 20, 2006
What we miss when we talk about TDD
Here is a classic definition of TDD from Agile discussion group,
What we miss all the time while defining TDD is the "Refactor" part !!!
Classic TDD (and just TDD for that matter) is: write a little example of a (sub)set of behavior, write a little code so that the example works, refactor, repeat.
What we miss all the time while defining TDD is the "Refactor" part !!!
Thursday, May 18, 2006
Valtech's global development can lead to world class software development
I was having a chat with Thierry Cavrel while sipping coffee, and we were discussing a host of subjects. In fact, I wanted to share my perspective of how collaborative development can be achieved in delivering quality software at Valtech. Each of the Valtech's units distributed across the world has unique features. Valtech Germany is famous for their technology presence, France for there Project management/delivery capability, India for having expertise in Agile, US for there training and consulting expertise, so on and so forth. Each of these centers have key resources who are making difference. Considering that these resources are used collaboratively, Valtech can deliver any critical project and deliver it successfully.
So, Valtech is a classic example of Global Software development Village !!!
So, Valtech is a classic example of Global Software development Village !!!
Tuesday, May 16, 2006
anti-determinism-law
Here is another interesting quote read online (Author: William Bogaerts)
A timeline is going to be difficult, even if you know _all_ the details
beforehand. You know, there is an "anti-determinism-law" in physics
that
says you cannot know both the position and speed of a particle exactly.
There's a similar law in software engineering that says you cannot know
the effort and the requirements together exactly.
A timeline is going to be difficult, even if you know _all_ the details
beforehand. You know, there is an "anti-determinism-law" in physics
that
says you cannot know both the position and speed of a particle exactly.
There's a similar law in software engineering that says you cannot know
the effort and the requirements together exactly.
Making decisions late in the game
I found the following interesting discussion in the agile discussion forum, and was written by a software developer John: The discussion was about XPs practice "Make the decision as late as possible"
Reminds me of an older paper I recently read (but whose title eludes
me).
According to the premise of the paper, the boundaries that define
components should be drawn based on the difficulty of design choices.
An example might help to illustrate this. Suppose Joe and Harry are
contracted to write a spell-checker.
The customer wants multilingual support, so Joe and Harry agree to use
unicode. This decision is trivial (customer requirement), so there is
no need to abstract the concept of text within the application---they
can use unicode characters and strings.
Now let's say Joe suggests using a map (hashtable) to perform spell-
checking. This seems like an obvious choice to Joe because it makes it
easy to see if a word is spelled correctly. Harry, however, points out
that a map doesn't provide any means of suggesting a corrected
spelling, and recommends a sorted list instead, because it's easier to
find a closest match.
The fact that Joe and Harry didn't come up with the same solution to
the problem indicates the design of the spell-checking algorithm is
more difficult than the question of how to represent text.
Consequently, it's probably a good idea to encapsulate the
spell-checking algorithm, isolating its implementation details from
the rest of the application. This way, if they head down the wrong
path, they can correct their mistake with minimal impact to the rest
of the application.
I agree with this general philosophy. If a design choice isn't obvious
to you, that's because you don't have enough information. If you don't
have enough information, and make a decision anyway, you're more
likely to get it wrong. So in those areas where you can't immediately
(or unanimously) decide, it's best to introduce enough abstraction so
that if you choose poorly, you can correct your mistake without having
to rewrite the whole application.
Reminds me of an older paper I recently read (but whose title eludes
me).
According to the premise of the paper, the boundaries that define
components should be drawn based on the difficulty of design choices.
An example might help to illustrate this. Suppose Joe and Harry are
contracted to write a spell-checker.
The customer wants multilingual support, so Joe and Harry agree to use
unicode. This decision is trivial (customer requirement), so there is
no need to abstract the concept of text within the application---they
can use unicode characters and strings.
Now let's say Joe suggests using a map (hashtable) to perform spell-
checking. This seems like an obvious choice to Joe because it makes it
easy to see if a word is spelled correctly. Harry, however, points out
that a map doesn't provide any means of suggesting a corrected
spelling, and recommends a sorted list instead, because it's easier to
find a closest match.
The fact that Joe and Harry didn't come up with the same solution to
the problem indicates the design of the spell-checking algorithm is
more difficult than the question of how to represent text.
Consequently, it's probably a good idea to encapsulate the
spell-checking algorithm, isolating its implementation details from
the rest of the application. This way, if they head down the wrong
path, they can correct their mistake with minimal impact to the rest
of the application.
I agree with this general philosophy. If a design choice isn't obvious
to you, that's because you don't have enough information. If you don't
have enough information, and make a decision anyway, you're more
likely to get it wrong. So in those areas where you can't immediately
(or unanimously) decide, it's best to introduce enough abstraction so
that if you choose poorly, you can correct your mistake without having
to rewrite the whole application.
Monday, May 08, 2006
Elephant looking from various directions
I found this interesting piece of information on the agile forum by a member (Philip, no last name). This is what I always preach when somebody asks me the relation. Also, it is in synch with my thought that Agile is spirituality rather than a religion !!
All the agile processes use automated tests and frequent releases.
All the books about Agile development represent consultants telling
specific teams what to do, and making up jargon. They are all blind
men groping the same elephant, but each has named their part of it
something different. It's all the same elephant.
Sunday, May 07, 2006
Crossing the chasm
I found this nice article on Dr.Dobb's portal, which talks about companies based on their ability to take risk and move towards agility.
http://www.ddj.com/dept/architect/187200223;jsessionid=4MASEABOIHHWYQSNDBCCKH0CJUMEKJVN
http://www.ddj.com/dept/architect/187200223;jsessionid=4MASEABOIHHWYQSNDBCCKH0CJUMEKJVN
Wednesday, May 03, 2006
Pros and Cons of using Index cards over computer
Agile proposes people to make use of Index cards during requirement analysis and estimation phases. As per agile, it would help the development team and other stakeholders to change things quickly, ask questions without really "handing off" documents and waiting for things to happen.
Here are some of my thoughts on pros and cons of using 3*5 Index cards:
Pros:
1. Very agile. You can modify the information with ease.
2. Sticking them to the wall keeps the information in front of your eyes all the time.
3. Easy to carry from one place to other.
Cons:
1. Chances of getting lost are high
2. You may need a good secure storage space. Because over a period of time, the paper might become old and the chances of paper getting torn, and information getting lost is high.
One of the key advantage of using Spreadsheet(in parallel with Index cards) are
1. Quality of information would stay intact over a long period of time.
2. Sharing the information with onsite team located in a distributed team is easy
3. Spreadsheet is idea to keep track of information which keeps changing quite frequently.
Here are some of my thoughts on pros and cons of using 3*5 Index cards:
Pros:
1. Very agile. You can modify the information with ease.
2. Sticking them to the wall keeps the information in front of your eyes all the time.
3. Easy to carry from one place to other.
Cons:
1. Chances of getting lost are high
2. You may need a good secure storage space. Because over a period of time, the paper might become old and the chances of paper getting torn, and information getting lost is high.
One of the key advantage of using Spreadsheet(in parallel with Index cards) are
1. Quality of information would stay intact over a long period of time.
2. Sharing the information with onsite team located in a distributed team is easy
3. Spreadsheet is idea to keep track of information which keeps changing quite frequently.
Subscribe to:
Posts (Atom)