There is a beauty to a job well done – and a satisfaction in getting it right. And especially when we talk of complex projects that call for a good use of logic, design and analysis; it’s amazing how proper efforts in all stages of the project can lead to a well-orchestrated end result and a product the team can be proud of.
A project could be complex for varied reasons. Here are a few:
- It has several user roles/actors, each having very different personas
- It has multiple disparate systems that need to talk to each other via the application
- It needs to perform complicated algorithmic operations
- It has several cause-and-effect scenarios It needs a first-of-its-kind technical implementation based on R&D and trial runs
- It needs to handle historical as well as real-time data in parallel to process critical outputs that can change with every minute.
But no matter what the reason may be, complexity is a challenge that can be conquered, it’s not something insurmountable. With the right skills and right intensity of effort and involvement by the team, it is possible to break down the implementation of a complex project into elegant ‘doable’ chunks that eventually lead to the completion of the project as a whole.
Just like how a 3-legged stool will not stand even if one of the legs is broken, a complex project will not be truly successful unless it has the 3 critical areas – Design, Development, Testing – each contributing in equal measure in terms of skills, effort and involvement. All the 3 departments are required to equally shoulder the complexity of a project and no one department can just ‘offload’ the complexity to the other expecting only the latter to digest it all and hand over a ‘simple’ remainder of a to-do for them.
This includes Business /Requirements Analysis, UI/UX design and Technical Design.
It is the responsibility of the Business Analyst to do a solid job of analyzing the requirements, embracing the complexity and putting it into understandable terms for the team to consume. Mind maps, state diagrams, charts and whatever other visual aid that helps in understanding the requirements, should be used.
Coming to the user interface, the UI/UX team must ensure that no matter how complex the logic or processing is, behind-the-scenes, the end user must be presented with a simple and intuitive interface. Complexity must never touch the end user. And it is not easy to come up a simple design that conceals complexity. It’s quite an art! And to achieve this, the design team really needs to understand the extent of the app’s capabilities and the nature of the target audience. Superficial knowledge of the application just leads to a lousy design.
The technical leads then have the responsibility of architecting the solution. They need to become the master of the requirements digesting them in-and-out. It’s only when they have a command over the requirements that they will be able to provide for the same in their technical design. A good technical design is one that knows how to accomplish every requirement in the most resource-optimized way possible. And in doing that, it paves the way for well-planned 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 and having a command over the requirements. Since coding is all about building functionality at low and high level, the team lead must plan for development in a way that 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 is natural to get lost in 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 in helping towards this. And it is essential that the lead keeps an eye on whether the development is evolving on the lines of what was planned for in the technical design phase.
The testing or Quality Assurance (QA) team is the 3rd leg of the stool because it is so critical to ensuring that the development output meets what was conceptualized in the Design phase. It is absolutely imperative that the QA team gets a grip on the requirements to an extent that it can go beyond just testing the given requirements and come up with various test scenarios. The Test Cases document that they prepare must be a valuable tool to make the application robust and capable of handling users, data and scenarios that help 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.
So in conclusion, the fact of the matter is that it’s not about something being too complex to do. It is 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 whole project can be lifted to great heights!
Learn the step by step process of building your next mobile app.Download the eBook to know more!