Combating Inefficiency: How a Small Team Beat the “As Long As It Works” Mentality
Combating Inefficiency: How a Small Team Beat the “As Long As It Works” Mentality
Imagine spending $10 million on a state-of-the-art website, only to watch it crash in real-time during major events.
This was the crisis facing a global event planning company - a ticking digital time bomb threatening reputational fallout. A dynamic team of developers was brought on board to defuse this situation. As we explore their navigation through this digital maze, we’ll highlight the hidden perils of the ‘as long as it works’ mentality, the underestimated value of strong communication in large-scale projects and show how streamlining workflows can transform a disaster into a triumph.
Project Backstory
The project in question was a website for an event planning company known to be among the largest in the world. As a company that organizes thousands of events, it needed a website that can handle customers’ needs effectively. The company has hired a consulting firm to build the website and it was built using Java and Adobe Experience Manager, a content management system that was supposed to be the best of the breed. The company didn’t hold back on its expenses, spending $10 million to build and manage the website. For such a large amount of investment, the returns were disastrous. The website crashed every time the company held a major event, causing great distress. It’s here that the team of developers intervened to help the company.
Adobe Experience Manager (AEM) is a web content management system that enables users to create, manage, and deliver digital content through various channels. Known to be expensive to implement, it offers a complete set of tools for developing and managing websites, mobile apps, and other digital experiences.
Tackling the Problems
The first problem the team encountered was running the project locally. The project was a hot mess from the start. It took them 2 to 3 days to figure out how to run the program on a local machine. Once they managed to do that, the second challenge appeared when making iterations to the projects:
The company lacked a software team and had to outsource almost all software-related work to a consulting firm.
Therefore, the firm had to approve any changes made to the project.
The approval process took 24 to 48 hours, impacting the project’s timeline
Facing such circumstances, the team made a technical decision regarding the deployment of code in Adobe Experience Manager (AEM). In AEM deployment, it’s recommended to package the project into a single Java Archive (.jar) file and upload it and use the built-in IDE to edit the source files. In this project, however, following best practices were causing the project to crash. So, the team wrote all the logic in Java server pages to allow for faster iteration on the site. They put in extra effort to create a customized workflow that allows for real-time edits and testing, while also ensuring the code can be exported and packaged correctly.
This workflow allowed them to deliver the project within the specified time. The clients were further amazed when they learned that they don’t have to wait 24 hours to implement small changes on their site, which was what they were used to. Ditching the existing workflow gave the team the freedom to apply iterations quickly. However, this was a problem for the consultancy firm running the website. The firm has no CI/CD, integration and deployment were made in an improvised manner, and they used a different system for version control. The team’s practices, on the other hand, were completely different. And so, the team had to go through hours-long phone calls with the firm in which they had to explain every change they made in every line of code, which was a draining task. Eventually, the company learned that the firm was a liability and let them go.
Behind the Inefficiency
One of the main pain points of the website was that it lacked a standardized building method. Components with the same visual output were coded differently. So whenever a change was implemented in a component, it had to be implemented 5 or 6 times across the different code paths used. To solve this, the team updated the website’s UI feature by feature over two years instead of rewriting the entire codebase at once.
The website’s data storage system was no help either.. Most CMSs use a Java Content Repository (JCR), which organizes data as a file system but still works as a database. The user can then search for a specific file or file type within the database and access it. In this project, however, the data was laid out in an unorganized way, which made it harder for the developers to access it. As a result, the team created a data finder that can search the database for a specific piece of information based on its probabilistic location.
Conway’s Law
Another factor behind the inefficiency can be explained by Conway’s law. The law states that organizations design systems that mirror their own communication structure. If a company has poor communication, its system will eventually have an inefficient architecture. When teams within the company solve problems in isolation, it’ll lead to contradictions in the grand scheme of things. In the consulting firm that managed the website, each team only focused on their own service without considering the bigger picture (as long as it works).
This led to an unsynchronized development that harmed the end product. This problem is noticeable in many large companies. For example, in a company that has numerous developer teams, a simple component like a blue button can be built differently due to a lack of communication. Maintaining such projects is almost impossible and very costly.
Addressing the root cause, not just the symptoms.
In such cases, the solution is organizational change. Organizations must develop an efficient way to communicate to avoid such inconsistencies. Documenting and standardizing a design system bridges the communication gaps between teams and will lead to a more consistent product.
Implementing an organizational change also has its challenges. Team members might be too complacent with how things work and might be hostile to change. Managers also might want their team to be inefficient so that it can rely on them. So, they may refrain from implementing changes that’ll make their team more efficient so that they can maintain relevance.
By breaking away from the “as long as it works” mentality, this small team of developers successfully tackled the inefficiencies and mismanagement in the website project for the event planning company. This story serves as a reminder that following efficient workflows can:
Increase the efficiency and quality of the product (Following best practices in software projects reduces defects by 2-3 times, according to a study by NIST)
Reduce cost and improve revenue
Increase the productivity of the team
Establish better communication within teams
It is also important to note that organizational structure can make or break a product. Good communication and management ensure a quality product that serves the needs of customers without any major errors.