Monday, March 12, 2007

What kind of person do you need for Agile?

What kind of people does it take to be successful with Agile? I have learned that there are some attributes that are critical for success. If you don't have many if not most of these qualities, you or your team will suffer the consequences. As you are developing your team (and perhaps hiring people outside of your company) think about these things as you are determining who will be on your Agile teams:

Team Player - Agile is focused around communication and collaboration with other team members. If you can't play well with others, you will have a difficult time. If you are uncomfortable communicating within a team, you need to get out of your comfort zone. You are not doing Agile if you sit somebody in a corner to code.

Disciplined - Many people when seeing Agile for the first time think it is very informal and therefore undisciplined. I have experienced first hand that it takes a lot of discipline. There is never really down time. With shorter iterations, every minute really counts. You must be organized with your time. You must think how to be more efficient. You must constantly be thinking about the architecture, how to test, how to redesign, integration, builds. These can happen on at least a daily basis if not more frequently. This takes discipline!

Adaptable - As Agile requires the flexibility in the process to embrace change, so should each individual have the same approach. Processes will be constantly improving. Code and design will be changing. Customers will have the opportunity to change their minds more often. If you don't like change, you will have difficulty with Agile. You must accept that change will happen and prepare for it mentally.

Takes Initiative - Agile requires that the team be aware of not only what the customer needs but always looking for ways to improve the quality of the deliverables. Creating tests, looking at design, code review, refactoring takes initiative. Each person is expected to tell the team what needs to happen and sign up for tasks along the way. That takes initiative!

Self-managed - Though most Agile teams have some kind of manager or coach present, whether that be a Project Manager, Scrum Master, or Agile Coach, the ultimate goal is for the team to be self-organizing. If management is present, it is only there as help from the team to remove impediments and may be involved to report progress to stakeholders outside of the team. The team is responsible for taking what the customer wants and delivering it in increments. They must figure out how best to work as a team, who is going to take what, and know that each person is responsible for the team's success. In order to do this, each person cannot require somebody to assign tasks and have that person check progress. They can't be micro-managed but need to manage themselves against the team.

Experienced - Though Agile can work with some members of the team being junior-level, it does require experience from most of the team. Experience will technical skills. Experience with "soft" skills. Experience with Agile. Experience with the domain (customers, industries, products, services). The team will do better with the confidence that comes with experience. It is also crucial that junior-level people get up to speed quickly so they don't slow the team down. By developing in small increments and using techniques such as pair-programming, this can make the learning curve smoother.

Customer/Business Minded - Though most Agile teams have a dedicated customer, it doesn't free the team up to not worry about what the customer wants. In fact, I would say that Agile forces you to put yourself in the customer's shoes. "Am I doing what the customer wants?" "Does what I provide help the customer's business?" "Are there ways to help the customer be more successful?" I have seen people on teams who could care less about the customer but just want to go do their work. In the long term, this really won't work with Agile. Since everything is around prioritizing the work based on customer value, you can't be effective if you aren't thinking about the customer.

Did I cover them all? What other attributes can you think of that individuals need to possess?

No comments: