Towards Agile: first steps
10/01/06 18:24
Here are lessons (from techy’s perspective) are from
my XP journey, where I rediscovered the joy of
programming.
Create/choose an automated functional testing framework.
Unfortunately, many enterprise projects (it is said about over 90% failure rate) don’t have automated user acceptance tests, which are doomed to fail in one way or another. If you cannot test your application repeatedly and reliably, then frequent releases are not practical. Besides team’s low productivity, you might also find these: ‘fixed defects reappearing’, developers are scared of making changes, team members are starting to blame each other. SO, Make it first priority, Relieve your developers/testers out of monkey testing. (By the way, WinRunner alike are testing tools, not frameworks. )
Simplify the source structure to be unit-testable.
If it is a green-field project, apply the rule 'design to be tested’. Otherwise, major refactoring (more importantly, courage) is required to make unit testing possible. Anyhow, all team members shall have clear understanding of ‘What are unit tests?’ Developers coding without unit tests is like soldiers going to a war empty handed.
Turn off exclusive locks on your source control.
You just can’t do refactoring effectively with exclusive locks on. It is hard to find excuses: as so many large scale projects developed successfully this way, including Linux. Switch to Subversion/CVS if you can.
Switch to a better IDE.
"Intellij IDEA":http://www.jetbrains.com/idea is an obvious good choice for Java, and Textmate for Ruby. There are not many choices in .NET world, "Resharper":http://www.jetbrains.com/idea dose give you a little sense of feeling of ‘Develop with pleasure’. Try to encourage your developers to learn and use key shortcuts (‘Use one tool well’).
Set up the continuous build server.
Well known open source products include : CruiseControl / CruiseControl .NET, and DamageControl.
Educate your team about ‘being Agile’
Many developers, business analysts and testers are suspicious (or even have completely wrong understandings) of agile methodologies. It is natural. Testers might feel automated tests will take over her jobs; BA’s might think using story cards and few written documents are crazy; Developers might hate losing the ownership of his code. It is not an easy task, but got to be done.
Create/choose an automated functional testing framework.
Unfortunately, many enterprise projects (it is said about over 90% failure rate) don’t have automated user acceptance tests, which are doomed to fail in one way or another. If you cannot test your application repeatedly and reliably, then frequent releases are not practical. Besides team’s low productivity, you might also find these: ‘fixed defects reappearing’, developers are scared of making changes, team members are starting to blame each other. SO, Make it first priority, Relieve your developers/testers out of monkey testing. (By the way, WinRunner alike are testing tools, not frameworks. )
Simplify the source structure to be unit-testable.
If it is a green-field project, apply the rule 'design to be tested’. Otherwise, major refactoring (more importantly, courage) is required to make unit testing possible. Anyhow, all team members shall have clear understanding of ‘What are unit tests?’ Developers coding without unit tests is like soldiers going to a war empty handed.
Turn off exclusive locks on your source control.
You just can’t do refactoring effectively with exclusive locks on. It is hard to find excuses: as so many large scale projects developed successfully this way, including Linux. Switch to Subversion/CVS if you can.
Switch to a better IDE.
"Intellij IDEA":http://www.jetbrains.com/idea is an obvious good choice for Java, and Textmate for Ruby. There are not many choices in .NET world, "Resharper":http://www.jetbrains.com/idea dose give you a little sense of feeling of ‘Develop with pleasure’. Try to encourage your developers to learn and use key shortcuts (‘Use one tool well’).
Set up the continuous build server.
Well known open source products include : CruiseControl / CruiseControl .NET, and DamageControl.
Educate your team about ‘being Agile’
Many developers, business analysts and testers are suspicious (or even have completely wrong understandings) of agile methodologies. It is natural. Testers might feel automated tests will take over her jobs; BA’s might think using story cards and few written documents are crazy; Developers might hate losing the ownership of his code. It is not an easy task, but got to be done.