Skip to content
GitHub Copilot is now available for free. Learn more

Junior to senior: An action plan for engineering career success

Enhance your engineering career prospects using this systematic guide for skill development and growth.

Artwork: Violet Reed

Photo of Jerome Hardaway
Microsoft logo

Jerome Hardaway // Senior Software Engineer, Microsoft

The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.

Starting your journey as a software engineer is an exciting time. You’re learning new things and finally seeing your code pushed live. As you progress, you may begin to contemplate the future and consider how you can prepare for a role as a senior software engineer, as well as the essential skills and competencies needed to achieve that goal. As the executive director of Vets Who Code, I have trained over 300 veterans and military spouses in web development, helping them prepare for each new career step. Many trainees I’ve mentored have advanced to senior software engineers and engineering managers, and I’ve even seen some former program graduates hire new grads themselves! Moving from a junior to a senior engineer requires an investment in developing both hard and soft skills. Below, I share tips to help you earn that promotion.


In this Guide, you will learn:

  • The key technical competencies that managers prioritize for career advancement.

  • The essential communication skills expected from senior developers.

  • How to approach code development with a focus on addressing business requirements.


Hone your technical chops

Demonstrating a solid technical foundation is paramount for the next step in your career. It’s critical to master the fundamentals of programming, data structures, algorithms, and software development practices, and to focus on writing clean and maintainable code that follows best practices for testing, performance optimization, and scalability. However, being a strong software developer only gets you so far: To be successful, your peers, manager, and sponsors must also recognize the quality of your work and your ability to design and develop solutions to complex problems. Documenting your success via merged pull requests can help provide evidence of your applied knowledge (these can also be included in your brag doc, which we will discuss later).

Senior engineers often differentiate themselves by demonstrating leadership capabilities (understanding how your work fits into the larger goals of the business, adding value in meetings, mentoring peers, etc.) and a willingness to tie their work to business priorities and outcomes. Candidates for senior engineering positions should be adept at identifying areas for incremental improvement and at efficiently managing critical service outages by utilizing team resources to quickly minimize adverse effects on customers.

Connect the dots between engineering and revenue

A good understanding of your business domain will help you contextualize the problems you are solving, how your work impacts the company, and how to identify and select assignments. Consistently delivering high-quality work is key to demonstrating your ability to meet or exceed expectations.

If you want to move up in a company, you need a deep understanding of how the engineering logic interacts with your company’s business logic. In other words, how are these technologies connected to revenue? A company that primarily earns income through advertising will approach engineering decisions differently than one that relies on a subscription model. Understanding this will help you choose where to develop your skills.

Demonstrate your understanding

There are various ways to demonstrate your understanding of the business domain and your leadership potential. One is to identify opportunities for incremental improvements by closely examining the current processes and finding ways to streamline them. You can also create user stories, which will help highlight user needs that can then be used to improve the product. Teaming up in code reviews offers an opportunity to provide your team members with constructive feedback and show your ability to lead and collaborate effectively. Similarly, you can join forces with other teams to tackle tech challenges and show your willingness to work across groups. Lastly, pick up the slack where you see it and create solutions to build trust in the product.

Build a “brag document”

A “brag document” demonstrates your expertise and showcases your achievements. This document will be valuable while writing your self-review, and can be shared with your leader when discussing your professional goals and progress towards promotion. It should include:

  • Completed projects: List all of the projects you’ve worked on, including the technologies used, the purpose, and—most importantly—the results achieved. Focus on projects completed as part of the team or those close to business needs.

  • Technical skills: List the technical skills you’ve developed or improved over time. This could include programming languages, software development frameworks, or other technologies.

  • Professional development: Include a record of completed training, courses, and certifications to demonstrate a commitment to ongoing learning and professional growth. Accomplishments and milestones: Document any significant achievements or milestones achieved, such as a project completed ahead of schedule or a particularly challenging bug fix.

  • Feedback and recognition: Detail any feedback or recognition received from colleagues or superiors, such as positive performance reviews, recognition for outstanding work, or commendations for contributions to the team.

  • Open source contributions: Showcase your open source contributions and volunteer work, as these demonstrate a willingness to share knowledge and collaborate.

We want to hear from you! Join us on GitHub Discussions.

Communicate like a product owner

Effective communication and collaboration skills are essential for junior software engineers aiming to progress to senior roles. As you advance in your career, you will be expected to work with cross-functional teams, manage projects, and communicate technical solutions to non-technical stakeholders. You also need to know how to communicate to an executive audience (your bosses), which means you need to have clear, concise messaging that focuses on the bottom line. Also, lean into your expertise so you can have an impact on the technical outcomes during meetings. For example, when a client recently asked for more control of their profanity filter beyond what their serverless tools offered, I built a customizable profanity filter that they could add new words to via an array.

Volunteer to mentor and onboard new hires

As a mentor, you can help new team members quickly adapt to their role, offer them guidance and support, and create a friendly environment that encourages personal growth and learning. Being a mentor not only highlights your ability to work well with others but also showcases your strong communication skills.

At the same time, you need a council of your own sponsors and mentors to help you master complex skills, access growth opportunities within the company, and gain the visibility you need to be promoted. This is very important, as you won’t be able to reach these goals alone. Just remember to “lift as you climb,” as my friend Cassidy Williams says.

Write documentation

As you progress into a senior role, you’ll need to set an example of effective communication and collaboration for junior engineers. Writing clear and concise documentation displays your dedication to ensuring that information is communicated effectively and consistently. Good documentation not only adds an important layer of technical security to the team, it also saves time, prevents errors, and provides a reference for team members and non-technical stakeholders. Not to mention, writing documentation also shows that you’re willing to take on the tasks that others might be less willing to do, which is the mark of a team player.

Continue learning

As you’ve likely already experienced, the technology world changes quickly, and you need to continue learning and developing your skills to stay up to date with the industry. To position yourself for a successful transition to a senior role, showcase high-quality work based on those learnings to leadership

Stay current by attending industry events, engaging in technical communities (such as GitHub, Stack Overflow, or HackerNews), and connecting with fellow professionals. Beyond networking, these communities provide an opportunity to externally promote your team's accomplishments, which demonstrates to senior colleagues your commitment to the company's direction.

Finally, remember that career progression takes time and dedication. You must be patient, persistent, and willing to do the work required to succeed. Advancing from junior to senior engineer requires technical expertise, leadership, project ownership, effective communication, collaboration, business domain comprehension, high performance, and innovative thinking. You’ve got this.

Make sure to check out The ReadME Podcast, where I share my thoughts on how to fortify your career against change and provide additional career advice.

Jerome Hardaway is a Senior Software Engineer (Microsoft), Executive Director (Vets Who Code) Educator, Mentor, and Startup CTO (myruck). Having transitioned into software engineering after serving in the military, Jerome is dedicated to helping underrepresented veteran and military spouse community members learn and break into the tech industry. Read more about his dedication to mentorship and community in his developer story.

More stories

Finish your projects

Aaron Francis // PlanetScale

The case for using Rust in MLOps

Noah Gift // Pragmatic AI Labs

About The
ReadME Project

Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.

The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.

Follow us:

Nominate a developer

Nominate inspiring developers and projects you think we should feature in The ReadME Project.

Support the community

Recognize developers working behind the scenes and help open source projects get the resources they need.

# For Newsletter

Every month we’ll share new articles from The ReadME Project, episodes of The ReadME Podcast, and other great developer content from around the community.

Thank you! for subscribing