Crunch time. We’ve all been there, but everything is wrong. You can feel your goals slipping further and further away every day. It seems inevitable you’ll be missing your targets. The feeling among the team is palpable. These moments have a long-lasting negative impact on team morale and future performance.
An “off-plan” project in software engineering typically refers to a project that has deviated from its original or established plan. It describes a project that is not proceeding according to the initially defined scope, timeline, or other key parameters outlined during the planning phase.
There are numerous reasons why a project might go off-plan. It could be due to changing requirements, unexpected technical challenges, resource constraints, or other unforeseen issues. Managing an off-plan project requires adaptability and effective communication. It often involves making adjustments to the project plan to bring it back on track or to align it with new circumstances. Follow these steps to turn an off-plan project into a success.
1. Identify Project Variables
Projects have a variable that is movable. The original iron triangle project management, proposed by Dr. Martin Barnes in 1969, identifies three project variables: time, scope, and resources. Scope refers to project requirements, time is the deadline for the project, and resources are the people and supplies/materials available for use.
The resources on most teams are fixed (people) or straightforward to request (supplies/materials), so we’ll assume your resources are fixed for this discussion. Bringing people onto a project is doable and might help, but it’s the trickiest variable to adjust because it changes the team dynamic. We’ll cover how to do this in another article.
To ensure your team is successful, you need to understand which variable applies to your project. There are shades of gray and you may have wiggle room in both time and scope, but one will be significantly more flexible.
Let’s break down each type of project with different sets of constraints and how to identify them:
Fixed Scope, Variable Time
- Constraints: The project has a defined scope that should not change, but the time for completion is flexible.
- Identification: Look for projects where specific deliverables or features are well-established, but the timeline is subject to adjustments based on various factors. Development methodologies like Scrum use this model (i.e. MVP).
Fixed Time, Variable Scope
- Constraints: There is a fixed timeframe for project completion, but the set of features or deliverables is adjustable.
- Identification: Identify projects with strict deadlines or release dates where the features or deliverables can be adapted to fit within time constraints. Development methodologies like Basecamp’s “Shape Up” use this model (i.e. appetite).
Variable Time, Variable Scope
- Constraints: Both the project’s scope and the timeline are flexible.
- Identification: These projects are characterized by evolving requirements and timelines. Regular adjustments and collaboration with stakeholders are common.
These might seem like dream projects, but they are also at a high risk of failure. Ambiguous goals lead to ambiguous success, but failure is always specific.
Fixed Time, Fixed Scope
- Constraints: Both the project scope and timeframe are predetermined and cannot change.
- Identification: Projects with clearly defined features and a strict deadline fall into this category. Adherence to a fixed plan is required.
Identifying the project type requires a thorough understanding of project requirements, timelines, and flexibility within the given constraints. Regular communication with stakeholders and a comprehensive project planning phase can help you accurately categorize the project type.
2. Adjust Expectations
Understanding your project’s variable is crucial, as it provides room for negotiation on behalf of your team. Committing to the fixed aspects while strategically adjusting what is variable allows you to steer your team back on course. Let’s explore how to do this with each type of project.
Fixed Scope, Variable Time
For projects with fixed scope but variable time, effective communication becomes paramount to addressing delays. Openly discuss with stakeholders the possibility of extending the estimated time. Transparency is key; inform stakeholders that the extension aims to enhance the project’s quality and ability to deliver on requirements. The earlier you communicate such adjustments, the better, as surprises in time deviations can negatively impact project dynamics. Estimates are crucial to build trust in the adjustments.
Fixed Time, Variable Scope
For projects with fixed time but with a variable scope, the focus shifts to adapting the project’s features within the specified timeframe. Prioritize essential elements to meet the fixed deadline by saying ‘no’ to nice-to-have but unnecessary features. Clear communication with stakeholders ensures that expectations align with the revised scope, fostering understanding and flexibility.
Variable Time, Variable Scope
In projects with both variable time and variable scope, defining either the time limit or the scope early on is essential to recognize project success. Understanding project expectations allows your team to avoid being arbitrarily labeled as a failure. Regularly reassess and redefine the time and scope based on evolving requirements, maintaining an agile approach while ensuring clear expectations.
Fixed Time, Fixed Scope
Unfortunately, projects with fixed time and fixed scope are challenging and prone to failure. To navigate these projects successfully, consider under-promising and over-delivering. Alternatively, leverage waterfall planning to define and de-risk the entire project clearly. While waterfall planning may be unpopular, it proves effective when there are few variables.
Use these projects as learning tools for upper management, showcasing the complexities of software development. Encourage a shift away from rigid scope and time constraints, emphasizing that flexibility yields better outcomes and prevents the pitfalls of poorly written code resulting from rushed projects. Breaking the cycle of cutting corners in fixed-time, fixed-scope projects is essential for your team’s and the business’s sustained success.
3. Address Root Cause
In the dynamic field of software engineering management, the ability to adjust variables is crucial, yet sustained success relies on a strategic focus: addressing root causes. Here’s why it’s paramount:
Balancing Adaptability and Image:
While adjustments offer quick solutions, frequent reliance on them can tarnish both the manager’s and the team’s image. A high-performing team excels not just in adapting but in minimizing the need for constant adjustments, demonstrating stability and strategic acumen.
Consequences of Misguided Adjustments:
Adjusting the wrong variable has repercussions, affecting the manager and the team. Failing to discern fixed and variable aspects can lead to misalignment, eroding trust and morale, and hindering long-term success.
Trust and Morale:
Repeated adjustments without addressing root causes create uncertainty, lowering morale and diminishing trust. Focusing on root causes establishes an environment of stability, vital for a cohesive and productive team. This proactive approach not only prevents recurring issues but also fosters a foundation of stability and strategic problem-solving.
In essence, while adjustments are a managerial tool, addressing root causes is the linchpin for sustained success. By understanding fixed and variable elements, managers cultivate a high-performing team that strategically navigates challenges and consistently aligns with broader organizational objectives, fostering trust and maintaining morale over the long term.
4. Normalize Healthy Change
Encountering unexpected challenges is akin to a flat tire on the road—it doesn’t signify poor driving, but rather the unseen obstacles inherent in the terrain. The ability to swiftly change a flat tire becomes a victory worth celebrating—a demonstration of skills and experience in navigating the unexpected.
Normalizing change extends beyond responding to challenges; it involves integrating them into a culture of continuous improvement. Celebrating each adjustment as a learning experience, coupled with a reflective analysis of the root cause, ensures a team that not only navigates roadblocks but transforms them into milestones on the path to success. This approach fosters a culture that embraces and celebrates change as a vital pathway to growth, steering the team away from a fear of failure and ensuring that adjustments go beyond being mere band-aids, contributing to sustained excellence.
However, regular adjustments to a project may signal underlying issues within the planning phases. Recognizing how often it’s healthy to adjust project variables is crucial. In an environment that encourages risk-taking, frequent adjustments might be appropriate. Conversely, in industries intolerant to risk, minimizing adjustments becomes a strategic approach to maintaining stability.
Perfection is not the goal; rather, it’s about avoiding the repetition of mistakes. Experimentation and growth are vital elements for maintaining a healthy and vibrant team process. While the search for the “perfect” process is a common desire, companies are in a constant state of change. Therefore, teams must evolve to remain successful, adapting to the shifting landscape.
Conclusion: How To Always Win
Success is not a rigid destination, but a dynamic journey shaped by a manager’s ability to define its terms. By skillfully identifying variables, embracing change, and addressing root causes, a manager transforms challenges into opportunities for growth. Normalizing healthy change becomes the bedrock of a culture that not only navigates obstacles but celebrates them as milestones on the path to enduring success. As a manager, you wield the power to define your team’s win by aligning with the business’s evolving priorities and ensuring that, regardless of the road’s challenges, your team always emerges victorious in what truly matters instead of bogged down by unimportant failures.