If you work in tech you would have heard developers complaining about horrific code.
Short deadlines and changing requirements create debt that will eventually have to be paid
I have been there, it’s painful.
Most developers that I have met are smart. So where are all the developers setting fire to things and shipping bad code? More importantly why are companies letting them do it?
Communicating requirements is hard.
It would be nice if requirements were correct the first time … but hey, we have deadlines to hit.
“Done is better than perfect” … SHIP IT!
What does this all have to do with car — boats?
I’m glad you asked.
Understanding how we end up making compromises is important. Building a software product is a lot like taking a trip between point A and B without really knowing what’s in the middle.
Ok, so Jane wants me to travel from point A to point B, she suggests that I take Brian with me since he is an awesome mechanic and it’s mission critical that I get there asap … cool there are lots of options. We could buy a car, charter private jet, fly a helicopter. Jets and helicopters are expensive so obviously a car is the way to go, right? Brian suggests a rental but it makes more sense to own it, so we don’t have anyone dictating where or how we drive. We can go to a dealership right now, get a car and hit the road today.
Jane says go for it. So we go buy a car, put the location in the GPS and start driving toward point B.
Progress is awesome, everyone is happy, we are killing it! I don’t know why Brian wanted to “rent” …. travel is easy!
Then all of a sudden we hit a massive body of water. This is a problem …. since we brought the car … that was a lot of money. Really what we need right now is a boat, can you imagine going back to Jane after an hour of driving to explain that actually we need to buy a boat now? No Chance! This is ok though, there is an engine in the car …. and a cabin …. its practically a boat now, we just need to water proof it, add a rudder. Brian can work wonders with cars.
So we call up Jane and explain how our awesome car is about to be so much more amazing with a few tweaks and a little more cash it’s going to be both a car and a boat. Did I mention it’s way cheaper than buying a boat? Think of all the money we saved by not starting over.
It’s a little bit of a delay and requires a bit of tinkering but Brian is a rockstar ninja pirate unicorn of a mechanic. Brian didn’t sleep for a couple of days, but we hardly lost any time, and now we can continue our journey across the water.
Once we hit land we start driving again, boat-car for the win!! Until we hit an epic mountain. No worries, Brian’s middle name is Macgyver anyway, the GPS says we are super close, just bubble gum some wings on there, jerry-rig the engine, slap a propeller on it and our boat — car will be a boat — car — plane!
Once more we get back on the phone with Jane and explain how close we are. This last step might take a little longer since flying is hard, it’s not every day someone makes a car — boat fly, this is some next level Wright Brothers stuff right here. Once we are on the other side of this mountain though …. we are golden.
So we get back into the car — boat — plane, say a little prayer for all these changes play nice together. As we start to get airborne we see our destination rapidly approaching … on top of the mountain.
After a few cycles Brian quits and you have to explain to Jane why
“The last 10% of the code accounts for the other 90% of the the development time” — Tom Cargill, Bell Labs
What’s the answer you ask? Elegant code is nice, simple code is better.
If you enjoyed reading this post, click the clap button and share it with a friend, Brian shared it with Jane … she made him a VP, be like Brian.
Some other things I have written:
If you would like to get notified when I publish a new article, please join my mailing list.