Sinking the Titanic

Imagine, for a moment, that you are Poseidon, god of the oceans. The RMS Titanic is sailing in your waters, and you don’t like that. You decide that you want to sink the Titanic and make an example of her for other sailors of the world, so you order your minions to construct a giant iceberg that will crack her hull and sink her.

Your minions set to work, and you don’t watch them very closely. “They know what they’re doing,” you think to yourself. As the time nears when the Titanic will pass the spot where you’ve constructed the iceberg, you decide to review your minions’ work, and you are disappointed at what you see: a small spike sticking up out of the water. Furious, you order them to make it bigger, grander, truly fitting of the punishment you wish to bestow upon the ship. The minions, of course, comply with your wishes and construct an iceberg that towers above the waves and extends many leagues deep beneath them; an imposing presence indeed. You wait for the Titanic to come and, to your dismay, the Titanic navigates around your iceberg.

Unfortunately, you had neglected to think that, if the iceberg was large enough, the crew on the Titanic would notice it far in advance, identify it as a threat, and simply sail around it. Your minions, who really did know what they were doing in the first place, point out that the part of the iceberg that floats above the water must be small enough so that it doesn’t look like a threat.

Beaten, but not defeated, you decide to try again. This time, armed with the knowledge of how to trick the Titanic into sailing into your iceberg, you decide to keep a much closer eye on the progress of the iceberg. Your minions again set to work but, as you look down on the water from above, you do not even see an iceberg. You call your minions back and lecture them, demanding to see some results before the Titanic approaches. By the time you finish lecturing them, you can see the steam from the Titanic’s engines emerging over the horizon. You quickly describe to your minions exactly what the iceberg must look like to the crew on the ship so that they will not attempt to evade it. Bound to your will, the minions do as they are told, creating a small and innocuous looking iceberg, and not paying any attention to the part beneath the surface. The Titanic, not disturbed by the size of the iceberg, ploughs straight through, shattering the iceberg and continuing on its journey.

Once again, you fail in your objective. Your minions, as knowledgeable as ever, remind you that the hull of the ship is strong, and it will take an iceberg with a large strong base to crack it.

On your third attempt, you calmly and patiently describe in detail how the iceberg must be constructed: small on the surface so that the Titanic will not sail around it, but large and strong underneath the surface so that it will be able to crack the ship’s hull. You minions, who are probably getting tired of building icebergs at this point, set to work once again. As you watch nervously from the surface, you take their word that they are working hard on the iceberg’s base, the part that you can’t see. As the Titanic approaches, the iceberg’s structure breaches the surface. Confident that the base is strong enough to crack the ship’s hull, you watch as your minions put the finishing touches on the visible portions of the iceberg.

You watch anxiously as the Titanic approaches, and breathe a sigh of relief as the hull splits open. Leonardo DiCaprio and Kate Winslet get to have their big scene, and everyone is happy - in a manner of speaking.

The moral of the story is that you, as Poseidon, must understand the requirements that the visible part of the iceberg must meet to attract the ship, ensure that the infrastructure of the iceberg is strong enough to crack the hull, and trust your workers to build the iceberg correctly.

The moral of the story, as far as software is concerned, is that in order to design good software you must fully understand the requirements of your project in order to meet the needs of the stakeholders, ensure that the infrastructure under the surface of the application is strong enough to get the job done, and trust your team to build it right.

About Adam Platt

Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.

He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.

About Adam Platt

Adam Platt is a technologist with more than a decade of experience across the full stack. His passion for technology and penchant for rendering complex technical ideas into simple terms have made him an in-demand speaker. His resume includes BriForum, the PowerShell Summit, teaching engagements and more.

He is one of the 10 types of people who understand binary and he can solve a Rubik’s Cube.