[Twitter thread]

Last year, I wrote Career advice for recent Computer Science graduates about the decision-making process I went over when choosing my first full-time job after college. Now that I’ve just left that first job, I want to share some lessons that I wish I knew when I started.

1. It's all about the people

Before starting working, I had a naive expectation that my social life would carry on from college into the real world – all the friends I took for granted in school would continue living within a 5-minute walk from me and being available whenever I needed them.

The transition was hard. Many of my closest friends moved away. Some stuck around, but commute and work and adulthood got in the way and we never seem able to find time to see each other.

In the disappointment of it all, my coworkers stepped in and filled the gap.

I didn’t think about it when choosing a team – professional life is supposed to be orthogonal to personal life, right? – but I lucked out. I found on my team the two things that matter the most fresh out of college: friendship and mentorship.

1.1 Friendships

When I first joined, everyone else on my team was already married with kids. People with kids don’t have time to deal with my post-college angst. As the team grew, however, I found a group of coworkers who were also going through the same transition. We had lunch together at work every day. On the weekends, we did board game nights, BBQs, potlucks. We even spent one weekend together in Monterey.

Some of my coworkers became more friends than coworkers. I can’t pretend that there weren’t any moments I was frustrated at work, either because of work itself or something else going on in my life. Having a friend nearby who I could talk to with total trust made a big difference.

1.2 Mentorship

A more senior member on our team took me under his wings. He became my biggest advocate and taught me so much, from writing papers to handling corporate politics – inevitable in any big corporation – to choosing what waterproof shoes to buy. I wish I had been more proactive in learning from him.

I’m surprised that many don’t have a mentor for their first job. It’s not that they don’t want one. They just never ask. When starting a new job, you should choose a coworker with whom you get along and ask them to be your mentor. If they say no, try again with someone else. Most people are receptive to being a mentor – it’s flattering to be asked. Check in with them once a month to talk over what you’re working on, understand what they’re working on, and get their thoughts on your progress. Your managers can be your mentors too, but it’s nice to have a second opinion.

I first learned this lesson at the beginning of the decade during my travels: “Traveling is not about where you are, but who you are with.” I learned this lesson again at the end of the decade. It’s not about the company. It’s not about the product. It’s not even about the money. It’s all about the people you work with.


  1. Find a team that has people who are in the same life stage as you.
  2. Ask a coworker to be your mentor.

2. It's important to measure progress

In school, we know how we’re supposed to progress: we finish one year and move onto the next. If you unexpectedly fail an exam, you know you need to reevaluate your priorities. After graduation, I had this fear that I’d keep on making bad life choices and have no way to find out until it’s too late.

To avoid it, I decided that I needed three things:

  • well-defined goals
  • a way to evaluate whether I’ve met those goals
  • an early warning system to let me know when I veer off track

My specific goals and metrics are too personal to share, but my goals are along three main axes: become a better engineer, become a better writer, and maximize my future career options.

In my professional life, one metric I used was NVIDIA’s internal level structure and feedback loop. My manager was kind enough to explain what he needed to see from me to move me to the next level. If your manager doesn’t bring it up, you should schedule an 1:1 with them to talk about it. Discuss with them your possible career trajectories within and outside the organization, how long it usually takes for someone with your background to move to the next level.

I also asked my manager what gaps in my skills and knowledge he thinks I should focus on. Most people are trained to always tell you you’re doing a great job, so you need to frame your questions and attitude in a way that encourages honest feedback. It takes courage to give critical feedback. When you receive some, accept it with grace, even if it’s something you don’t want to hear.

In my personal life, I had an accountability pact with Paul Warren, one of my closest friends. Last June, I told him what I’d been up and he told me: “Neighbor, I’ve known you for five years and I’ve never seen you this unproductive.” Some might find it harsh, but it was what I needed to hear. This conversation prompted me to reexamine how I’d been spending my time, reevaluate my priorities, and work on my bad habits.

Realizing how helpful the conversation was for both of us, Paul and I decided to check in every two weeks to make sure we’re doing what we say we’ll do. We want to help each other live better, not just work better, so we talk about everything from work to relationships. It’s reassuring to have someone you trust follow your progress in life to make sure that you’re on track. I’m also glad to have Paul back as a stable figure in my life.


  1. Have well-defined goals.
  2. Talk to your manager about your career paths, how long it usually takes for someone to move to the next level, and what they need to see from you to move you to the next level.
  3. Have an accountability friend. Schedule to check in with them once or twice a month.

3. Structure is good

In school, I hated how structured my time was. My weekly schedule was always the same. My quarters were planned around exams and deadlines. I couldn’t wait to not have classes anymore so I could sleep whenever I wanted.

