5 Key Learnings for an enjoyable Software Delivery Experience
The first couple of years of providing Software Development services in Nigeria was a nightmare. Many of our projects were plagued with Scope creep issues, Slipping timelines, revolving door of software engineers, late-payment of fees. Although these issues never stopped us from delivering on projects, we found each project extremely gruelling.
Anyone who cared to hear me rant back then would hear me blame our slow engineering team, or blame the Clients or blame the whole country. Essentially, I placed all the blame on everyone else but ourselves.
It was only when the management team decided to look inwards that we realised that we had missed a fundamental part in our project management. The Process. We had wrongly assumed that all we needed for a successful product was to hire some capable engineers, send them a requirements document, track their progress and wait for payoff at the end.
Oh, how wrong we were and it’s no wonder those early years were really gruelling. Since then, we have picked up a few learnings along the way. All we have learned around product development projects boil down to one statement.
THE PROCESS IS EVERYTHING
This is not saying that the people are not important because they are. However, I have come to learn that by putting the right process in place, a small team of inexperienced engineers can very well achieve some great results.
So what is the process? The process is the method by which we organize the people, the activities and the tools to ensure project success. This could be a methodology like Agile or Waterfall or the process could be the a way of thinking like lean or design thinking.
We have also learned some other things along the way and I will share some of them with you below.
1. Continuous Improvement
Today, some of the projects we really enjoy are the ones where we kept improving our delivery process rather than just adopt a methodology or framework blindly.
Whatever methodology or framework, or process a team adopts, it’s important to continually find ways to refine it during the lifecycle of the project. Adopting a methodology or process for a project without ever reviewing it again is the main reason why teams default back to their old ways of working.
Managers must continually take a holistic view of how the delivery process is working and continually make improvements. Little improvements to a process in many cases can unlock huge bursts of productivity - even simple changes like how often a daily huddle meeting is held.
A useful tip is for the project manager to schedule regular process review meeting with the team to discuss how the method of work and how to improve it. Usually those on the frontlines are able to think of useful suggestions for improving the process.
Whatever methodology or framework, or process a team adopts, it’s important to continually find ways to refine it during the lifecycle of the project
2. Make All Work Visible
This is our favorite learning and it has been fundamental for improving throughput at Cousant. Making all work visible means clearly making all planned tasks and activities visible to everyone on the team. The idea behind this, is for the team to have a shared understanding of what they should be working on and what work is coming up next. By definition, any work that is not made visible is unplanned work.
In a previous post, I discussed how unplanned work is the greatest thief of productivity in a team. As a project chugs along, secondary demands start being placed on the team in the form of fixing bugs, helping colleagues and other admin stuff. Unplanned work diverts attention away from the main valuable work and if not properly tracked, can significantly hinder progress.
Beyond making all work visible, it’s important to develop a policy for handling unplanned work. Unplanned work is a plague we cannot avoid, however it’s important to make all unplanned work visible by scheduling them into the project plan. The team should agree a process for capturing unplanned work and then set the criterion for scheduling it into the plan. The biggest benefit of doing this is that important work never gets sacrificed by the never-ending onslaught of unplanned work.
3. Repetition Fosters Excellence
Repeat !! Repeat !! Repeat!!
Any values that the team need to imbibe or learn must be communicated consistently and often. Things like the product vision, design principles, organisation values, milestone dates must be repeated consistently.
At Cousant, something I repeat consistently to our team is to Focus only on work that has been made Visible. We know we are doing something right when team members refuse to do work (no matter how tiny) that has not been captured on the project management plan.
Repetition is done not because it is an easy way to annoy the team but because it is a well known fact that when we hear the same thing over and over again, we soon start to believe or imbibe it. Let’s examine the case of the Ritz-Carlton Hotel.
The Ritz-Carlton hotels group is a symbol of service excellence across the world regardless of which of their hotels you visit. To help foster this value of excellence in their team, the hotel has a practice of bringing employees together at the start of each shift to discuss the hotel’s 16 customer service principles. This daily huddle takes place every single day and the discussion always centres around any one of their service principles. The consistent repetition of the service principles on a daily basis has led to the hotel employees imbibing excellence in their daily work.
The most successful teams have a set of guiding principles to ensure continued success in all their endeavors. These principles are important for shaping the mindset and approach of the team to their daily tasks. Managers of technology teams must repeat these principles over and over to ensure the team imbibe it.
Any values that the team need to imbibe or learn must be communicated consistently and often
4. Plan around your constraints
In every system, there are constraints. Likewise, in any software delivery team, there are constraints. Constraints are bottlenecks in the process that hinder the progress of work.
For example, a small software development team made up of one API developer and one mobile app developer can only deliver features as fast as the API developer can produce. The output of the Mobile App Developer is heavily dependent on the output of the API developer and as such the API Developer is classified as a constraint.
Whenever there are constraints in a team, the work should be planned around the constraint. This means, the team’s work must be carefully planned around the constraint in such a way as to reduce work piling up at the constraint while the rest of team waits on the constraint to deliver.
Beyond planning around constraints, it’s important for the manager to guard the time of the constraints jealously. Because the team’s success is heavily dependent on the productivity of the constraints, it’s important for managers to make sure nothing diverts the attention of the constraints. Guarding the time of the constraints is also key to reducing burnout of the constraints which can derail the project.
Because the team’s success is heavily dependent on the productivity of the constraints, it’s important for managers to make sure nothing diverts the attention of the constraints
5. Team Chemistry Matters
“How wonderful and pleasant it is when brothers live together in harmony” [Psalms 133:1]
Team chemistry is as important as the selection of the team itself. When it comes to teams, the whole is more than the sum of the parts. In the book Peopleware: Productive Projects and Teams, the authors (Tom DeMarco and Timothy Lister), show that when a team has chemistry, wonderful things happen such as
· Low staff turnover
· Strong sense of identity
· Sense of eliteness
· Joint ownership of product
· High Work satisfaction
Team chemistry usually does not happen organically, and managers must be intentional in fostering team chemistry. Managers have to keep checking in on the health of their team and make amends where necessary. Shouting matches, blame shifting, politics are all signs that a manager needs to do something quickly. Scheduling team bonding sessions and outings are just some of the tips to help with building team chemistry.
I have learned many things over the years but the things presented in this article are a few of the most powerful lessons that have positively shaped our software project experience in Nigeria. Would love to learn from you also. Do you have any learnings you can share?
UI Designer & Visual Designer
4 年Very inspiring
Developing strategies to address culture and organisational change challenges arising from system/ process implementation.
4 年Interesting read! In addition to repetition, highlighting and celebrating good examples of the desired team values, creativity/ initiative in problem solving (like a show-and-tell) so other team members can emulate could be another way forward.?
CEO @ AV CONSULTANTS LIMITED
4 年Well written Tolu. I sort of understand where Yemi is coming from. Team Chemistry really worked for us in the UK but we struggled a bit in Nigeria and unfortunately unlike you, I have no hair left to pull out. I also found out that your best developers may not be your best communicators and as such we had a different and painful "repeat, repeat" cycle. Nevertheless, we press on and I would still advocate for building the team and the chemistry once you get past the high staff turnover stage. The goal is to get to a stable and trusted team.
You hit the nail on its head. Very well written.
Director
4 年I enjoyed this write up Tolu and it certainly is inspiring. On your last point, team chemistry in regions like Nigeria remain in its infancy - in my opinion. Most people I meet just want to get paid and get the job done. Building team chemistry is often seen as a distraction, although I stand to be corrected.