A few days ago, my dear wife shared her reflections on her first year after switching careers to become a software engineer. Since her career change, the two of us often talk through all kinds of work questions. With a few more years of experience, and time at companies and teams of different sizes, I can usually offer some perspective and advice.

What I want to share today comes out of those conversations, and it is something I have been thinking about for a long time: the core question of how to plan a career. Many friends struggle with how to choose among options at three levels: the industry, the company, and the team inside the company. Broadly speaking, the industry matters most. A rising industry and a sunset industry think very differently about how a company grows and how people develop. Since I am a software engineer, I will mostly take a software engineer’s point of view in this post.

Start With the Industry: Ride the Wave

In 2011, Marc Andreessen published “Why Software Is Eating the World”, which laid out how every industry in the world is gradually going digital. Industries are converting at different speeds, but the process has created a great deal of demand for software engineers. And the big tech giants, hoping to attract more and better talent from this wave, are spending heavily to recruit young graduates and experienced senior engineers alike.

If you get the chance, joining a large public tech company lets you experience something special: the output of your work can immediately reach millions, tens of millions, even hundreds of millions of people around the world. Because these companies are so large, they have well-established systems for developing people (see my earlier post on performance reviews at US tech companies). That gives your career a sound path to follow and reduces the chance of taking detours. These companies also attract many smart, excellent people, and working alongside them every day teaches you a great deal, by osmosis as much as anything.

Choosing a Company: Do Not Just Compare Total Pay

Back when I was in a coding bootcamp, before graduation we often discussed how to choose once we got job offers. The advice I heard most often was: do not just look at the total annual salary. Look at the opportunities to learn and to improve yourself. If two jobs differ by $5,000 in annual salary, but one is a rising startup trying many new, disruptive things, and the other is maintaining an old system at a huge company, and that system is gradually declining, then the first job may be the better choice for your personal development, even at the lower salary.

Company and industry are really two sides of the same coin. One way to check a company is to ask whether its importance and influence in the world are likely to keep growing. COVID-19 is affecting the whole world right now, but plenty of companies are also benefiting as everyone works from home and activities move online. I recently heard an impressive example: a friend joined a startup a little over a year ago. In a year and a half, the company went from its Series A to its Series C, and because he worked hard himself and the company grew so fast, he was promoted twice.

Choosing a Team: In the End, You Are Choosing People

Finally, what if your company does general hiring, where you do not know your team when you are hired and only choose after you join? How do you pick a team? I know many people will advise you to join the company’s most important core organization: at Google or Facebook, choose the ads business; at Amazon, choose AWS; at Netflix, choose streaming, and so on. I think that advice is generally sound, because you get to learn technology and products that lead the industry. But a team inside a company depends to a large degree on its manager and its members. Former Yahoo CEO Marissa Mayer once said: “Work for someone who believes in you, because when they believe in you, they’ll invest in you.”

So if you can, take the time to understand the team’s manager, and the management one or two levels above. See whether you can earn their recognition, and whether they will invest in developing you. If you like your manager, and your manager really has your back, do not worry too much about the exact content of the work. Join them and build together. I once mentored new hires at my company, a dozen or so engineers just starting out, and every one of them was anxious about how to choose a team. I would tell them about my own former mentor. When he joined, his final choice came down to two teams: one whose project work he really liked, and one whose manager and members he really liked. He chose the first one. Three months later, the honeymoon was over and he regretted it, and he stuck it out until he could switch teams after a year and a half. My own choices these days are also mostly about the people. After all, these are the coworkers you interact with every day. If it does not feel like a fit, it is genuinely painful.

These are just my own thoughts. I know that many times, everyone’s situation is different, and with life choices, the answer is very often “it depends”: it depends on your circumstances and the environment you are in at the time. I hope these reflections of mine can help you think it through when you need to make a choice in the future.

What are your own lessons about choosing an industry, a company, or a team? Feel free to share in the comments. Or if you have a story about choosing the wrong team at work, share that too, so everyone can learn from it.


This post was originally published on my former blog, 「半路出家軟體工程師在矽谷」, on August 23, 2020. The blog is now offline, and the text is preserved via the Wayback Machine. It has been lightly edited for this site.