Profile photo for Brian Bi

How would you build a solid career in tech?

I’m going to answer for software engineering, although there are obviously other kinds of jobs in tech as well (recruiting, sales, etc.)

This question can be divided into two parts: how to land your first software engineering job, and how to advance your career from that point onward.

There’s an extensive amount of advice on Quora about how to break into software engineering, for people with various backgrounds, and I don’t think I need to repeat it here. The easiest way is obviously to study computer science in university, but there are other ways in as well, such as doing research in an applied quantitative field (which almost invariably means learning to code nowadays) and then applying to jobs after that, or enrolling in a bootcamp.

I think it’s important to remember that once you’ve broken into the industry, you still have many years ahead of you to grow. So, by all means try your best to get a good job right off the bat, but if your first job feels like being a web dev code monkey or it only pays $35 an hour, don’t despair—the rate at which you build your skills from this point onward matters a lot more than where you started out.

We live in the most competitive time period in history, and things are only going to get more competitive from this point onward. I think the modern economy is a bit like the red queen situation in evolutionary theory—you’ve got to keep adapting and growing your skills just to stay where you are. Many young people have chosen to study computer science over the last decade, dramatically expanding the supply of junior dev candidates. This means that junior devs should not expect to continue being in a position of power over employers trying to hire junior devs. In the hypothetical situation that you get laid off a few years from now, or you have to move for family reasons, or something like that, you don’t want to end up in the position where you only qualify for junior roles and it’s now harder to get one than it was the first time you applied.

The bottom line is—if you are a junior dev today, you should make it your goal to become something more than just a junior dev. Concretely, this means:

  • Become efficient and knowledgeable in the tasks that you’re being assigned right now. This means developing a good workflow, making an effort to learn about the software project you’re contributing to, understanding your programming language and the libraries you’re using, and things like that.
  • When these tasks start feeling easy, try to get your manager or tech lead to assign you more ambitious, complex tasks so you can build your software architecture skills. If you realize that there’s no room for growth on your current team, then try to switch teams as soon as possible. If there’s no room for growth at your company, then try to find a new workplace as soon as possible.
  • In your first few years, you should be aggressively optimizing for growth, not for compensation. Find a company where you can grow, and stick to it for 3–4 years; don’t just try to switch jobs every 1–2 years to maximize your TC; you’ll end up not learning as much that way, and it’ll hurt you later.
  • Consider that there are two principal avenues of growth. One is to try to become a more senior developer—in the sense of being able to take ownership of more complex projects, make more architectural decisions, and direct people more junior than yourself. This is the path Jessica Su is heading down. Another is to try to become a domain expert; for example, I’m something of a domain expert in C++ libraries, and Christopher Chang is a domain expert in DNA sequence alignment algorithms. Choose one—or both, if that’s what you’re into.
  • Either choice—becoming a more senior engineer or becoming a domain expert—will require you to be a lifelong learner, and do more than just the minimum required by your current position. For me, this involves staying abreast with the latest developments in the evolution of the C++ language, such as by reading and commenting on feature proposals. One of my colleagues attends conferences on CPU architecture, to learn about things that are relevant to writing super high-performance code, such as Intel’s Transactional Synchronization Extensions.
  • Always stay focused on seizing opportunities to keep growing. For me, after a few years as a junior dev at Google, I knew I needed to move to a role where I could learn from more experienced C++ library developers and take on more challenging tasks related to my area of expertise—so that’s what I did. If you’re going down the “senior dev” route, then you need to make sure your contributions are recognized, and that you actually get promoted and receive additional responsibilities. You also need to start proposing your own ideas for projects that you and the team should work on.
View 2 other answers to this question
About · Careers · Privacy · Terms · Contact · Languages · Your Ad Choices · Press ·
© Quora, Inc. 2025