charlsy chuks wrote:I often wonder if this is what agile is really about because it could be stressful making changes and undoing stuff that took time to put in place.
Hence my question 'When is the best time for some analysis and design on an agile project?' Thanks.
Andrew Stellman
Author of Head First Agile, Learning Agile, Beautiful Teams, Head First C#, Head First PMP, and Applied Software Project Management (O'Reilly)
Andrew Stellman wrote:The best for analysis and design is the last responsible moment.
...
Doing analysis and design [at the] last responsible moment means making only those design decisions that need to be made right now, and putting off any others that can responsibly be put off. It's a pretty simple idea, but it has a huge impact on how the team designs their software.
Concepts that you might want to look into include emergent design, clean code, re-factoring, design principles like SOLID, DRY and SLAP, continuous integration, automated testing, and Test-Driven Development. When done properly, all these contribute to agility and the team's ability to effectively evolve the software as you learn more about the system that you are developing.
The best for analysis and design is the last responsible moment. This is one of the ideas that really differentiates agile teams from more traditional ones, and it's central to having an agile mindset.
.....Agile teams take a similar latest responsible moment approach to planning, too, which lets then have much more simple and flexible plans.
Take for example the oft-cited example of Fitnesse: They chose to defer the decision on using a database. This turned out to be a good choice on that project because they were able to defer the decision *away* altogether.
charlsy chuks wrote:
I wonder if any 'serious' development can be done 'without' a database either relational or object kind like you cited in Fitnesse. A risk I sense here is that in doing bits of the system at different times, after a while especially without adequate comments and documentation, one forgets how the entire system fits in and works hand-in-hand. By that I mean how the different modules should
interact. Hence those who say a huge part of the design should be done upfront with about 90% clarity of the BIG picture of the system may have a point. Do you agree?
charlsy chuks wrote:
Concepts that you might want to look into include emergent design, clean code, re-factoring, design principles like SOLID, DRY and SLAP, continuous integration, automated testing, and Test-Driven Development. When done properly, all these contribute to agility and the team's ability to effectively evolve the software as you learn more about the system that you are developing.
I was just wondering that given the nature of agile development, which of these principles fits BEST into the agile framework?
We find this kind of rampant individuality very disturbing. But not this tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
|