Complexity can be a difficult beast to tame in large organizations. If you’ve ever done big IT projects, you’ll know that nothing is as straightforward as it sounds on paper.
From our experience working on large scale projects, you must make allowance for how complex a problem can grow into, for many reasons, especially since large companies tend to have a lot of land mines hidden in their current system and processes.
It’s like the story of the boiling frog. Frogs have an ability to adapt their body temperature to their natural surroundings. If you put a frog in a pot of water and start heating the pot, the amphibian is initially comfortable being underwater. As the water warms up, the frog starts to feel uneasy but can still cope by going above water for oxygen. But then the water rapidly heats up and after a certain point comes to a boil, thereby killing the frog which can no longer tolerate the intense heat.
Software complexity is like the pot of water that’s slowly coming to a boil. It slowly creeps in, and you hardly notice it at first until it quickly becomes a showstopper or worse, life and death issue for your customers. Big organizations are too large to feel the initial turbulence even though there are sporadic messages from internal teams that flag the growing issue.
All projects start with good intentions and a reasonable plan. But it quickly loses clarity and structure once small setbacks grow into complex problems during implementation. There are several reasons for this in large companies.
- Current system is running on older product versions, some archaic and no longer supported
- Organization bureaucracy where the hierarchy carries a lot of dead weight
- Outdated rules and obsolete procedures which create bigger issues
- Lack of system scalability, where solutions need to be drafted from scratch
- Staff members’ reluctance to adapt to new system
- Large user or customer base which makes new projects rollout a bane
If you are planning any project in a big organization, here are a few things to bear in mind to combat complex problems from rearing their ugly heads.
1. Managing expectations
Most marketing managers expect a great design, sassy content and slick interface rolled in one software that can do everything within a few clicks. In reality, something must give when you have many stakeholders. Define what is great to you and try to get everyone on the same page. Different teams have different expectations on what the perfect solution is.
For example, what do you define as a better web form for customers? Is it a shorter page with fewer things to fill in? Is it a better font, layout and visual elements? Or is it better functionalities to store the user’s data? The UI team may want the form to be shorter while the analytics team may want more data from the user. In the end, you have a half-done solution which creates more problems for the business.
According to the Project Management Body of Knowledge (PMBOK Guide), a dependency is a logical relationship where two activities or milestones rely on each other. Dependencies occur when you have older code, database or software version that interacts with the new system or are the prerequisites to build the new system.
Often, older systems will cause compatibility issues and present roadblocks in your project. Your project will bloat with complexities, requiring more hours and resources to complete.
3. New Scope and Features
Last minute additions that were not originally planned for can be a big showstopper. Sometimes, it must be added in to satisfy the initial requirements. Otherwise, the new solution becomes useless or ineffective.
For example, redesigning just the frontend of a website may require some backend changes, which was not part of the initial scope. This is when small issues can rapidly turn into complex problems if not tackled head on. Make sure you have a proper feedback loop in the project so any obstacle can quickly be escalated and resolved.
4. Corner Cases
A corner case is an issue or situation that occurs at an extreme operating parameter, whether at maximum or minimum threshold. Your responsive website may not load properly on certain Chromebook models when the user has disabled Java Script in their browser, which in turn crashes your website. These are the extreme use cases, which is not typical user behavior.
While it is impossible to account for all corner cases, it is important to be proactive when planning and designing your new solution.
5. Market Disruptors
Planning for the future is hard. There are external factors that can negatively affect your software and user experience. For example, you may be using Skype for all your internal communication. But Microsoft now faces stiff competition from Amazon with the entry of Chime, a WebRTC based communication channel. Or think of market disruptors such as the iPods killing the Walkman or Microsoft Word making Xerox almost obsolete. These are all external factors which you may not foresee when designing your solution.
In conclusion, running large scale projects can be tedious and difficult. You must always account for software complexity, especially with a large user base or in large organizations where you’re using older software and/or outdated processes.
Be aware of how quickly a small issue can set a chain reaction potentially damaging your project and your peace of mind. The good news is that not all project need to be so damn terrifying, especially when you have experienced team like us with you. (PS. A little bit of self-promotion, worth a try! ;p) Keep the tips in mind and avoid the landmines. So long.