After a year of persistence, you finally host the grand opening to your water park. The park has a wave pool, a water slide, even a gentle lazy river. The park kills it in its debut.
Word spreads and the park gets more crowded by the week. No big deal. With the extra ticket sales, you can comfortably hire contractors to start work on a new water slide.
You do your best to hire a set of trustworthy and knowledgable contractors. Despite providing them with a blueprint and a clear set of tools, you start noticing that the new slide is being constructed in ways you didn’t expect. You realize this is an inevitability.
On a busy July 4th weekend, a small boy hurts his knee going down a slide. After examining the situation, your team notices that one section of the slide is built too steeply. You instruct your workers to quickly make safety adjustments while you handle the upset parents.
As the lawsuit settles down, you check in with the fix. You realize that two key contractors have been bickering. One contractor insists the slide be built steeply for maximum fun. Another contractor insists it’s a careless rookie move. You do your best to work things out, but the relationship sours and your first contractor sends you a resignation letter. To make a bad situation worse, there’s zero information left behind on how the slide was built.
Despite the incident, the water park continues to do well. One day, you receive an email from a wealthy family looking to plan a 6-month stay at the park. They’re offering you a lot of money, but it comes with a special request. The family loves amusement parks and wants you to build three new rollercoasters before they arrive. You have no idea how to build rollercoasters. Nevertheless, opportunity is opportunity and you sign the contract. You quickly hire a theme park designer and a team of rollercoaster contractors.
You notice that the water slide safety issue is still unresolved. Your contractor tells you that they attempted a few repairs. Strangely however, every time an issue is repaired, a new issue pops up. Your contractor recommends that a brand new slide be built. It will be newer, better, safer, and more fun.
As work continues, your water park contractors become increasingly irritated with the ongoing rollercoaster construction. The amusement park contractors don’t know anything about water parks. You try to get both groups to talk more, but the process is excruciating. One day, the last water park contractor leaves.
Suddenly, your simple park has turned into a stressful amalgamation of amusement. The roller coaster deadline is slipping, kids continue to go on water rides that barely work, and your shiny new slide is half-done, collecting dust.
Any analogy to “architecture” or “construction” misses the mark in capturing the essence of software engineering. The key characteristic of successful software is pervasive chaos. Software engineering is managing this chaos.