To be agile means to be quick on your feet, ready to move at a fast pace if something comes before you. In the software world, Agile describes a set of principles and as well as a process for development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. In the last few months, we here at Lofty Labs have begun to implement a “kind of sort of” Agile process. By that I mean, we have realized that forcing process can sometimes create inefficiencies in itself. Honestly, I’m unsure of how a team would manage the multi-dimensional aspects involved in programing without some sort of process. At it’s core, Agile brings concrete systems to a generally nebulous task. It would be very difficult to think through everything that needs to be accomplished while at the same time focusing on the tasks at hand without some way to work together on the project as a team. Here at Lofty, we have a pretty laid back and fun culture so, we have had to find a balance between implementing a process and at the same time maintaining that same culture that makes us more productive and customer friendly in the long run.
A core question that you should be asking yourself as you begin the Agile process is: “Are we an organization that blindly applies Agile or are we aware and in control of the factors that will influence our success?” From a project management perspective one of the most important aspects to start with (besides the organization’s culture) is to determine what will be the critical factors that will influence your success when using an Agile approach. Exercising awareness and control over the following factors will allow not only better decision-making when it comes to choosing the right project management methodology but also steering ongoing projects towards success. We are certainly still figuring that out, and we want to continually improve upon and build on the foundations of our process. Here are a few key lessons that we have learned along the way thus far:
Where do you want to go as a team? What needs to happen in the next month? The next six months? The next year? Sit down as a team and talk through these ideas, knowing that everything will most likely change. Without a goal, a team can become stagnant. This is the first step in taking on a big project and giving the team some direction.
Team feedback and continuous improvement is a major component in Agile project management. Agile projects are about courage in stepping up transparency and honesty. Improvement will never happen in the process if any member of the team does not feel comfortable with being honest with themselves and others. In many company cultures, employees have been conditioned through the years to hide information in order to avoid conflict. That is where developing a fun and open community driven company culture before the implementation of a new process can be a vital component of success.
The process is never more important than customer or team needs. It is important to inspire an environment of continuous learning and open-mindedness that will enable the team to stay on track and make good decisions. Does your process allow you to make changes at a moment's notice based on weekly customer feedback? In our company culture, we are ingrained in flexibility. Sometimes a project doesn’t go the way that was originally planned, or sometimes, a customer needs to make a change. We consider this to be a large part of what makes our culture great. We never make the process more important than the ability to provide our customers with a product that makes the most sense for them.
User stories allow us to capture the features that we want to implement, while deferring the specifics of how to implement them until we’re actually ready to build them. Once we’re ready, we’ll likely have some of the application built out so that it’s clearer in terms of what the new features should look like. In the long run, this could cause the problem of building everything out and having to go back to rework a few things, but it also gives us the opportunity to really figure out what we need from each feature and where we should go from there. This can assist in preventing the lack of motivation that can come from being overwhelmed in looking at the project as a whole; it provides your team with a direction to go right here and right now.
What’s important is that you take each failure as an opportunity to learn and self-correct. Being okay with failure will allow your team to openly discuss ways to fix the smaller problems before they can escalate into larger problems. Open dialog about failures can provide a detailed insight into how to move forward and make the best decisions for your customer. It's also important to remember failure does not lay on the back of one member of the team.
All in all, and I think that our team would agree, the Agile process has improved our team and customer communication. However, we look at Agile as less of a guideline full of rules and more of a book of wisdom that we can draw from and use to make decisions that make the most sense for our business. Agile has also provided us with insight into who we are as a team and our own capabilities, giving us increased confidence in our offering, more calculated proposal timelines, and an undeniable team cohesiveness that ultimately brings value to our customers.
Lofty Labs provides training to software teams.