Building Simple, Intelligent Systems

A few weeks ago, I was invited to speak at a local technology conference called DevOpsDays Charlotte. Originally, I planned to talk about Lambda workflows, tools like Apex and how to build these simple systems, but I’ll be honest. I think it’s more important to address the bigger picture.

There’s a disturbing trend that’s spreading throughout the engineering community, and I’ll admit it –  I’m guilty too. We like to be cool. We like to be clever. We like to build magical, elaborate tools that are easily capable of solving all of the world’s problems, all at the same time.

Stop it.

Brilliant engineer, or complete idiot?

Make it simple:

The best engineer on your team isn’t the one who writes the longest code or even the one who resolves the most issues. It’s the one who solves the most important problems, most efficiently.

“There is nothing so useless as doing efficiently that which should not be done at all.” – Peter Drucker

Understand the context

Before you get excited about building something awesome, make sure you have all the information you need. Who are the stakeholders? What are the use-cases? Are you about to build something awesome for no apparent reason? Sorry, but that takes away from the cool factor and is also a giant waste of time.

Solve – don’t create – problems

A simple system is one that’s easy to operate for the rest of your team. It’s easy to reason about, it’s easy to change, it’s easy to debug, and it’s easy to replace.

Remove all unnecessary bullsh*t

Enough said.

For Pete’s sake, communicate

Don’t just assume other developers don’t know what they’re doing or they don’t understand the system. It’s possible that what you’ve created is an overcomplicated mess, like this federated kubernets cluster:

“All I wanted to do was upload a file.”

Make it smart:

Writing simpler code doesn’t mean you’re not still solving complicated problems. Here are three guidelines for writing intelligent code – without getting carried away:

Be aware of your environment

Tune your memory, your timeouts and everything that enables you to be able to reason about the system – and everything will start connecting.

Be informed

This goes back to my plea to communicate (^up there^). Before you start, make sure you’ve got all the information you need from your operations team, and work together to figure out the best, most efficient solution.

Be resourceful

As you teach people about how to connect pieces like Kinesis and IoT, you can start to build some really cool, decoupled systems – without building a giant mountain of magical, useless code.

Back to top

About the Author:

Garrett Johnson | Principal Engineer

Garrett is a developer at Red Ventures. While he enjoys every aspect of development (from front end development to architecting and tweaking performance out of server side applications) his true passion lies in all things JavaScript.

Related Articles

10 Ways We’re Getting Through COVID-19 Read More

10 Ways We’re Getting Through COVID-19

COVID-19 has caused a lot of changes, but we're working together to adapt, connect, and learn as we go. - 4 minute read

What Does It Mean to “Lift As We Climb”? | 10 Things We Learned at the Uplift Panel Read More

What Does It Mean to “Lift As We Climb”? | 10 Things We Learned at the Uplift Panel

What does it mean to "lift as we climb," and how can we make ourselves easier to boost? Find out here! - 12 minute read

Saying What You Mean: The Importance of Inclusive Language Read More

Saying What You Mean: The Importance of Inclusive Language

There's a lot of value in slowing down before you speak. - 4 minute read

We’re Hiring!

Feeling inspired?

Red Ventures Careers