Time is your biggest asset as a software engineer; here’s my favorite framing of it.

Given enough time, you will succeed at any problem.

There are all kinds of baffling problems in computer-land. But if you take a moment to remember to be the guy under the car and patiently tease apart issues and causes, you’ll get there. (Though it may take a long time! And you might prioritize differently. But it’s critical to know that you can.)

Time is unfortunately all you have; work hard.

Hours, days, weeks go by fast – it’s important not to waste time, either in the micro (scrolling Twitter) or macro (working on unimportant things). And, while I take work-life balance seriously, I’ve noticed that my times of big growth have been cycles of working hard and then recuperating, rather than running at a medium speed always.


A healthy balance of these two – reassurance and urgency – has served me well so far.

(I first encountered this framing in one of my favorite bits of Google-internal thought leadership, a doc called “How to be successful at Google”.)