We all know the story of Icarus:
Imprisoned by the King on an island south of the Aegean Sea, his father Daedalus devised an escape plan. He planned to gather feathers from the birds that flew near their tower, secure them with thread, and fasten them with wax. He crafted two pairs of wings, one for himself and one for his son.
The Imposter:
Yet, Daedalus questioned his own design. He wallowed in self doubt for months. Would the wings hold? Was he leading himself and Icarus into disaster? Their escape plans were delayed due to the weight of uncertainty.
Before they took flight, Daedalus gave Icarus strict instructions: fly neither too low, where the sea’s dampness could clog the wings, nor too high, where the sun’s heat could melt the wax.
The Hubris:
Icarus had other ideas. As he took his first steps into the air, he felt a sense of freedom. With each flap of the wings, he soared faster. In his excitement, he ignored Daedalus’ only warning and flew higher. The wax that bound the feathers began to melt. One feather came undone, followed by another. Soon, he was in free fall, and Daedalus watched in horror as his own child plummeted from the sky. All it took was a moment of hubris to bring about tragedy.
.
.
.
Cut to 3,000 years later. A software engineer working in the heart of Silicon Valley experiences similar emotional swings every week.
One day, you can’t figure out why your Spring Boot application won’t start. You’ve checked the code four times, and a teammate joins you in reviewing it. Still, no luck. Four hours later, after nearly emailing your bootcamp demanding a full refund and an unconditional apology, you find it: an em dash sneaked into your configuration file name where a regular dash should be.
application–dev.properties
looks identical to
application—dev.properties
At least on the screen it does, but Spring doesn’t recognize the file name with the em dash character. Your caffeine addled brain didn’t catch the Unicode difference between (U+2014) and U+002D either.
You hate yourself. You feel like the worst software engineer since the developer who hard coded their password into the source code.
The next day morning, you log in. The walk of shame to the daily stand up, where you tell everyone you spent the entire day fixing your own damn configuration file, beats down your confidence.
Moments later: The dreaded Microsoft Teams chime rings across the floor…
Users cannot log in across the country. The manager and product owner have spun up a call. Teammates join in, and so do you. No one can figure out what’s going on while looking at the dashboard.
Different theories are thrown around. Some suggest restarting the containers. It doesn’t help.
The senior developer is going through recent commits. The junior developer repeats whatever the managers say, just to be heard on the call.
You notice something.
The number of calls coming into your service and the number of errors logged don’t line up. Suddenly, you see it. A call to a vendor’s service times out, and the code doesn’t account for it. The application attempts to carry on like nothing happened when it should have errored out and notified the team.
You have a fix! The vendor has been informed of the timeout. Their containers are restarted. Users can login again.
Cue Borat’s great success gif!
Yesterday, you couldn’t look yourself in the eye, and today you’re the manager’s favorite (at least for today; we’ll see how tomorrow goes). This is the see saw of emotions of the engineering world.
How do we deal with this?
The key is to embrace this dichotomy: not as a binary choice but as a dynamic range of experiences. Every line of code, every bug, and every fix contributes to a broader journey of learning and growth. Instead of viewing yourself as an imposter or a superior developer, try to see yourself as a perpetual learner. Daedalus acknowledged his limitations while continually striving to innovate. The skies may be unpredictable, but with resilience and awareness, he knew he could soar with purpose.
In the world of Icarus, be a Daedalus.