Skip to main content.

Inspired BlogBuilding 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.

About the Author:
Garrett Johnson | Principal Engineer
Garrett Johnson

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

Feeling Inspired?