I know you see this post and think that I am going to shock you with the best approach to software development and I am! The great thing is I am not a consultant being paid for this so you don't have to spend countless thousands of dollars for me to come into your organization and tell you what processes are working for you and what you need to change to have successful projects.
Why not? Shockingly, I don't want to take your money! I don't want your organization's money either. What I really want is for you to be successful. I want you and your project to go as well as it possibly could.
So what's the big secret? What is the best methodology? What is this utopia I speak of? It's quite simple really.
The best methodology for successful projects is to:
Find what works for you, and do it.
I'll let that sink in for a moment. Take a deep breath. Breathe out slowly. It's all so simple, yet what does that mean to do what works for me?
- Pair programming works for you? Do it. If it makes sense to only do it say 20% of the time, do it. If it makes sense to do it more, do it. If it doesn't make sense, don't do it.
- Continuous Integration works for you? Do it. (Gosh I hope it always makes sense to do CI.) If you don't already do it though, find out when it makes sense to implement and do it then.
Can you see the beauty in this common sense approach to development? If you think about it, it is really about being pragmatic. Less analyzing about how to get better about the process and more focus on getting things done is the answer.
Is there a time for analysis? Sure there is. Reserve that for when you are figuring out if something worked for you that you just tried out. Call it a retrospective (if that term works for you). Does it work for you? Keep doing it. Something needs tweaked? Do it. Not working? Stop doing it. To be fair, sometimes you need to try things more than once to be sure (you know, give it a fair shake), but don't lock yourself into doing something if it isn't working for you.
Does it make sense to look out across the software development industry at what others are doing? Sure it does. It makes sense to get new ideas from others, but remember that even though you are fundamentally all doing software development, what others are doing is not what you are doing. Heck, other people on other projects at the same place you work are not even doing what you are doing. Even more alarming, you are not doing what you did on your last project! If you are, it means you didn't learn from the mistakes you made on the last project. You are not doing what you did on your last project because you have grown. You have gotten better. You have, shall we say, evolved. You are better than you were yesterday, and six months from now you will be even more evolved! I digress.
What I am trying to say is that what works for one project won't necessarily work for another because there are so many differences. So many inputs go into software development that there really isn't a set recipe. It's more of a concoction that is different every time you make it because you can't always control the ingredients. That is why you have to find what works for you.
Now remember, the most important part of this novel approach is the do. You need to make sure you implement this part of the process. ;-)
And because it bears repeating I'll mention it again. The best approach you can take to a successful project is to Find what works for you, and do it.