Overcoming Challenges During the Development Phase: Best Practices
In our previous article from the series on IT vendor management, we discussed how to set up an efficient project kick-off. Today we’d like to talk about the most common challenges that one may face during the development process and ways to overcome them. In this article, we assembled the best practices from our experience that help not only mitigate these issues but also prevent them as much as possible.
Change request management
Change requests mostly occur with the Time & Material engagement model since it has high flexibility and allows the implementation of changes during the development process. However, one must be careful with change requests as they can promote scope creep or missed deadlines. Let’s look into it in more detail.
Change request management, as the name implies, is the process of efficiently managing change requests on a project so suggested changes do not impact the process in a negative way. There are two main types of change request management.
The first is loss of focus on a project and in this case, a project manager deals with the negative effects of change requests. This means, there might be a scope creep (project scope growing uncontrollably due to suggested changes) or the number of unexpected changes becomes too high (more than 5% of all tasks). When the project focus is lost, the team becomes working both on the changes and planned tasks simultaneously and it leads to massive confusion and delays.
The second type of change request management is predictable and controllable: for example when a client understands that the previously discussed scope is no longer relevant. In this case, the client and the vendor discuss the needed changes and implement them correspondingly.
Whatever the reason for the change request is, it is important that both the client and the development team understand how to efficiently deal with it. Below are some of the best practices for change request management that we find highly effective.
Timely notifications about a change request
One of the best things a client can do about a change request is to notify the team in advance. The earlier the team learns there is a change request coming, the better it will be able to plan its realization. If you want to place a change request, you should discuss it with the project manager who, in turn, will pass the request to the team and place it in the backlog (with its further prioritization).
Prioritization of change requests
As a client, you may expect proposed changes to be taken into work almost immediately as you may see these changes as a top priority. However, the priority of all proposed changes should be discussed with the project manager so they can be implemented in the current scope of work without intervening it.
It is essential that a project manager clearly communicates the planned scope of work to the client in advance so the client understands when certain tasks are to be delivered, and what priority is assigned to each change request. In this way, the client will know the current and future status of the project and won’t have any questions about the implementation of changes. As for the team, thorough task prioritization and planning contribute to managing the team’s expectations as developers will always know what needs to be done, in what order, and by what deadline.
A few more tips on change request management:
- The focus should always be on the project and what’s best for it;
- If the change request is critical (high-priority), it is important for the team to be able to adapt and switch over to another task quickly;
- It is important to communicate to the team that change requests at an early stage are beneficial and should be treated seriously;
- The priority of the proposed change will depend on the engagement model, type of the project, deadlines, and other factors - all of them are to be considered in advance.
Avoidance of missed deadlines
Missed deadlines are a rare occurrence yet they may happen. Needless to say, a missed deadline has a negative impact on both the client and the team so it’s important to negotiate the recovery plan in advance.
The most common reasons for missed deadlines are:
- Incorrect estimation of tasks;
- Change requests that are not considered and are poorly allocated in the scope of work;
- Lack of frequent releases (since regular releases ensure transparency and understanding of where the team is and what’s the project status at the moment);
- Lack of transparency and misunderstanding of short-term and long-term goals.
As for recovery, there are several methods that prove to be highly effective when battling missed or tight deadlines.
The balance between the workload and deadlines
When working on a software project, keep in mind that it’s a marathon (even though it consists of sprints - what a play on words) and it is vital that the team retains its efficiency and motivation in a long run. So even though tight deadlines may sometimes be needed (i.e. in case of a major release), if a team works by tight deadlines 24/7, it will negatively impact productivity and efficiency.
From a long-term perspective, the constant pressure from the need to follow strict deadlines may lead to severe burnout and, as a result, the team’s performance will drop significantly. Needless to say, poor performance will not only delay the development process but will also lead to dissatisfaction from the client’s side.
Hence, it is highly recommended to retain the balance between the real-life workload and deadlines. While it is important to achieve certain milestones in a certain period of time, it is also important to negotiate whether a team can deliver certain results with a bit of delay, if needed. For that, it is important to maintain transparent and reliable two-way communication so both the client and the team understand where the project is and what goals sound the most important and realistic at the moment.
Another great way to prevent missed deadlines is the use of remaining estimation instead. Remaining estimation means a project manager regularly asks team members to estimate (approximately) how much more time they’ll need to complete a certain task. In this way, it becomes much easier to track the progress of work and one’s speed.
Note though that the remaining estimation can replace a deadline only in case the deadline is used as a method of motivation and to understand when to expect the delivery of tasks. If timing is critical for the project, it’s better to stick with a deadline.
Replacement of team members
Even though the replacement of team members is always done for the benefit of the project, the process may be quite challenging especially if the vendor has not prepared for it in advance. There are normally three cases for replacement:
- Initiated by the client;
- Initiated by the vendor;
- Due to unexpected circumstances.
In the first two cases, the initiator has to notify another party in advance so the replacement won’t delay the project too much. In the latter case, both parties have to think of a recovery plan in order to keep the project up and running.
And obviously, there are several best practices that help make the replacement process as smooth as possible. Let’s have a look at each in more detail below.
Detailed knowledge base
As boring as it sounds, maintenance of project documentation and a solid knowledge base can greatly help in the case of team member replacement. By having detailed project documentation at their disposal, new team members can instantly immerse themselves into the project and quickly understand what’s going on and what exactly they need to do. As well, project documentation overall helps maintain a steady focus on the deliverables and resolve any controversial points.
Detailed onboarding plan
In one of our previous blog posts, we talked about the importance of onboarding and how it impacts the engagement and motivation of a new team member. The same applies to the replacement procedure: if you have a detailed onboarding plan for a specific project, it will become much easier for new team members to get on board.
As well, it is also important to note that a project manager is responsible for making the replacement process as frictionless as possible. The main responsibility here would be to ensure a short bounce-back when the team returns to its previous productive state.
Even though some teams overlook the importance of automated tests on a project, they can be of great assistance when it comes to finding the root cause of a problem. This is especially helpful for new team members who don’t know the project inside out yet but need to quickly navigate through it. In this case, automated tests point out the occurring issue and its source and help monitor the performance of project functionality.
Negotiation issues & miscommunication
Finally, one of the biggest challenges every business faces is miscommunication and negotiation issues. While both parties may think that they clearly communicate their thoughts, reality may be completely opposite. So how can you improve the communication situation on your project and make sure everyone understands each other?
Here are some good tips on maintaining transparent and effective communication:
- Always make sure everyone understands exactly what the other person meant: double-check and ask clarifying questions;
- If there is any issue from the vendor’s side, the development team should openly talk about it with the client and propose a solution (or come up with a solution together);
- The development team should hold regular retrospective meetings in order to identify any issues and ensure the team is engaged;
- It is advisable for the team to regularly hold demos and involve all team members in them;
- When a person creates an action item message (i.e. “feature X needs to be deployed), it is critical that the message clearly states who is responsible for the task, what exactly needs to be done, and when.
Once again, the key to successful communication is transparency and mutual trust. Both the client and the vendor should work together towards the mutual goal and hence they should not hesitate to openly discuss both positive and negative things related to the project.
It’s impossible to predict all possible challenges that might occur in a software development project but it’s possible to mitigate them by coming up with a corresponding action plan in advance. In this article, we’ve listed the most common issues that many people face when working on a software project but remember that every project is unique. There might be industry-specific issues or ones related to the team composition so keep all these aspects in mind and remember that efficient communication is the key to most challenges that may arise.
SoftTecoView all articles by this author.