Words From a Purple Mind

Input on the important topics …to me of course

Principles of Agile Software Development

Alan Shalloway, CEO and founder of Net Objectives, presented on the lean software development principles and practices and how they can benefit to Agile practitioners during Agile 2008. For those of you that weren’t able to attend (like me) the video is definitely worth watching.

I thought the video was very good and intuitive for people that are either new to Lean/Agile development as well as for people that are working in the process now.

Depending on who you talk to depends on what they say the top principles of agile development are. I believe that agile development should include the following principles:

Team Involvement
When I say team involvement this does not just mean that members should work on the project together. The team should be able to communicate with each other at all times. The team should be able to work together and if any issues/risks come up the team should be able to come together and come up with ideas & solutions on how to fix the issue and/or decrease the risk. If you don’t have communication you might as well say forget Agile lets work on our communications skills first. Communication is KEY.

User Involvement
Whenever you are developing an application for an end user that user should be involved to verify you are actually implementing what they. Bringing in user involvement sooner than later is a good thing (at least according to me).

Project timeline & Resources are adjusted as needed
As we all know requirements change on a constant basis so it’s very important that the project timeline is revisited on a continuous basis so it can be adjusted to the changes. If resources are not available till a later iteration then the timeline may need to be adjusted and/or different resources pulled in (if they are available of course).
Dilbert on Agile Programming
Requirements are clear
One of the main issues I’ve seen in projects is that requirements are not very clear to everyone. Within the agile world a feature may not be fully developed in Iteration1 because in that iteration the developers are only coding a certain portion but the full feature won’t be available till Iteration 5. Even though the feature is being developed in iterations it is key to know what the expectations & requirements are of the feature so it is coded correctly from day one.

Testing is integrated into the project lifecycle
All applications should be tested to the fullest before it is released to an end user. Within agile development testing is not its own phase. In this process code is deployed in smaller iterations/releases. This means that developers are executing unit testing and testers are testing the various code releases during the whole lifecycle. Remember the point of the agile process is to be able to release the software when needed. During an agile project a tester should look into automating the core test cases sooner than later.

Pareto’s law (80/20 Rule)
Just like in a waterfall process you should still follow the 80/20 rule. The difference here is that the 80/20 will be based on each iteration instead of the whole project. During each iteration the team should determine what issues, defects, test cases are okay to be held off till the next iteration. Always remember that if you don’t execute a test case in one iteration you can still test it in the next iteration. In each iteration you should focus on the 20% that brings the most value first.

I could go on and on but I think I’ll stop for now before I put everyone to sleep. Post your comments below on what you think about this blog and/or your experiences with agile/lean development.