Time
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”.)