Wednesday, September 14, 2011

Agile non-negotibles

Agile non-negotiables are those software engineering practices that you'd be crazy to go without.

Unit Testing: Knowing your code works
Refactoring: Paying down your Technical Debt
Test-Driven Development: Knowing what your Goal is before Coding
Pair Programming: Tightly binding review and development together
Continuous Integration: Making it Production Ready

I'm a little crazy. I don't always use all of the above practices. I try to but my desire to be a hero and get things done quickly overcomes my sensible side. I think most people do this too. There are always outside influences that can seduce a developer into over promising.

The argument for ignoring those outside influences and always practicing the above agile non-negotibles is that you will have:
- better quality code,
- more consistent deliveries, and
- less bugs.

Stop worrying about taking three days to develop something that might have took two days had you left out unit testing or refactoring. That is only a short term savings. Consider how long it will take to fix a missed bug or add a new feature next year.

Using the above practices is an investment in the future of your software.

1 comments:

Joe said...

I agree with this. Test driven development and unit testing are my 2 biggest engineering practices I use today with almost everything I do.

I do have 2 other practices that are important to me.

First is peer code reviews. Always good to have another set of eyes on your code. Even though you have unit tested, you may have missed something. We do this with almost every project we do.

Second is consumer demos. Its good to get feedback and/or approval from the consumers on what you just did with them. We do this at the end of every iteration.