One of our clients said to us recently:
“That being said, with my experience in software one of the problems I feel I always come across is most projects do not get completed on time and the number of hours estimated ends up being a lot longer, these are just some of the common things I believe repeat over and over.”
Here at Datacrafts we know for sure: not only the advanced technical background of the team is important for the project success. Proper management matters as well.
Over the years, we have repeatedly seen how good initial planning has laid the foundation for achieving business goals, and the existing projects have been literally moving to a new level.
Let's take a closer look at this.
Commitment management is an essential part of Project Manager’s responsibilities. A PM makes sure that all the deliverables are provided on time, with the desired quality, and within the agreed budget frame.
In addition to delivering a great software product that meets all the client’s expectations, it is important to build a positive customer experience. By maintaining regular communication, pointing out possible risks and ways to mitigate them, and showing a room for improvement, a Project Manager builds partnership relationships with a client.
Competent project management takes developer engagement and the whole teamwork to the new level. With a well-established process of interaction and information exchange, the feeling of involvement and personal responsibility for the common goal achievement is likely to increase.
A Project Manager works on improving employee retention by building positive relationships within a team, keeping the team members engaged and encouraging the feeling of belonging.
While it is common for the project team members to communicate with each other, external communication is not something they do on a daily basis due to being concentrated on project related tasks. Here a Project Manager works as a connecting link between the two parties – the team and the client. So, it’s a PM's duty to see the whole picture, and to create a shared vision between the stakeholders.
With proper management, all the team members are aware of the project state and know what is expected from them, while a client is aware that the project deliverables correspond to the business objectives. So, everyone involved into a project is moving in the same direction.
A few years ago, the responsibilities of a Project manager could be limited to coordinating the work of team members and reporting to a client. It was actually hard to imagine the variety and complexity of functions that an experienced PM can fulfill today. Let’s look through them.
A Project Manager takes care of making the whole development process transparent, uniform and predictable, so that on each phase the project status is clear for everyone. To achieve this, a PM develops a conscious attitude towards the development process within the project team.
The choice of software development methodology depends on the project specifics and client’s expectations. Effective project management assumes defining an optimal approach for a certain project.
Here at Datacrafts we prefer Kanban methodology, and we are guided by lean software development principles. This means that we do not impose a specific approach. Instead, we start from an existing one, then we analyze it and propose improvements based on what we see.
We treat already established processes with respect. A good Project Manager follows an evolutionary, rather than a revolutionary path. In other words, gradual improvements are more preferable than sudden changes within a short time period.
One more duty of a Project Manager is to make sure that the project is being completed in accordance with time and budget constraints. Besides, PM keeps track of the new features and adjustments that were made along the way, and approves all the changes with a client.
Many projects have their own historical processes, and not all the advantages that can be derived from competent management are applied there. This is a normal and a common situation.
Datacrafts experts have hands-on experience in implementing various practices, approaches and tools. Seeing what brings meaningful results and what doesn’t, we can say for sure that project management does make the development process much more manageable, transparent and efficient.
We’ll illustrate this idea by sharing the process optimization steps that we have taken on one of the projects.
To make the development process more manageable and bring it to a whole new level, we have taken a number of measures.
From lack of visualization to a clear picture
Previously we had a github task tracker with columns “backlog” / “in progress” / “done”, which did not reflect the essence of what was actually happening.
What we did was breaking down the whole process into the steps and visualizing it on a kanban board.
To achieve a better level of visualization, we had to switch to kaiten.io tool. We have also documented the process in Google Docs and made improvements as needed.
From lack of transparency to awareness on all levels
The progress used to be not transparent enough – that is, you had to keep in mind what was happening to each card from the moment its status turned to “in progress" till the moment its status became "deployed to production".
So, we started analyzing the whole process. As a result, the bottlenecks were determined. We defined on which stages cards waited for the longest time – say, during the code review, or during the fixes after the code review. After that, we tried to figure out why they waited for a long time. One of the possible reasons is that developers have cards in progress already, and thus they have no time to make a code review and to correct a pull request. As soon as the reason was defined, we fixed it.
From loads of work in progress to “stop starting, start finishing”
One more issue was a great amount of work that had started, and hadn’t finished. Seeing this was frustrating.
To deal with this, we started working on unfinished work amount reduction. In particular, we decided to apply Work in progress (WIP) limits and switched from the “do a lot of work at the same time” approach to “stop starting, start finishing”. We were also developing the awareness of priorities within the process – that is, which cards should be served first, depending on their position on the board.
From long lead time to decomposition and promptly obtained value
Software developers often have to switch between tasks being in progress. As a result, we used to have a long lead time – cards have been at waste time steps on the board for a long time.
To handle this issue, we take several steps. First, we described classes of service – a set of descriptive rules on how to work with a certain object.
Second, we paid special attention to the decomposition of tasks. We tried to decompose large tasks and plan their completion in such a way that value could be obtained ASAP. The probability of blockers was also taken into account and processed accordingly.
From QA issues to a new manual testing practice
Previously we experienced lack of manual testing. In addition, the functionality verification process was unclear.
To improve the situation with testing, we applied defect definition standard. We introduced the practice of making a demo from the local machine, while performing manual testing in the staging and production environment.
From scanty tasks formulations to comprehensive descriptions
One more issue we had to deal with was insufficient task description. Sometimes, the description was even absent.
We were not okay with that situation as well, so we started paying special attention to the description of tasks and prototyping.
From quality related issues to defect definition standardization
One more set of issues was related to quality. Particularly, we were concerned with poor application quality, cosmetic and functional defects.
As mentioned above, a defect definition standard was introduced.
What else helped us bring our processes to a qualitatively new level?
Daily status calls proved to be a good practice to ensure everyone’s understanding of the work progress. Here we focused NOT on the developer and his progress, but on the task and its progress
In addition, we started conducting retrospectives after large features implementation. This can be done on a call as well as via Google Forms questionnaire. Retrospectives allow a team to perform better and better over time.
Finally, making frequent small releases and showing results to end users more often allowed us to gather feedback promptly and make sure that the software actually meets customers’ expectations.
The steps described above have led us to certain meaningful results.
At any time, the product owner is aware of what’s happening on the project and what is the current status.
We managed to reduce the cycle time from 18 to 14 days for 85 percentile. The average delivery time for 50 percentile was reduced by almost a half – from 11 to 6 days.
We were not planning sprints, we were working with a backlog instead. The tasks were taken from a prioritized backlog, which could be changed by the product owner at any time. As soon as the task was prioritized, a product owner could figure it out when it can reach the production based on the metrics provided. As mentioned above, we didn’t have sprint planning meetings – the planning process was carried out by means of our constant work with the backlog. Tasks from business were set as they became available.
Changes in the approach to work had also a positive impact on the team spirit. The sense of cohesion and belonging within the team has significantly increased.
And a few words about the benefits of having regular status calls.
As you can see, the role of a Project Manager is not limited to formal reporting to the client. This person holds responsibility for the success of the project and the achievement of client’s business objectives.
We hope this blog post has helped you understand the importance of having a Project Manager. Feel free to share this material with colleagues and friends who are planning software development!