Here’s a nice round-up of the major processes and methodologies out there. I’m sure the list isn’t complete, but most of the major ones are touched on. It’s a nice reference because it’s short and sweet.
The author doesn’t specifically endorse any of them over the others, but I’ll go ahead and share my favorites in the Best Practices category (hopefully it’s obvious at this point that we endorse Agile processes and methodologies):
- DRY (Don’t Repeat Yourself) – I’m always amazed at how an implementation can be flushed out to a nice design when you keep this in mind. When you force yourself to refactor out duplication, you often end up with a far superior design as a nice side effect. I tend to use the “Rule of 3″ with this; the third time I’m about to duplicate something, I try to refactor out the duplication. I find that trying to absolutely eliminate duplication can cost more time than it’s worth. See Refactoring to Patterns as well.
- TDD (Test Driven Development) – I don’t have as much experience with this as I’d like, but even a taste of it has shown me that there is merit here. It can be a difficult mind-hurdle at first, but testing first has many benefits. You get increased test coverage (duh!), a fast feedback mechanism on what you’re doing, a simple place to start a complex problem, an organic design, etc.
- YAGNI (You Ain’t Gonna Need It) – Trying to predict the future, especially in software development, rarely works out well. Just accept up front that you don’t need to worry about all the what if’s and life can be so much nicer. Not writing code is probably one of my favorite activities after removing unnecessary code. :)
Well, those are three of my faves; feel free to add any others that you like to the comments.