The 3-Legged Stool and a Complex Project – An Analogy

There is a beauty to a job well done, and satisfaction in getting it right – especially when we talk about complex projects that call for proper use of logic, design, and analysis.

It’s fantastic to see how the right efforts in all stages of a project can lead to a well-orchestrated result and a product the team can be proud of.

The Features of a Complex Project

A project can be complex for a variety of reasons. Here are a few:

  • It has several user roles/actors, each with different personas
  • It uses multiple disparate systems that must talk to each other via the application
  • It must perform complicated algorithmic operations
  • It has several cause-and-effect scenarios
  • It requires a first-of-its-kind technical implementation based on R&D and trial runs
  • It must handle historical as well as real-time data in parallel to process critical outputs that can change with every minute.

The 3-Legged Stool Approach To a Complex Project

However, project complexity is a challenge that can be conquered – it’s not insurmountable.

With the right skills, intensity of effort, and involvement by a team, it’s possible to break down the implementation of a complex project into elegant, “doable” chunks that eventually lead to the successful completion of the project as a whole.

Just like how a 3-legged stool won’t stand if one leg is broken, a complex project won’t be truly successful unless it includes these three critical areas:

1. Design
2. Development
3. Testing

Each must contribute in equal measure in terms of skills, effort, and involvement. And, all three must equally shoulder the complexity of a project. No one department can “offload” the complexity to another, expecting it to digest and hand over a “simple” to-do for them.

1. Design

There are three components in the Design Phase:

  1. Business /Requirements Analysis
  2. UI/UX Design
  3. Business/Requirements Analysis:

Business/Requirements Analysis:

It’s the responsibility of the Business Analyst to do a solid job analyzing the requirements, embracing the complexity, and putting it into understandable terms for the team to consume.

Mind maps, state diagrams, charts, and other visual aids should be used when understanding the requirements.

UI/UX Design:

The UI/UX Team must ensure that no matter how complex the logic or processing, behind-the-scenes, the end-user must be presented with a simple and intuitive interface.

Complexity must never touch the end-user. And it’s not easy to come up with a simple design that conceals complexity. It’s quite an art.

To achieve this, the Design Team must understand the extent of the app’s capabilities and the nature of the target audience. Superficial knowledge of the application leads to poor design.

Technical Design:

The technical leads then have the responsibility of architecting the solution. They must become the masters of the requirements, digesting them in-and-out.

It’s only when they establish command over the requirements that they can provide for the same in their technical design. A good technical design team is one that knows how to accomplish every requirement in the most resource-optimized way. And in doing so, it paves the way for well-planned development.

2. Development

Once the design stage outputs are ready, the Development Team must consume them and be on par with the Design Team in terms of understanding. They must have a command over the requirements.

Since coding is all about building functionality at low and high levels, the team lead must plan for development so every member knows not only how their individual modules will be accomplished but how it all comes together to frame the bigger picture of the application working as a whole.

It’s natural to get lost in the details and lose the bigger picture. But regular unit testing and integration testing with modules other than their own can ensure developers are geared towards building an application that works seamlessly.

Regular code reviews by peers and the lead also go a long way towards this. And the lead must determine if development is evolving according to plan in the technical design phase.

3. Testing

The testing or Quality Assurance (QA) Team is the 3rd leg of the stool. It’s critical to ensure that the development output meets what was conceptualized in the design phase.

The QA Team must get a grip on the requirements to the extent that it can go beyond just testing the given requirements and come up with various test scenarios.

The Test Cases Document they prepare must be a valuable tool to make the application robust and capable of handling users’ data and scenarios that will drive the business goals of the project.

An intelligent QA Team would be one that brings up as many real-world user scenarios as possible for the Design and Development Teams to tackle and address.

In Conclusion

The fact of the matter is that it’s not about something being too complex to do, but how you do it that makes all the difference.

If every department in the project shoulders the complexity and contributes to conquering it with the right combination of skills and effort, the entire project can be lifted to great heights.

Topics