As my team’s summer interns finished up their rotations this week, I had my usual end-of-internship “AMA” 1:1s. It’s something I enjoy doing, but I realized I was covering a lot of the same topics I’ve discussed with other previous interns and early-career engineers over the years.
So I thought it’d be useful to collect these recurring bits of advice into a single place, both for my own reference and for anyone else who might find them helpful.
Decisions and opportunities
-
There is a natural “explore vs. exploit” dynamic in career decisions. Early in your career, you’re well served by leaning more into the “explore” direction: do as many internships as you have time for, try living in different cities, try working on different teams, try working on product-focused projects, try working on infrastructure projects.
-
Surprisingly few career decisions are true one-way-doors. This generalizes outside your career as well.
-
That said, all decisions are path dependent. The two-way door you step back through won’t be the same one you left, in the same way that you can never step in the same river twice.
-
It’s helpful to gravitate towards where value accrues in an organization. This is often not intuitive.
-
Similarly, it’s helpful to gravitate towards where the smartest people are working. Cultivate a set of formal and informal mentors.
-
Similarly, it’s helpful to gravitate towards where there are obvious problems that are low-hanging fruit to solve. Environments where you are engineer-hour-constrained instead of product-alignment-constrained are much easier to progress quickly in.
-
It’s worth figuring out your tolerance for risk fairly early, since this has implications for many things: timing of job hops, personal finance posture, whether you prefer the (appearance of) safety of a large company or the risk associated with doing a startup.
-
I find I rarely regret my choice after choosing between two paths with reasonably similar “goodness”, even though these decisions are often the most agonizing. After all, if the options weren’t similar in “goodness”, it’d be an easy decision.
-
Making hard decisions doesn’t get easier, you just make more of them over time and become more comfortable with the discomfort. You also eventually build up your own personal heuristics for tough decisions.
-
Careers are marked in seasons. When you feel a season change coming, it can be tempting to hold out to avoid the discomfort of change. Sometimes you initiate the season change (e.g. you seek out an exciting opportunity) or sometimes the season change finds you (e.g. “oops, a few key people left and now your org is in chaos”). Either way, you’ll spend less energy preparing for and adapting to the new season than you will trying to preserve the old one.
-
When receiving advice from others, note that sometimes you need to reverse the direction of the advice.
-
When finding your first job or two, it’s easy to look at interviews as a way of “convincing the company to hire you”. However: the phrase “interviews are a two-way street” is a cliché for a reason. Interviews give you an important (though necessarily incomplete) window of what the company is working on and looking for, and you should try to maximize the amount of signal you get for yourself out of interviews. Prepare questions in advance, ask them, and write the answers down. This can help change your eventual decision to be more informed and less purely vibes-based.
Organizations, leadership, and culture
-
Truly great managers are hard to find. Value the good ones.
-
Truly healthy organizations are hard to find. Value the healthy ones.
-
It’s tempting to become “irreplaceable”. It’s far better to foster your replacements. (Both for your own sake and the people that grow to replace you)
-
The average tenure of an engineer at most big companies is no more than ~3 years. An implication of this is that you will see turnover on whatever team you join. Usually the sky is not falling even if a few folks leave around the same time. If you have the stomach for it, stepping into a departing senior engineer’s shoes is a great growth opportunity.
-
At a steady state, 80% of your time when being a good tech lead is being the rock that says “That seems reasonable”. About half of your value comes from (skillfully) being this rock, and the other half comes from recognizing when it’s necessary to push back, and in (skillfully) following through with doing so.
-
Many things are overrated. “Being in the room where the decisions are made” is, if anything, underrated.
-
Organizations are like people: They have personalities, they have insecurities, they have strengths and weaknesses and hopes and fears. Being in tune with organizational psychology is a great marker of a senior engineer. Influencing organizational psychology is a marker of staff+.
-
How teams and individuals say “goodbye” to people departing the company tells you a lot.
-
Promotions aren’t as much an indication of “job well done” as they are recognizing that you’re doing a qualitatively different job description as the last time you were re-leveled.
-
The “good feeling” of getting a promotion lasts much shorter than you’d think (for me, about a day or two). They’re still worth pursuing and achieving as career milestones. But they’re progress markers, not ends in themselves.
-
Kindness goes a long way. In 5 years, the people you remember will be the ones that helped you onboard, or bailed you out in a stressful oncall rotation. You’ll spend comparatively less time thinking of the people who were “merely” brilliant. (Thankfully, brilliance and kindness co-occur suspiciously often)
-
You are not the ultimate owner of your performance review. You can, and very much should, advocate for yourself and put a substantial amount of effort into writing the pieces that you control. However, it’s ultimately your manager’s job to advocate for you on your behalf. If you have a good manager, this is easy. If you don’t, you’ll need to do a lot of the narrative setting yourself. In either case, managers are invariably incredibly busy during perf season, so proactively making it easier for them to advocate for you helps you both out.
-
Most SWE career ladders value “cross team collaboration” for senior and above levels. As such, it’s helpful to develop relationships with people outside of your immediate team. This is true for multiple reasons: first, it’s a great way to get a larger sense of what the company is working on, and second, it gives you a natural set of people to act as champions for your work when you are in performance review season.
Execution and craftsmanship
-
Unlike all the code you wrote before you started your career, you can’t take most of the code you write professionally along with you (unless you’re doing professional open source work, which, if you do, cool!). This is a good thing, since you get to build things that outlast you.
-
When you’re new on a team, you automatically have a valuable perspective: a set of fresh eyes. Keep track of the papercuts and unintuitive things you run into – when onboarding, when learning about how your team’s systems work, and so on – and share them with your team. Many of these things will already be known by them, but people develop an indifference towards papercuts over time, and having a fresh set of eyes is a great way to surface (and potentially fix) them.
-
Early in your career, there’s a lot of value in being the person who lets nothing fall through the cracks. A few years into your career, it’s about choosing which cracks can be safely ignored.
-
Relatedly, there will always be work that never gets done. Even on the most relaxed teams, there will always be an ever-growing task backlog of P1 and P2 tasks. This is fine. It’s generally a waste of time to hunt down every little TODO on the long tail of your team’s backlog.
-
Relatedly, it’s sometimes worth declaring bankruptcy on your team’s backlog. Unless you’re a TL or manager you generally don’t get to make this decision, but even as an IC it’s worth keeping a pulse-check on how much backlog debt your team has at any given moment, and doing your part in managing this.
-
Having passionate users is a great way to get high quality feedback. Fixing a papercut or two of a power user can earn you a years-long source of feedback.
-
That being said, it’s worth remembering that the most passionate users are not representative of the majority of users, and that you will still need to actively solicit feedback.
-
Actually use the tools/products/systems/libraries/etc. you build. This is a necessary but insufficient condition for building something that is useful.
-
You should probably invest a bit in your physical workstation. A good keyboard, mouse, and monitor help both in feeling a sense of ownership over your workstation, and help with ergonomics.
-
You should probably invest a bit in your digital workstation. Yes, you should pick a nice color scheme for your IDE. But you should also invest in hyper-personalized configurations that make you faster at your job. Things like terminal aliases for jumping between PRs/branches, small scripts for common tasks, etc. These investments compound over time.
-
It’s worth learning a pure command-line text editor like vim or emacs. You don’t need to be an expert in it, but (for the foreseeable future) there will be times when you don’t have access to an IDE, like when SSHing into remote machines, and you’ll be glad to have a comfortable fallback.
Self-management & mindset
-
It’s rarely worth making a decision you see as ethically or morally compromising. Being able to live (easily! joyfully!) with your decisions is a gift worth giving to yourself. To make this slightly less Straussian: There is often money out there that is not worth taking. But you have to figure out where to draw your own line.
-
If you’re a natural “optimizer”, you should probably find a way to mindfully and purposefully switch to a “satisficing” mindset when it’s helpful.
-
It will sometimes feel like “Everyone Is Getting Hilariously Rich and You’re Not”. You’ll see former colleagues, classmates, and acquaintances win big in AI startups, crypto, or $CURRENT_THING. Bubbles and the “leading edge of the hype cycle” always create real winners alongside the noise, but the winners are fewer and more random than they appear. Reminding yourself this is FOMO will save you a lot of grief.
-
That “I don’t know what I’m doing” feeling early in your career is usually followed shortly after by “I’m starting to get my footing!” Believe it or not, you eventually start to crave this “beginner mindset”. The senior engineers who you see switching teams or leaving for another company are often going to feel that way again.
-
It’s worth cultivating an online presence, even as an extremely slow burn side project. Having a body of work online, especially writing you sink some good thought into, is portable across companies, contexts, and even career paths.
-
You are the ultimate owner of your career. The best managers and TLs enable you to move in the direction you want to go, but you are the one that has to set that direction.
-
You are the ultimate owner of your mental and physical health. You will need to learn your early warning signs for burnout and take steps to mitigate them. Take time off proactively rather than as a last resort.
Finances
-
For short term financial planning, you should mostly treat RSUs as worthless paper until they vest. For medium term financial planning, I find it helpful to do a Monte Carlo simulation of various scenarios I think my current company is headed toward. There’s some skill involved here, but it’s worth the effort to get a sense for how to value your RSUs. This used to be an afternoon of work, but thankfully with LLMs you can script something like this in a few minutes.
-
By default you should probably sell your RSUs as soon as you can and reinvest in a more diversified portfolio.
-
That being said, if you’re conservative with finances, you’re more likely to undervalue the future appreciation of RSUs (and thus, when comparing offers you may undervalue the net present value of RSUs as well).
-
You should be able to comfortably live off your salary (without any bonuses or RSUs).
-
If your company does 401k matching, you should absolutely max out the match. You should probably max out your 401k contributions (when possible) as well, as a set-and-forget way to do retirement planning until you have time to develop a more nuanced plan for handling your finances.
-
It’s worth doing a deep dive on exactly how the tax system works. Internalizing how capital gains and each type of retirement account are taxed is a great way to avoid future unpleasant surprises.
-
If you work in tech, there’s ~no excuse for not keeping and fiercely guarding an emergency fund of 6-12 months of expenses.
Your mileage will vary on all of this. What matters most is developing your own heuristics over time. These are just mine, offered as a starting point. In a few years, you’ll have your own version of this list, shaped by different choices and different seasons.
Cheers!