It’s been a little over 5 years since I graduated from college and started working at Amazon. During that time, I switched teams twice and got promoted to senior engineer earlier this year. To be clear, this is not a post on how to be a good senior engineer. I only just got the title and I expect to feel more comfortable in the role after performing at the level for a few years. Nevertheless, I thought it might be helpful to share how I’ve approached my career in hopes of it being helpful to others looking to hear about a career progression story to senior engineer in a large company.
As a junior engineer (SDE1 at Amazon), in my opinion the main leadership principle that matters is deliver results. You should look into getting yourself familiar with the codebase, and delivering as many well-tested features as possible. Ship lots of high quality code to demonstrate that you’re reliable and earn the trust of your team, and you’ll be promoted to SDE2.
As an SDE2, my main recommendation is for you to invest in growing your engineering knowledge while maintaining a steady stream of deliverables. Don’t spend your extra time on delivering more features. Instead, invest in yourself and in the long run and you’ll have even greater impact.
A habit that I find particularly useful is maintaining a daily
TODO list of tasks that needs to be worked on. Once you’ve listed out the tasks, prioritize them and draw a line where you think you’d be satisfied with for the day. For example, I felt productive enough if I sent a single code review out or finished one or two sections of a design document per day. That amount of work wouldn’t consume the entirity of my day and felt like I met or raised the bar of a median SDE2.
The rest of the time 1, I focused on mostly learning about how to be a good software engineer. Learn the idiomatic way of writing software with the programming language that you use at work. Get a solid understanding on how to deliver software: the testing pyramid, trunk based development, continuous delivery. Read on how to write reliable software. As you build a strong foundation on the nature of software development, you’ll start applying this knowledge on your domain. The quality of your feedback in code reviews and designs will improve and after enough data points you’ll be promoted to SDE3.
I don't like waiting till the end of the day for learning new stuff. I found usually the time immediately after lunch a nice period for learning before jumping back into work.