Most software-development buzzwords of the past few years, have been at times labeled either a methodology or a practice.
I never really thought of this before, but it always seemed to me that a methodology is the structuring (i.e. 'how'), of practices (i.e. 'what').
But if we take for example Agile and TDD, the former is commonly referred to as a methodology, fine, but TDD too, and since it is a part of Agile, in my reasoning this 'demotes' it to being a mere practice.
I could easily come up with more examples like this, especially involving 3-letters-acronyms that feature at least a letter D somewhere, but I hope that's enough to make my point.
I just happen to have stumbled upon a very interesting blog post by Ivar Jacobson on the subject
The software development community has been talking about practices in an informal way for a very long time – more than 50 years. In the way the community talks, a “practice” is just something that people do, a habit they have that may be good, or perhaps not good. Talking about practices in this way makes for good conversation, but it is hard to figure out how to combine good practices into something meaningful.
I like to talk about practices in a more precise way, so I will refer to these as Practices (with a capital ‘P’). With a more precise definition we can do some interesting things: we can combine them (or compose them) in interesting ways, and we can separate them to allow us to replace a practice with a better one. Precise Practices are practical, because they are much easier to learn and adopt than learning and adopting a method or process. They ”are as simple as possible but not simpler” to quote Einstein.
Practices remove the need to have one single monolithic, all-encompassing method or process. In the Practice world a method is just a set of separate but complementary Practices. This reduces the complexity of improving processes – it can be improved a Practice at a time.
To sum up my understanding thus far, a practice is an actual activity that can be pinpointed as something that you actually DO.
On the other hand a method, or methodology, or process, is more abstract, as in philosophy, being a way to combine practices over time, in order to succesfully deliver a software product.
Anyone agrees with this?