| Year 1: Getting a job anywhere is a challenge. Cast a wide net with an open mind. In all likelihood you will leave this job on or before year 5. Accept a lower salary in exchange for experience but don't compromise so much you're below average. Don't fall into the silicon valley trap unless you're already there and/or are willing to destroy yourself for a job. You're getting this job to get your feet wet and start to develop yourself. Grinding leetcode is a waste of time. Do enough to get the job but don't do it to diminishing returns. There's no amount of leetcode that will land you a higher position anywhere. At the end of the day to advance past junior you need more than programming skill. You need the ability to show project management, self direction, and leadership. Leetcode teaches you none of this. Keep humble and learn from everyone. Ask a lot of questions and keep in the back of your mind eventually you're going to have to find a stack you're good at. For all the pitches about "generalists" I've never met a high level engineer good at everything. I have been a backend engineer for 10 years. I have 2 languages I'm good at and a billion I'm familiar with but would not consider myself senior level. If you asked me to write a frontend I would not be able to do it. Importantly start saving now. This cannot be emphasized enough. You're going to be making more money than you've ever made in your life even on the low end. Live frugally and within your means. Save diligently and max out your 401k and IRA. Take advantage of any savings vehicle you can find. To put the numbers into reality, if you can save $100,000 and you fell into a coma at 7% interest you'd be worth over $700,000 dollars. You need to take advantage of compound interest as soon as possible. Year 5: You're likely low-level senior at this point. Jobs are far easier to get, and you're likely settled into a stack you like. Move jobs frequently until you find a place where you can grow properly. Stay humble, you don't know everything. At this point it's critical you don't let your title get to your head. You will come across people who are junior to you that teach you a thing or two. You are not senior because of your programming talent. Remember that. You are senior because your experience allows you to deliver _despite_ your shortcomings. Begin setting your eyes on a staff/management position. Pay attention to how they act and emulate it. Always remember to take care of your juniors. Keep saving money. Never stop. Despite the calls for "full-stack" understand that "full-stack" engineers are often mediocre at everything instead of good at one or two things. This is great for job hunts but bad for advancement. A good parallel, because you will wonder if you should go "full-stack" is Walmart. You don't go to Walmart for high quality engineered furniture. You go there because it gets the job done. At the 5 year mark you should be starting to become an artisan and you will see the shortcomings of engineers who stayed broad for too long. Year 10: You are likely coming up or already have a management or staff level IC position. All advice from Year 5 applies. At this point though, leaving jobs becomes less beneficial. The only way up is through "works of God" - meaning most of your promotions above this level will be political in nature. There are diminishing returns to moving companies as you will often been embedded in a company's culture to reach a staff position. Leaving the job becomes hard because you can't leetcode your way into a staff position somewhere else. You need enough experience to be able to convince another company you can contribute at this level there. I would aim to stay at a job for as long as possible at this point. Know how to take advantage of people's abilities. As a "super senior" you will be expected to know a lot of things you won't know. Respect your coworkers and identify things. An example of this for me is I am not very good with social things. I've recognized this and I also have almost no interest in diverting time to develop higher EQ. Instead, I lean on people on my team who are already good at these things. For example, there are people on my team who are okay engineers but superstar people-persons. I can easily compensate for their engineer and they can compensate for my underdeveloped EQ. Work symbiotically with your team and put people, and yourself, in places where you can most effectively complete the mission. The industry is highly ageist and it's not uncommon to "age out". You should be planning for this. What I mean by this is you should be exploring lateral moves in your field. You are likely extremely, extremely good at one or two things. Ask yourself where you will go if your stack dries up. Are you willing to start back at junior in a new stack? Probably not. So, consider what it would take to possibly laterally move into management if you're capable. By year 20 the probability of your stack disappearing (see: Ruby) is pretty high. Have a plan. Again, save save save. The power of compound interest is incredible. Do not squander it. |