Why project management matters?

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.


3 reasons why project management matters

Ensuring delivery within time and budget constraints

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.  

Improving employee retention

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.

Alignment between a client and the Project team

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.


PM’s activities go way beyond making status calls

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.

Ensuring project transparency

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.

Defining an approach to respond to client’s objectives

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.

Following an evolutionary path

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.

Tracking budget utilization

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.


Datacrafts experience

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.

Before / After

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


Before

Previously we had a github task tracker with columns “backlog” / “in progress” / “done”, which did not reflect the essence of what was actually happening.


After

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


Before

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".


After

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”


Before

One more issue was a great amount of work that had started, and hadn’t finished. Seeing this was frustrating.


After

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


Before

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.


After

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


Before

Previously we experienced lack of manual testing. In addition, the functionality verification process was unclear.


After

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


Before

One more issue we had to deal with was insufficient task description. Sometimes, the description was even absent.


After

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


Before

One more set of issues was related to quality. Particularly, we were concerned with poor application quality, cosmetic and functional defects.


After

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.

What we have achieved


The steps described above have led us to certain meaningful results.


  • Predictability and transparency


At any time, the product owner is aware of what’s happening on the project and what is the current status.


  • Cycle time reduction


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.


  • Greater flexibility and responsiveness to rapidly changing priorities


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.


  • The team spirit improved


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.

A final note on calls importance

And a few words about the benefits of having regular status calls.


  1. Daily calls discipline and contribute to the teamwork improvement. Even the developers themselves admit that you can no longer ignore or procrastinate something “until tomorrow“.


  1. In case there are questions or problems with a certain task, we can quickly understand that it is “stuck”, respond to it quickly, and quickly define the reasons.


  1. As a rule, a team that does not have experience with status calls, or has negative experience from scrum stand-ups, initially feels uncomfortable. But over time this problem will be gone. The level of trust is growing, people are more willing to ask for help, to respond to requests and to discuss problems. Involvement into the process increases, and everyone begins to feel personal responsibility for the entire project (not just for a single task completion).


  1. Calls take a little time, which pays off with the benefits mentioned above. With a team of 8 people and about 30 cards on the board, a meeting usually lasts for just 5-10 minutes, which doesn’t really distract developers from coding.


  1. If serious issues with certain tasks completion are discovered, and the team discussion is needed, then a meeting can last up to 30-60 minutes. However, if just a part of the team should take part in the discussion, the rest of the team can come back to their work.



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!