The theory of project management is very simple – it’s a set of rules that allows you to deliver high-quality projects on time and within the budget. In short, project management is all about being in control, no matter if you’re the client or the development team. The practice is a bit trickier. A successful project relies not only on a set of good practices but also on the ability to engage the client and the team throughout the process and keep them accountable.
The foundation of software development
Software development is a challenging field. Dynamic. Everchanging.
Our projects take usually from around 3 to 6 months and it is extremely difficult to define their scopes precisely before the start of the project. And whenever there’s room for interpretation, there is a real risk that the client’s expectation and the delivered software will misalign. Just like on this good old tree swing analogy with its origin back in the 1960s.
Believe me, no one can afford it.
That’s why we found it natural to follow a path that would allow us to release the software regularly, in chunks (called iterations) and involve the client in the process.
The role of a project manager is more than significant for it to succeed. In addition to time, progress and budget tracking, we know our clients and our team needs those three things the project manager overlooks:
- sense of accountability.
Engagement means making good decisions
In the ideal world, an agile project team consists of a few figures:
- the sponsor (holds the budget),
- the analyst aka Product Owner (knows business requirements and is able to communicate with the tech team),
- the developers (get the pleasant job done),
- the testers (responsible for the quality of the product),
- the designers (create wireframes and design interfaces based on business requirements),
- the project manager aka Scrum Master (manages risks and removes obstacles).
Some roles can be played by the same people but truth be told, even in a team of three you can have three different visions.
That’s why we involve the client at a very early stage and treat them as a team member. It starts long before the first line of code is written.
- First, we invite our clients to our office. They have a chance to meet the team members in their natural environment, can observe how we work and interact. For us, it’s also a chance to discuss client’s expectations, visions and agree on the way we’ll work on the project. Believe it or not but doing this face to face has much bigger power than via Slack or Hangouts.
- Then, we run a 1-2 day workshop to set a product roadmap. We do it with the entire team (client, PM, UX designer, developers) using Stories on Board – a great tool to describe the product from top to bottom, digging deeper and deeper into functionalities. It’s a great opportunity to engage the client in planning, prioritising and product design. After the workshop, we’re ready with UX mockups, priorities and the set of features for the first iteration.
After such kickoff, the planning for further iterations can be made online, during regular meetings between the client and the team. It allows us to have everyone on the same page and react to any new requirements or changes the client would like to introduce.
The iterative way of works makes it easy for the team not only to stay up to date but also to learn the pace and the rhythm of work. They know what’s going to happen today, tomorrow and every Wednesday when we sum up the iteration. The best part is that the client knows it too.
Excitement is setting the pace
There’s nothing more exciting than a successful product release. Of course, there’s a lot of work to do before it happens. As much as a huge deal refers to the product itself, the motivation of the team can’t stay unnoticed. In our team, keeping the high level of endorphins is the role of the Project Manager.
It’s important to remember that at times, all of us need to be encouraged and praised. Our Project Manager understands that and makes the effort to show courage, respect, openness and focus to every team member. This way, he naturally lets them know that those values are welcome and cherished.
He talks to each team member at least once a day, follows up on the current tasks, identifies bottlenecks and adapts to the situation. Developers know they are not left alone. We found it the best way to keep the team motivated. However, every once in a while, a pizza won’t hurt anyone.
Accountability builds trust and self-esteem
It’s the team that is responsible for all of the work in the project. Each member of the team decides which tasks he or she is going to do instead of being told. It might feel counterintuitive at the beginning but think for a second:
When do you feel more accountable – making a decision when you’re ready or with your back against the wall?
It’s the same with the project team. We don’t say “This is your feature, I don’t care about it.” The whole project belongs to each member of the team equally. Only then they can see not what they are supposed to do but they see the project as a whole. When the team is working well and they like working with each other, reaching the goal and improving the productivity will come a lot easier.
Of course, developing a project can turn into a minefield. Sometimes it’s enough to hide a very small issue that hidden long enough becomes a big problem for the entire team and maybe even a risk for the project. It’s better to identify those little things at the time when they are little instead of making them grow. It’s like a snowball effect. With time, it will hit with a bigger force.
That’s why holding the accountability for the product by all developers, designers and testers is the easiest way to solve problems with a bunch of engaged people who take responsibility for their plans and decisions. Simply because the solution is their own.
Software development is a function of multiple variables, some of which we uncover in the process. We chose a framework that allows teams to apply techniques of continuous learning and adjustment.
On one hand, it gives the ability to build a product reflecting the ever-changing requirements of the market. On the other, it creates a tight bond and understanding between the client and the development team.
How? Through the ability to involve the client, the developers, designers in building one team, make decisions together and take responsibility for them.
It might not seem obvious but we know none of our projects could be successful without:
- engagement of all team members – a client is a team member, too,
- excitement – keep the team motivated to reach the goal,
- responsibility – make decisions and solve problems together to hold the team accountable in client’s eyes and in your own.