Sunday, March 20, 2011
Why have principles behind practices and techniques?
Friday, October 1, 2010
Agile Project Management Tools Evaluation
Sometime ago, I did an extensive research on the net to look for good open source tools which does the job. Every tool I gone through, I did installed it, experimented with it, and looked deep in its features. I had limited my research to tools which fulfills these criteria (so you may find many other tools not included in this comparison, so most probably they do not fulfill one or more criteria below):
- The tool is open-source (not even share-ware)
- The tool has an active development team, which is committed to continue support the tool.
Hope this effort helps you in your new projects.
Friday, July 16, 2010
Subversion folder structure
> Project 1
> Trunk
> Branches
> Tags
> Archive
If you expand this structure, you will find something like this:
> Project 1
> Trunc
> Management & Analysis
> Design
> Testing
> Code
> Branches
> 4.2
> 4.3
> 5.0
> Management & Analysis
> Design
> Testing
> Code
> Tags
> 4.2.0
> 4.2.1
> 4.2.2
> 4.3.0
> 5.0.0
> 5.0.1
> Management & Analysis
> Design
> Testing
> Code
> Archive
> Meetings
> Reports
As you can see, what goes in the Trunc folder is only fully configured items (which are part of the baseline). Whatever else is stored in the Archive folder, which is one folder for the whole project, no need to put it under the trunk.
As I did above, I have added two folders under the Archive folder: Meetings & Reports. These are the two broad categories which should not be part of any baseline.
Wednesday, June 2, 2010
Risk Management Primer For Small Teams
- Requirements are vague
- Lack of experience in the problem space
- Communication problem between the team and the customers/users.
- New technology, new tools.
- Performance and Scalability risks
- Integration of work products of dispersed teams.
- tight schedule imposed by the customer/market/management
- People get sick
- Team member leaves the company, or re-assigned to another project
- Team receives L2 support requests
- Requirements risks
- Many change requests from customer
Sunday, March 21, 2010
Take your time to pay for this technical debt, but let me know how you would prevent it in the future!
The idea is that: Part of fixing a problem is preventing it from re-occurring.
This does not mean that technical debt will not re-occur; it means that the specific issue that caused this type of technical debt should be resolved from the roots and hopefully not re-occur.
This way of thinking is a characteristic of high mature organizations.
Technical debt is not bad!
Actually, this is not true. Refactoring is a constant effort done by the development team even with the most intelligent designs. Developers (and their designs) matures "while" working on the project. This maturity emerges from that following facts:
- The level of understanding of the business domain gets clearer.
- Seeing the design at work develops more brighter design ideas.
- Development work is the most effective learning experience for developers. So, the more you develop, the more you learn about design concepts, and the more you see opportunities for improving the existing design.
Thursday, March 11, 2010
Software Development does not follow any predictable manufacturing process rules
Reflecting on these differences, it is so clear that Software Development does not following the rules of Predictable Manufacturing defined processes. This is because Software Development is an innovative, intellectual, and usually creative effort that cannot be govered or managed by any strictly defined process. True!
Something came to my mind while reading this, which is how to improve both types of processes.
For any defined process (predictable manufacturing), it is improved by getting it more and more defined to account for new special cases, or new causes for variation.
For any empirical process (new product development), it is improved by enhancing the feedback control system, which steers the development effort, and upon which everyone in the development team should depend.
Imagine what would happen if software is developed without such feedback control system?
In a next blog, I will give examples of famous mechanisms which implements these feedback control systems in software development.
Wednesday, August 19, 2009
Why collect measurements?
- To track your project. A basic task of any software project manager is to track the project progress. Examples are the defect rate, the size of finished functionality versus not finished. A very good technique which reads this measurement and displays it in a graphical format is the burn-up/burn-down charts which are heavily used in Agile development.
- To improve the process of producing software. Very similar to six-sigma projects, CMMI level 4 and 5 have techniques which starts with an evidence of a mal-functioning process (most commonly supported by measurements).Then, it digs into the root causes, and suggests corrective actions. Finally, it designs measurements to quantify the impact of corrective actions, and start over again. This ‘Continuous Improvement’ cycle is one of the techniques used in any engineering discipline.
Wednesday, August 12, 2009
What to keep in mind while designing your measurements
- Motivate the team to work towards achieving better measurements.
- Motivate the team to record measurements more accurately.
- Get the team to the point that they trust the value of the measurements as a means for project management, and as a means for process improvement.
- More process Patterns, by Scott Ambler.
- Rapid Software Development: Taming Wild Software Schedules, by Steve McConnell.
Sunday, February 8, 2009
Why process is important from day 1?
Sometimes we here some devastating (yes literally devastating) ideas like:
- Process is pure overhead.
- Process is discovered while working on the project (after we start the project).
- Let’s start coding, we will refactor anyways.
- Just jump in the code, things will get crystallized as you go.
The problems of such sayings is that it tempts poor developers to start a project with the unhandled risks inherent in the software development endeavor.
Famous processes like RUP markets for itself as “a risk removal process”. Agile methods assume to mitigate many risks of software development, even if not having a list of risks which we keep an eye on, which is true in my humble opinion.
The fact of starting a project without a clear view of how to do configuration management, how to do estimation, how to document requirements, how to involve stakeholders and get feedback on requirements, when and how to test, what are the bugs types, and which of them are to be fixed first, how, when and by whom architecture and design is going to be done, how to do tracking and what measures will indicate progress, how you will handle change, and many others. The fact of starting the project without a clear answer of such questions is pure act of failing the project, causing some persons to suffer sometime of their lives and get disappointed and demotivated at the end of the way (the developers), and causing others to lose some money, lose business opportunities, and lose trust in software development teams (the customers).
I hope this is a clear answer to the question. Please take some time and think of how you will develop software before you take the responsibility of any projects.
The next question is: Does process limit develop creativity? This needs a separate post.