How we moved fast without leaving a trail of tech debt

One of the most critical areas of Product Engineering that we have at Asana is First Experience (FX). The FX team’s mission to make users’ first seconds in Asana flawless. This team’s work is so crucial to our growth because the first few moments that someone uses Asana for the first time can make or break their propensity to continue using the product. With fewer than 10 members, the FX team knows how to have a big impact in a short amount of time.

Today, any new Asana user will have a guided, seamless experience to help them understand the…


Here’s where you messed up.

Your tech lead told you to build out a new API endpoint for an upcoming feature. It was supposed to be simple: just return a list of the current user’s email addresses.

You start with the usual boilerplate. You register the new endpoint. You associate it with a controller. You add an explanatory comment.

Then you discover that the query is impossible. The user’s email addresses all live on different database shards.

The footlights flip on. The curtain rises. This is your time to be a software superstar! …


Nightmare at 20,000 feet is one of the most iconic Twilight Zone episodes of all time. It tells the story of Bob Wilson, a salesman with a nervous condition. Bob peers out through the window of an airplane. He is moderately surprised to see a gremlin milling about on the wing.

Bob makes increasingly frantic attempts to show the gremlin to other passengers. It’s no use. When anyone else looks through the window, the gremlin disappears. To make matters worse, it deviously begins to dismantle the plane engine, putting everyone in mortal danger.

Sometimes, working as a software engineer feels…


Pomodoro extensions for software engineers

Software engineers often struggle to manage their time effectively.

In the late 14th century, the townspeople of Salisbury, England were summoned to their cathedral by a machine. It was a wonderful and strange device. It consisted of a collection of iron gears and wheels and bars, all arranged in a cube. It tugged endlessly on ropes hanging above. Its stone weights swung about imperceptibly in the cool air.

And once per day, as if haunted by a punctual ghost, it struck a bell.

It was a clock, and it had no face. It had no need for one. The people…


Techniques for collaboration

Asking for help can be hard, but it’s a great chance to practice collaborative problem-solving. Photo by Samuel Zeller.

You reboot your development server, but it happens again: err_node_unsafe. This wasn’t here yesterday. What changed?

It’s 9:48 in the morning and your coffee is already cold. Most of the other people on your team aren’t in the office yet. This is your fifth week at the company, your feature was supposed to be done two days ago.

You raise the height of your chair as if that would give you some sort of different perspective on what’s going on. You reboot again, and the stack trace slides into your terminal again: err_node_unsafe. You wipe your development database: err_node_unsafe.


Let’s reflect on all those times that JavaScript made your day really special.

1. When you used “==” and now you don’t know what equality is anymore

I tried comparing two Arrays and I think I might have created a time paradox.

2. When your code caused too many repaints in the browser

What do you mean the app is slow? It works fine on my 2017 MacBook Pro.

3. When you let your users down because you forgot to check for undefined

So many exceptions. So much remorse.

4. When your Node.js code was a giant pyramid of callbacks

You call this code asynchronous? It’s more like a-stink-ronous.

5. When you didn’t know what the value of “this” is

These closures are totally cramping my style.

6. When you needed to write CoffeeScript

This definitely tasted better in 2010.

7. When you had no idea what prototypes were

I’m just going to pretend that this is a normal class and carry on with my day, thanks.

8. When you found a global variable that someone snuck into the code

What…WHY IS…


Internal engineering documentation rarely meets expectations. A new perspective can help you get better results. Photo by Bryan Minear.

Documentation for engineers is a wonderful thing to have. As a new team member, I usually have a ton of questions. Many of those will need to be answered by a teammate — but whenever there’s a good doc for something, I breathe a sigh of relief.

But the docs run out pretty quickly. It turns out that writing and maintaining internal docs is pretty expensive, and harder than it looks. Here are some things to try the next time you’re in a position to document something.

1. Ask your teammates what to document

The best way to waste time writing docs is to write docs that…


Being stuck on an engineering project is frustrating. It’s also you’re biggest opportunity to grow. Photo by Edu Lauton.

Software Engineers focus a lot on optimizing their state of Flow. But I’m most curious about its opposite: The Ebb.

The Ebb is when you have a project to work on but you find yourself checking your email again. It’s when you’ll find any excuse to get pulled away from your desk, when coding is a chore. It’s when you don’t know how to move forward.

The Ebb has eaten up more of my time than any slow compiler or inefficient tool. How do you escape?

Learning is changing your hypothesis.

When you’ve reached a state of Ebb, it’s likely because you need to learn…


One of my favorite hobbies is hacking. I mean that in a “build something for fun” sense, not a “compromising other people’s systems” sense.

I’m always on the lookout for platforms that make for fun weekend projects. These are some of my favorites.

1. Make art in Java with easy tweaking

Art by Sasj, written in Processing

Processing has one of the best-designed APIs I’ve worked with. The reference fits in one page. They’ve almost completely eliminated boilerplate. Most of what you need is already imported. It’s pure bliss.

Its most jaw-dropping feature is Tweak Mode. I can’t believe they made adjusting number literals this fun and easy. …


Let’s say you really miss 2010 and you want to listen to some old-timey chillwave music. Try searching for “chillwave” on Spotify and get ready for a life-hack:

One of the playlist results is called “The Pulse of Chillwave”. It was created by Particle Detector, a very special Spotify user.

Particle Detector is special because it’s not a person, it’s an algorithm.

Particle detector automatically generates these playlists based on what seems like some pretty effective analysis of the genre. They tend to contain a good mix of familiar and new tracks from that genre.

Pulse Playlists are updated constantly

If you’re like me…

Greg Sabo

Engineering manager at @asana. Technology, music, and culture fascinate me.

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