As a typical software engineer at a typical big tech, I had a lot of freedom in scheduling my days. Most tech companies in the Bay don’t care where and when you do your job, as long as you get it done. When I started, I took full advantage of it. If I wanted to sleep in, I’d sleep in and add a few extra work hours to the end of my day. If I didn’t want to change out of my pajamas, I’d work from home.

I liked it, but I couldn’t get anything done. The more options I have, the more time I spend on evaluating them. It took me forever to schedule anything. I kept switching from one task to another whenever I was bored, wasting time on context switching. My sleeping schedule was so erratic I had a hard time falling asleep and was always tired.

Then I decided to subject myself to something I never thought I would: daily routines. I go to work, leave work, and sleep at the same time every day. Scheduling meetings becomes much easier. My sleep improves. I became more disciplined and more productive. I even managed to carve out 40 minutes each day – during my commute – to read books. No email, no social media, no reviewing code. The whole world with all its problems ceases to exist. The only thing that matters in those precious minutes is my own little universe.

As I talked to people about this change, many have also told me that they’ve come to appreciate having some structure in their lives. A friend chose to live far enough from the office so that he has to take the same shuttle at the same time each day to and from work. Another told me that following a routine gives him peace of mind – as long as he can still have his latte at 9am the world can’t be falling apart. Routines allow us to go on autopilot for many daily tasks, freeing up our mental energy for things that matter.


  1. Sleep at the same time.
  2. Carve out time for things you enjoy doing, so that you have something to look forward to everyday.
  3. Don’t forget to exercise.

4. Your job doesn't define your self-worth

Recently, I had a great conversation with someone I met at a group dinner. When I told my friend about it, she asked: “What does he do?” I have no idea. I never asked.

It bothers me that the first thing we ask when meeting someone is their job, and the first thing we tell other people about ourselves is where we work. Within two minutes of meeting someone, we get their entire employment history: where they are now, what they did before, where they went to school.

This reduces each person’s self-worth to their resume. This makes us lazy – we don’t feel the need to get to know someone now that we can fill in the missing picture with the stereotypes we’ve already formed about their jobs.

On top of that, if we keep introducing ourselves by our jobs, we let our jobs define ourselves. When our jobs don’t go well or we don’t have one, we feel like we’re nothing.

People ask me that if I don’t talk about jobs, what do I talk about? Everything else. I like to know what people are thinking about, what problems they see that don’t have the solutions to yet, what they find underrated, what technology/book/movie/music/etc. changed their perspectives. My goal when meeting someone new is to figure out what they know that I don’t.

I also use the opportunity to get a new perspective on what I’ve been thinking about. If I’ve been thinking about machine learning interviews, I’d ask them about their interview experiences, both as a candidate and an interviewer. If I’m writing about technical writing, I’d ask about their writing process and if there’s any piece of technical writing that they consider exemplary.

It’s hard to get people to open up right away, so you need to ask the right questions to warm them up. It’s a skill that I’m still learning and practicing. Sometimes I fail and people think I’m a weirdo. But when I succeed, I have a great time, learn something new, even gain a new friend.

I’d like to add a reminder that your career doesn’t have to be just your job. Many opportunities I get come from what I do outside my job – people know me from my side projects, companies invite me to give talks about a topic I’ve written about. I separate what I do for my job from what I do for myself, taking advantage of the time I haven’t sold to my employer yet to work on what interests me. When you have a career outside of your job, you have more leverage at work, which allows more job flexibility.


  1. Get to know people for who they are, not just their jobs. Make friends, not connections.
  2. No matter how well your job pays, you’re still selling your time for less than what it’s worth. Preserve your time to work for yourself.
  3. Do side projects.
  4. Have a career outside of your job.

What's next?

Last year, I chose to join NVIDIA because I thought it was a great company. My time there reinforced that notion. I’m grateful for having the chance to work with so many wonderful people on challenging projects.

I knew it’d be hard to say goodbye, but I didn’t expect it to be that hard. As I turned in my badge, I was overwhelmed by a sense of loss. One of my coworkers had tears in her eyes. Another refused to believe that I was leaving. Jensen Huang was at my farewell party (by chance) and was really nice about it. It hurt me when my teammates asked: “Are you leaving because you don’t like us?”

I love my teammates. I wish I had more time to work with them. However, as I’m still trying to learn as much as I can, I need a different environment to learn a different set of skills.

I’m joining an early stage startup that focuses on the machine learning production pipeline. We’re still in stealth so there’s not much I can say, except that the team is of a caliber that I’ve never seen at a startup. They are a rare breed of researchers with excellent engineering skills. I’m honored and excited to be part of the team. I can’t wait to show you what we’ve been working on!

P.S. Yes, we’re hiring. Hit me up if you want to chat :-)


Thanks Ben Krause for being an amazing first reader! Thanks Lifan Zeng for helpful feedback!