How to level up as a Software Engineer despite having setbacks? - Part I (New Grad to Mid-level to Sr Eng)
Embrace challenges -> Success
👋 Hey there, fellow tech enthusiasts, professionals, and wanderers of the digital realm! 🚀
I am Gourav. I write about Engineering, Productivity, Thought Leadership, and the Mysteries of the mind!
I am thrilled to extend a heartfelt welcome to over 250+ new faces who have recently joined our lively newsletter community..
You are now the spirit of
!As we continue to grow and evolve, the energy and enthusiasm brought by each new member contribute to the richness of our shared experience.
Your engagement is what makes this community vibrant, so feel free to hit reply and share your thoughts, feedback, and ideas, or even just to say hello!
Today at a Glance
Inspiration of the day!
How to get promoted despite having setbacks?
3 Fun facts about Software Engineering.
Inspiration of the day
You have to take responsibility for:
your career yourself and your actions in terms of your career advancement,
your learnings and education,
your project and your day-to-day work.
Pragmatic Engineers take charge of their own careers and aren’t afraid to admit ignorance or error.
Setbacks, errors, failures - It’s not the most pleasant aspect of software engineering to be sure, but it will happen - even on the best of projects. You have to overcome those too!
How to get promoted despite having setbacks?
No fluff, no jokes, no BS!
I am going to talk straight to the point and provide you multiple action items to reach the next level in your software engineering career, even if you messed up occasionally.
I am also covering examples of setbacks or failures that are fairly recoverable to put yourself back on track and mechanisms to overcome if you have the right mindset of learning from your mistakes and taking corrective measures.
But first few disclaimers:
There are “no silver bullets”, aka, different companies depending upon the tier or level of maturity (startup, mid-tier, service-based, product-based, big tech) may prioritize different kinds of contributions to be eligible for a promotion.
Not all your actions may align with your company’s culture, so you have to be cognizant of your surroundings and “Improvise, Adapt, and … overcome”!
Because of this “My world is not the same as your world” problem, I am providing multiple example action items so that you can use at least 2-3 unique pointers, no matter which workplace you are working at.
If a company’s culture is the real problem, then probably changing the workplace is probably the best solution.
I am dividing it into 3 sections to cover almost every engineer, regardless of where they are in their tech career journey.
Fresher → Mid-level Senior Software Engineer
Experience years: 0-2
Current titles: SDE1, Associate Software Engineer, Software Engineer.
Target Titles: SDE2, Software Engineer I, Senior Software Engineer I
Scope: Tasks or projects in a small team
Action Items
Solve coding problems in a reasonably fast manner.
Given a task, you should be writing, debugging, or fixing code promptly.
When stuck, ask for help. Do NOT burn in silence for 3 days on any task.
Buy and slowly read ‘Clean Code’ and ‘Clean Architecture’ books during after hours.
Code regularly - your GitHub green boxes metric is important at this stage.
Start with quantity then learn to incorporate quality quickly.
Pick up an on-call pain point and try to solve it in the background.
This will give you instant high visibility and your manager and peers would love you if what you solved helped them reduce ops pain.
Give regular updates about the task you are doing and showcase it using demos!
Make good working relations with mid-level and senior engineers
Wear a ‘learner’s hat’ and be polite, and thoughtful when interacting with seniors.
Ask good questions and ask many of those!
Your manager relies on these folks to get your feedback and so their words could make you or break you.
Once you have built some credibility, try to ask for or be involved in impactful projects.
Since at this level, your promotion is totally in your manager’s hands, they would like to justify it based on ‘how much did you contribute and where’.
Acceptable setbacks and how to learn and overcome those
A few code bugs are fine in a complex codebase, especially when you are usually a good coder who delivers stuff swiftly.
Overcome the situation: If you caused an outage, treat it as an opportunity to learn and fix problems. Come up with a plan and set of task items to fix the code bug and trim down the tech debt accumulated due to it.
Anecdote
When I was at this level, I caused an outage in Amazon India payment systems because I used to float or double in Java for calculations. I should have used BigDecimal.
It led to a lot of stuck payment workflows, but I still got promoted after a quarter because of the way I gracefully handled the situation. I turned that incident into an opportunity.
Mid-level Senior → Senior Software Engineer
Experience years: 2-6
Current titles: SDE2, Software Engineer I, Senior Software Engineer I
Target Titles: Sr. Software Engineer, SDE3, Senior Software Engineer II
Scope: Working in a team and cross-collaborating with other teams in the org.
Action Items
Work on Impactful projects with quality - consistently
Showing impact is most important at this level to grow to Senior Engineer.
Not just once or twice, but in almost every project.
Learn the art of measuring the impact in terms of revenue, cost, or developer agility improvement numbers.
Code quality, and safe Rollout in a gradual way is of paramount importance.
Become a leader in handling Incidents.
Nothing would give you more visibility than solving on-call sev2 incidents attending critical post-mortems, and providing your thoughts.
Try to float around in on-call channels with open eyes and ears and add your meaningful perspective even when you are not on-call.
Work closely with stakeholders like Customers, Project Managers, and your own manager and take boring yet complicated stuff off their plate.
Understand the business aspects and how they contribute to the company’s revenue, generated directly or indirectly from your project.
Help stakeholders solve their problems. Solving or helping with others’ problems is really important to gain their trust.
Speak after a thoughtful inner contemplation, and be right a lot.
Don’t argue, and adapt to genuine feedback with an open mind.
Communicate as per the target audience clearly.
cover ‘Call to Action’, TL;DR, context, and how to reach out, when communicating on updates or announcements.
In verbal communications, be a good listener first.
Present and participate in Tech talks and speak with confidence.
Mentor junior engineers and help them grow.
Prioritize delivering stuff over fluff (meetings and other distractions).
Improve or automate processes that help the team sleep at night.
Be humble, and passionate, and hold bias for action.
Influence the team, and contribute to the short and long-term vision of how and what the team should work on.
Acceptable setbacks and how to learn and overcome those
Taking some meaningful Tech Debts to prioritize new product features is okay.
People may question this, but clear communication becomes the key here.
Make sure to drill down that Tech Debt post-launch with a plan in place.
Missing a deadline by a few days could be accepted as long as the customer’s or company’s business is NOT impacted.
Even though I mentioned code quality and bias for action in action items, those sometimes don’t go hand in hand. To balance out stuff there, you sometimes need the extend the deadline so that you deliver meaningful output.
Clear communication on why you think that is the right decision is again the key here.
A low-performance rating in the distant past shouldn’t bog you down on your path to promotion if you are doing all these things right.
Learning from past mistakes and doing the action items consistently is sufficient. This is your life, you take hold of it.
To be Continued…
In the next newsletter editions, I will continue this format and cover what you need to do to climb up the ladder further. After a Senior position, reaching out to Staff and beyond is very difficult and often not expected from everyone. The skills, deliverables, and influence needed to reach these levels are significantly different than the levels we discussed today.
Stay tuned for next weeks to learn how to go from:
Senior → Staff Software Engineer
Staff → Principal Engineer
Learn even more…
By subscribing to these newsletters. In addition to the tips and action items I provided in the previous section, subscribing to these newsletters would definitely help you bridge the gap faster:
- Author of Level up software engineering 🚀
- Author of Coding Challenges & Developing Skills
- Author of High Growth Engineer
- Author of Developing Dev
- Author of Strategize Your Career
- Author of Level up as a Tech Lead
- Author of Techlead Mentor
Omar Halabieh Author of Leadership in 60 Seconds
3 Fun facts about Software Engineering
American computer scientist Margaret Hamilton in 1963 created the term "software engineer" to describe her work.
Around 54% of software engineers claim to be more productive when they work from home. This is a great matter of discussion in 2024 as the world moves towards the office culture again.
AI is getting adopted faster than smartphones and the internet.
In case you missed my previous articles…
The Secluded Mindset for Becoming an Elite Leader from an Everyday Engineer
How to remove political roadblocks to grab your well-deserved promotion?
Secret to become a Staff+ Engineer swiftly
How earth's rotation caused Software Systems to go down?
Access the full archive here.
Your thoughts matter! Comment or reply with your post ideas—I'm all ears and ready to turn your concepts into content! 🙋♀️🙋♂️
Let’s Connect
If we haven't crossed paths previously, I'd be delighted to receive a message from you!
Free Sponsorship Opportunity
Unlock the potential for your business to shine! Simply hit reply to this email, and let's embark on this exciting journey together. The first 5 businesses that respond to this edition will enjoy a complimentary sponsorship in my newsletter. Don't miss out on this exclusive opportunity!
Collaboration on mind?
I am more than happy to collaborate! Whether it's cross-content sharing, podcasts, or interviews, let's create something amazing together. My DMs are open on LinkedIn.
Also, don't hesitate to reply to this email and introduce yourself. I make it a point to respond to every direct message, email, and comment.
Follow me for daily informational
Follow me on LinkedIn for daily interesting bytes, discussing all things software engineering, leadership, financial freedom, mindfulness, productivity —let's connect:
Be the change you want to see,
Gourav Khanijoe
I appreciate the mention, Gourav
I had a similar experience as SDE1 with a production issue. I was using a regex to parse a string, obtain a number, and convert it to double. But I didn't identify all the possible characters in that string (it included underscores 😔)
Then Double.parseDouble("_8") failed on runtime and it reached production since no test caught it before. Of course, no exception handling from my side.
Luckily the framework of the platform handled those exceptions and just omitted my component. But it caused a few Sev-2s and blocked other teams for a while.
Despite being super uncomfortable, writing the postmortem and presenting the lessons learned to my org made me grow and it turned out to be a great opportunity for my future promotion.
Situations just happen. It's up to us to take advantage of whatever we have in front of us
Thanks Fran!
Human will always do mistake, and that’s fine. That’s how we grow. Appreciate your engagement. I like your content as well, very thoughtful!