Contact Us
24/7
Python BlogDjango BlogSearch for Kubernetes Big DataSearch for Kubernetes AWS BlogCloud Services

Blog

<< ALL BLOG POSTS

Navigating the Impossible: The Hybrid Path to Successful Software Projects

|
June 5, 2024

Every human effort is fraught with risks that project managers strive to mitigate. Software development brings its own set of challenges.

External Dependencies and Rapid Tech Changes

As a starter, most software relies on external components, such as pre-written third-party libraries, APIs, and third-party services, to leverage existing functionality, speed up user interface development, and connect various systems together. Those third-party components can introduce issues and dependency management challenges if not carefully managed.

In parallel, the wide range of hardware—smartphones, tablets, desktops, smartwatches, and IoT devices—demands that software be compatible across multiple platforms such as iOS, Android, Windows, and Linux. This necessitates development in various environments and adherence to numerous protocols and standards, ensuring seamless operation across different markets.

Software must also be flexible and scalable to accommodate user base growth, users in new geographic locations, and sudden bursts of traffic.

Finally, the rapid pace of technological change (think AI lately) means that software must continuously update and adapt to remain competitive and effective.

The Software Project Manager’s Impossible Path

In order to mitigate risks and (get the impression they) have more control, software project stakeholders will often try to impose arbitrary constraints, such as a fixed budget and a fixed timeline, sometimes even a fixed scope! But this Waterfall approach is failing to plan for the unknown and the challenges that inevitably come with any human project.

In light of all this uncertainty, and feeling the unbearable weight of the straightjacket placed upon them by stakeholders, developers often fight back and work hard to impose a fully Agile approach, refusing to provide any planning details, let alone effort estimates, and essentially demanding a blank check from business stakeholders.

We believe there is a happier path.

For the past 20+ years, Six Feet Up has used a hybrid model that acknowledges that no one-size-fits-all approach works for every software development project. Instead, we use the predictive nature of Waterfall for project planning and the adaptability of Agile for execution.

The Pragmatic Hybrid Approach

At Six Feet Up, the typical hybrid project management journey we take our clients through involves some or all of the following steps:

Step 1: Understand and Define Success (Waterfall)

In the Waterfall approach to software development, the first crucial step is Requirement Gathering.

The development team partners with the client stakeholders to define the project’s pain points, goals, and KPIs. It’s like setting the GPS coordinates for a road trip—everyone needs to know the destination!

Next, the team writes down the envisioned User Journey, mapping out the main steps each type of user takes to achieve their goals across different channels and over time. It’s like creating a step-by-step roadmap, complete with all the twists and turns. Sometimes, the team also develops workflow diagrams to achieve buy-in.

It can very tempting to bypass this step when projects don’t seem UI-focused (like system upgrades or data pipeline optimization). Don’t cut corners: this phase ensures the Statement of Work (SOW) is aligned with the stakeholders’ objectives and can prevent scope creep later on.

Step 2: Decide What To Build (Waterfall)

In the Waterfall approach, the Solution Design phase is where we put on our construction hats and lay out the Game Plan for the software project.

The team refines user stories and has technical architecture discussions. If the solution is very UX-focused, the team may develop functional wireframes to visualize how end-users will interact with the application.

If the project involves some complex integrations or data flows, the team might create a System Context Diagram. This is a high-level visual that shows the various interconnected systems and components of the software solution. This could be followed by an ER Diagram, which maps out the structure and relationships between entities in the database—essentially the relationship status updates for your data.

The team also develops an Architecture Diagram to illustrate how information flows between different components. Finally, they put together an Infrastructure Diagram detailing the hardware, software, network resources, and services needed to support and manage the production environment. It's like drawing up the blueprints for your dream home.

This comprehensive design phase helps align everyone's expectations and makes early changes easy, saving time and money later. After all, it's better to fix a blueprint than to rebuild the whole house.

Above are examples of a System Context Diagram (left) and an Infrastructure Diagram (right).

Step 3: Decide How Much It Will Cost/Take to Build (Waterfall)

In this phase, the engineering team creates a Complexity Scorecard™, a spreadsheet that highlights the complexity of each work unit by estimating the difficulty, uncertainty, and effort needed to complete each functionality. 

Next, the team develops a customizable budget window based on the proposed SOW. This step gives project stakeholders the flexibility to adjust the scope according to their constraints and urgency, ensuring the project stays within budget while still hitting all the right notes.

Finally, the team derives a reasonable timeline from the Scorecard. This timeline, grounded in the various complexities and efforts estimated, provides a realistic general schedule for project completion. 

Step 4: Plan the Work (Agile)

Once the project has been formally approved, the development team begins each round of work (or “sprint”) by refining and prioritizing the product backlog, sorting through the to-do list to identify the most important tasks. With the priorities set, they agree on a sprint goal, a clear list of user stories to deliver by the end of the work period.

Tasks are then assigned to individual team members based on their skills and availability, ensuring that everyone has a role that plays to their strengths. This way, the team is all set to tackle the sprint with a clear plan and a sense of purpose.

Step 5: Build Bit by Bit and Demo by Demo (Agile)

The development journey kicks off with the team developing and testing features in a highly collaborative fashion. 

Daily standups keep the momentum going, allowing the team to assess progress and tackle issues together—kind of like a quick morning huddle before a big game.

Weekly Pulse Meetings™ with the client provide an opportunity to share progress, demo the solution, and discuss any hiccups, ensuring everyone stays in the loop and on the same page. This is also where trade-offs are negotiated to fit in new requirements without extending the budget.

At the end of each sprint, the team conducts sprint retrospectives, reflecting on what went well and what could be improved.

After reaching 30% and 60% of the Statement of Work, the team holds Pit Stop™ meetings to check in on the overall progress and sentiment, and make any necessary adjustments. These meetings are like quick pit stops in a race to ensure the car (or project) is running smoothly.

Finally, once the project is complete, the team hosts a general Project Retrospective to identify lessons learned. This is the time to celebrate successes, learn from challenges, and prepare for the next exciting adventure.

A More Tailored, Responsive Service

Many software development firms adhere strictly to either Waterfall or Agile methodologies. While each has its perks, they also come with their own set of limitations.

In the Waterfall approach, if a new feature is requested after the design phase or if unforeseen technical challenges arise during implementation, the team must go back to earlier phases to accommodate these changes. This can cause delays and increased costs.

On the other hand, Agile can sometimes lead to scope creep and side quests if not carefully managed. The lack of a fixed timeline and budget can also be a concern for clients, making it feel like a never-ending road trip with no set destination.

Hybrid project management steps in to save the day by offering a structured yet flexible framework. For our clients, this means a more tailored, responsive service that can adapt to their changing needs. It’s like having the best of both worlds: the reliability of a set plan with the agility to make quick detours when necessary.

Are you curious to see how this approach could bring improved predictability and velocity to your software development process? Let’s talk.

How can we assist you in reaching your objectives?
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.