Imagine a world where all product and engineering projects are finished on time. Those who have managed tech teams and led projects will have difficulty believing this.
In the tech world, it's very common that projects are late. This doesn’t mean the software engineers are not performing well or the engineering managers aren't working correctly. Some of the reasons can also be communication gaps, stakeholders changing the requirements and scope, an unplanned absence of some team members, or other unforeseen things like a pandemic disease, or even war.
In this blog post, we won’t go deep into the reasons for late projects; instead, we will list a few possible actions that can be taken by the engineering lead and will explain which of them can result in a positive outcome.
Table of contents
Common Mistakes When Dealing With Delayed Projects
Extending the Team With More People
The first strategy you can try is to get some engineers from the other teams and add them to your team to offer a helping hand.
This strategy usually doesn’t work, especially if you are very close to the deadline for the delivery of the project. Although these potential engineers would have similar technical skills, the team will need time to properly onboard them, particularly around the business aspects of the project. Also, you must keep in mind the energy in the current team, processes, practices they use, etc., as adding new people to the team can potentially jeopardize all of this.
So, this option is usually not very useful for the engineering lead on a short-term basis and can cause even more delays. Of course, building an engineering team that's successful is crucial, but extending a team close to a deadline won't do the trick.
Hiring External Consultants
Another possible option is hiring external consultants from companies like Adeva. This would mean quickly opening a new job position so that the company can match a consultant in a very short time. This option is useful if the team faces some technical challenges preventing them from making progress. In that case, the consultant can come, solve the technical issue, and the team can continue working.
In all other cases, the team will face the same issue described above, even if it adds more people to the team on a short-term basis.
Hiring external consultants is a very good approach, but only if it's properly planned upfront, not when the delivery is already late.
Working Overtime
Another frequently used strategy for dealing with late projects is the team and the leader working together overtime until the deadline.
This approach might not be ideal due to a few reasons:
- Software engineers, and generally people, can’t be productive for more than 6-8 hours a day. Forcing them to work more than that will result in a reduced quality of work, which can cause a chain of consequences.
- This is probably not the last project that the engineering team will be working on, and the company will need the team after the particular delivery again. Causing a team burnout for one project delivery can have more long-term consequences, like team members leaving the team/company and, in the worst-case scenario, jeopardizing their health.
Canceling Meetings to Code
At first look, this approach can sound like a brilliant idea. You'll reduce the number of meetings, resulting in more time for coding so that you're closer to the deadline. But is this necessarily true?
Although I am not a huge fan of meetings in general, reducing the number of meetings or having no meetings at all can cause even more delays than before. Coordination between the team members and between the engineering leader and the product manager with the team is crucial for the successful completion of the delivery; therefore, running effective meetings is essential.
Communicating, Reviewing, and Re-Prioritizing to Deal With Project Delays
Most of the options we reviewed so far seem like ineffective ideas on a short-time basis.
Isn't there something we can do instead of just sitting and watching our delivery become a huge failure?
From my experience, the best thing an engineering leader can do (together with the team) in this situation is:
- Review all the work left to be completed, prioritize it in logical and deliverable chunks, and decide what can be completed, properly tested, and deployed until the deadline. It's always better to deliver a fully working product with some missing functionality than a defective product with full functionality.
- Another critical aspect is transparency and open communication. If the engineering leader is optimistic the delivery will be late, they must inform the product manager and stakeholders immediately. Informing the stakeholders means you'll have more time to prevent potential damages and give stakeholders more time to prepare and even help select which features should be completed and which to be left out for the next delivery.
So, what steps should the engineering leader take when delivery is late on a short-term basis? The engineering leader should:
- meet with the engineering team(s) and confirm the status of the delivery and the possibility of late delivery;
- inform the other people directly involved—like the product manager, project manager, and scrum master—immediately about the potential late delivery;
- transparently inform the stakeholders involved in the project and manage their expectations;
- meet with the team to review what is left to be done, then together with the product/project manager, properly prioritize the items left and make a realistic plan for completion;
- present the plan to the engineering team and stakeholders involved, and start with the implementation immediately;
How to Address Delivery Delays in the Long-Term
Once the delivery is completed, the next logical step is to review the reasons why the delivery was late so you and the team can learn from your mistakes and improve things for the future.
Set Clear Responsibilities Between Team Members
There are cases in teams where there's no clear definition and distribution of the responsibilities of the team members, especially at the engineering and product leadership level. As a result, some crucial tasks are left behind. That’s why it's essential to check if this can potentially be the case for struggling with late projects and do all the needed modifications to fix the issue.
Implement the Proper Processes and Development Methodologies
Another important step is to review the software development methodology the engineering team uses and check its efficiency. Some teams prefer Kanban more than Scrum or the other way around. Maybe the problem is with the git flow the team uses or the QA process. Carefully examine this potential issue and make the required modifications.
Fix Any Issues With the Deployment Process
The time needed for the code written by the engineering team to be deployed is a really important aspect. The team may complete sprints on time, and the code may be ready to be deployed, but the deployment time takes too long. This is also an important aspect you must review.
Check Whether There Are Any Team Communication Issues
- Does your team struggle to communicate and collaborate?
- Are there any open conflicts and engineering culture issues that you need to resolve?
- Is a proper meeting framework in place for the team, so everyone is promptly informed?
These are all questions the engineering lead should ask themselves when reviewing the team's communication.
Have a Learning and Development Plan for Team Members
The more experienced and skilled team members are, the better and faster their work will be. Engineering leads should always have a proper learning and development plan in place for all their team members with specific goals for the next period of time.
Avoid Hiring More People Without Fixing the Issue First
Hiring more people to the team should come as a last resort. If you don’t resolve the potential problems mentioned above, adding more people to the team will only make things worse and scale the problems.
Summary
Dealing with late projects can be stressful for the whole team, especially for the product and engineering leadership of the team. Although there's no one-size-fits-all approach, and the potential solutions can vary based on all circumstances and types of projects, I hope the tips shared in this blog post can help engineering leads in the future.