From compiler issues to Rube Goldberg machines, engineering is sometimes not as scientific as you’d like to believe

Image by Ron van den Berg from Pixabay

Software is complex, and in many cases, complicated. Even simple systems can have a lot of moving parts that interact with each other in mysterious, unintended ways.

If you’re lucky, these interactions don’t cause serious issues.

If you’re unlucky, they do and you get a bunch of errors.

If you’re very unlucky, you don’t get any errors, letting the issue fester for years while it stealthily wreaks havoc on your data.

Here are just a few of some of the memorable bugs I’ve seen over my career.

“This report crashes my computer”

My project manager sent me an email saying that a user had reported…

via Pixabay

Startups develop rapidly by applying different kinds of shortcuts — learn what they are and know when to take them yourself.

Startups survive because of their agility and speed — their ability to pivot and move quickly. They measure their execution tempo in hours, days, and weeks. This allows them to maneuver around larger lumbering organizations that operate in tempos of months, quarters, and even years.

In environments like this, speed is king. Rapid time-to-market is the startup’s competitive advantage. Without it, you can’t get the tight feedback cycles that make iteration possible.

Achieving these speeds isn’t easy — it requires startup engineers to make a lot of sacrifices (both personal and technical) and take plenty of shortcuts. …

via Pixabay

Learn how to read your employment contract and how to protect yourself and avoid getting locked into a bad situation.

First off — I am not a lawyer, and this is not legal advice. I may be wrong in any of this. Use this for entertainment purposes only, and get an actual lawyer if you need one.

Over my career as a software engineer, I’ve signed a handful of employment contracts. I used to sign them without thinking, but as I grew in my professional career, I became more and more aware of the limitations (and benefits) contracts provided.

It led me to believe that all software engineers should be aware of what they are signing. In the US, provisions…

Image via Pixabay

Learn why popular programming mantras like YAGNI, DRY, and KISS can be as destructive as they are seductive.

Software development is full of mantras that are chanted by developers of all levels as prima facie evidence that justifies and proves the rationality of their decisions.

Who amongst us hasn’t heard people or told people to YAGNI, DRY, or KISS? They’re popular mantras because, when followed properly, they work to guide and nudge thinking towards more effective development and programming.

However, they have a dark side.

Because these terms are intentionally vague and broad, they can be misapplied or over-applied in many situations. These memes are then used as justification to continue applying the wrong approach to a problem.

Management is an entirely different skillset from being an individual contributor — avoid these costly first-mistakes.

I’ve been fortunate enough to see a lot of first-time managers take up the responsibility of managing their teams for the first time. Almost like clockwork, they generally fall into a series of common traps and early mistakes. The good ones learn from them — the bad ones repeat them.

It’s unfortunate but expected — management is an entirely different skillset than being a good individual contributor.

In many companies, a person enters their first management job without support or mentorship — a trial by fire. Startups often grow so rapidly that the initial contributors rise to management positions for…

Image from Pixabay

Learn a lightweight hiring process to help you quickly hire great engineers with as little overhead as possible

I was once the Director of Engineering at a startup that was always busy, busy, busy! We had people to help, processes to fix, and product to ship. Every day was a fire or pivot.

Strategically we had some key skills gaps that I needed to close, fast. I knew the only way to do it was to increase the size of our team, but given all of the other things going on, hiring kept falling by the wayside.

Engineering, architecture, management, company strategy, wouldn’t get done if I focused too much time on hiring, and yet hiring was critical…

Image from Pixabay

Understand how startups evolve, why managers are needed, and how to figure out if you need to hire an engineering manager.

Most tech leaders who have been in an early-stage startup have encountered this question: “Do I need an engineering manager?”

It’s a tough decision. Most early-stage startups aren’t flush with cash. Every dollar they spend on an “expensive” manager is one less dollar they can spend on a direct contributor to the codebase.

Furthermore, hiring the wrong manager can be incredibly damaging to the culture and organization. …

Wrangle the chaos of startup life through the implementation of lightweight, efficient processes.

Process is an afterthought for many tech startups and an intake process is often the last thing on leadership’s minds.

After all, they haven’t needed it so far. In the day-to-day chaos, things have happened and progress was made just fine without any formal process.

They may even have started thinking that an intake process isn’t even necessary and would just slow things down. Perhaps they’ve come to believe that their team has somehow found some special trick to make such process completely unnecessary.

They deceive themselves. It’s understandable how inexperienced engineering leads get lulled into this dangerously false sense…

Learn how I made a chatbot extensible by designing and building a plugin system to make it modular.

When I was younger, I had a top-of-the-line gaming computer. I spent thousands of hours playing games like Team Fortress 2, Minecraft, Guild Wars, and Age of Empires.

One of my favorite activities after I had thoroughly explored a game was the practice of modding. Modding allowed you to create or download packages of software that changed or added to how the software behaved — new levels, textures, or even game mechanics! The possibilities were limitless.

Now that I’m a software developer, I have a better understanding of how many of these programs supported such massive extensibility.

They used a…

Stop believing the blogs, podcasts, and articles in the ecosystem that talk about how some new technology or technique will improve everything. It probably won’t.

The tech community has mastered the art of giving terrible advice.

It is everywhere. Not a day goes by where I don’t run into a blog article espousing a new framework or library, encounter some massively upvoted Hacker News post on yet another data management technique for the current flavor-of-the-month javascript framework, or a meet-up talk about a brand new technique implemented at some company that saved them tons of time or money.

It seems as if the entire tech ecosystem is yelling in unified consensus about the latest and shiniest new thing.

Sometimes, it makes me feel like an…

Joseph Gefroh

Director of Engineering @ HealthSherpa. Opinions my own. Add me on LinkedIn!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store