Over the past several years, I've experienced several different software development methodologies while in various roles. As a software developer, I experienced XP/Pair Programming and waterfall. As a product manager, I was involved in agile/scrum. I've also seen Kanban. All of these process discussions and all the "rules", etc. got me to thinking about whether or not we are spending too much time talking about process. So let's talk about process for a little bit, and then dive into what makes a team great.
So what makes Agile so popular?
Agile has many great qualities that depend largely on the extent of your implementation. Nothing beats demonstrating working software! Agile involves the customer early and often, allows for change, and favors team work and discussion over formal, time-consuming requirements gathering. Agile is also a very flexible process so it allows for change in requirements and adaptation to fit within your company's culture.
So why is Agile so hard to get right?
Agile is more of a framework than a formal process. As such there are different variations (e.g. sprint length, release cadence, team size, grooming meeting cadence, retrospectives, etc.). Furthermore, every organization has different roles such as Business Analyst, Project Manager, Product Manager, UX, which all need to fit into this framework in some way. This is where folks like Agile Coaches help provide experience and guidance to adjust and tweak to work within the context of a particular organization. Of course, Agile is a commitment, those that try it a little bit or do not embrace its concepts will be challenged.
One of the pitfalls of Agile?
Agile is heavily dependent on day to day communication. Because there is no formal contract or big up-front requirements document, ongoing and constant communication are very critical (remember people over process). As a member of the team, communication is key, but should get too heavy weight with a lot of meetings. Remember that every minute you (or a team member) is in a meeting, they are not writing code, testing, or thinking about the next sprint. The key is to find the right balance between communication and over communication.
So does it matter what process I use?
It definitely matters. Agile works very well and gives you a lot of flexibility. I would definitely recommend a thoughtful learning experience and approach to adoption.
But, is the process the most important thing?
Not at all. I would rather focus my energy on building great teams. Great teams will succeed regardless of the process. There are way too many folks who are so interested in the process that they forget that the process serves the team and not the other way around. Build a great team and you will get great results. If you have a great process will you get great results?
What makes a team great?
If you have the right team together, you don't have to worry about process or making them happy. 'Happy' to them is building a great product and working with people who share the same passion that they do. In fact, the word passion is derived from the latin word for suffering. These are folks are sacrifice and suffer for their craft and product.
Building a great team starts with the hiring proces, but doesn't end there. Just like launching a product doesn't mean you are done, it's only the beginning of a new set of work. Constant leadership and mentorship is required. A focus on process is often time done at the expense of diligent leadership and mentorship.