Software Developer Roles Career Progression

The History

Back in 2015/2016 we began to scale our new department. The team was just 5 people and we were growing at least 5 time the size. We wanted to keep mob programming philosophy embedded in every aspect of the culture and that is how we landed on a nominations based promotion system. This required new levels within the department and a clear idea of what being promoted meant. 

Retrospectives have always been core to our culture and this process was no different. We began by crowd sourcing what the process would be like. The job descriptions and roles were designed by a mob and we began to hire. In time we found that the idea of what was promotion-worth was diverging and even for our most early career developers did not know what was needed to be promoted. That is when the first iteration of the following diagram was created:


The diagram helped considerably, the nominations started to flow where some would have hesitated. The team members now knew that the Associate level was mostly about learning a lot and contributing where you could. When you could contribute often, that meant you were ready to be a mid level developer. As you grew in your skills and you began to spend more time coaching others you were becoming more senior, and finally as you learned more about the core business and mastering the cultural aspects of the team you could reach the "Senior Full Stack" level which eventually was renamed to distinguished engineer. "The fastest path to a promotion is to become awesome, and then help others become awesome."


Over the following years we began to realize that even the skills in these sub-categories were being interpreted differently, and we wanted to have at least some sort of baseline for what skills belong in which level. I was regularly asked what I would recommend studying to move into a particular role. 

Eventually I put together the following book list then moved into our Wiki to get regular updates:

Intro

This page should be maintained with a reasonable amount of learning for people to do through their development learning journey. These resources are intended to be consumed, generally, in order.


Associate Engineer

📚 Books

Grit: The Power of Passion and Perseverance by Angela Duckworth

Clean Code by Bob Martin

Extreme Programming Explained by Kent Beck

Working Effectively with Legacy Code by Michael Feathers

Either or both:

Power of Habit by Charles Duhigg

Atomic Habits by James Clear

The 7 Habits of Highly Effective People by Stephen Covey

Engineer

📚 Books

Software Teaming: A Mob Programming, Whole-Team Approach by Woody Zuill and Kevin Meadows

Head First Design Patterns by Eric Freidman and Elisabeth Robson

The Clean Coder by Bob Martin

Refactoring to Patterns by Joshua Kerievsky

Lean Software Development: An Agile Toolkit by Mary and Tom Poppendieck

Accelerate by Nicole Forgren, Jez Humble, and Gene Kim

Agile Retrospectives: Making Good Teams Great by Esther Derby, Diana Larsen

Joy of Agility by Joshua Kerievsky

Senior Engineer

📚 Books

Clean Architecture by Bob Martin

Extreme Ownership by Jocko Willink

Technical Agile Coaching with the Samman Method by Emily Bache

Principal Engineer

📚 Books

Training From the Back of the Room! by Sharon Bowman

Turn the Ship Around! by David Marquet

The Five Dysfunctions of a Team by Patrick Lencioni

Thinking, Fast and Slow by Daniel Kahneman

The Fifth Discipline: The Art and Practice of the Learning Organization by Peter M. Senge

Distinguished Engineer

📚 Books

Leadership Is Language: The Hidden Power of What You Say by David Marquet

The Advantage: Why Organizational Health Trumps Everything Else In Business by Patrick Lencioni

Crucial Conversations by Joseph Grenny

Teaming: How Organizations Learn, Innovate, and Compete in the Knowledge Economy by Amy C. Edmondson

Start with Why: How Great Leaders Inspire Everyone to Take Action by Simon Sinek

Switch: How to Change Things When Change Is Hard by Chip Heath

Made to Stick: Why Some Ideas Survive and Others Die by Chip Heath, Dan Heath

Creativity, Inc. by Ed Catmull

Never Split the Difference: Negotiating As If Your Life Depended On It by Chris Voss

The Loudest Duck by Laura A. Liswood

Any Time

📚 Books

The Fearless Organization by Amy Edmonson

Talking to Strangers: What We Should Know about the People We Don't Know by Malcolm Gladwell

How to Win Friends & Influence People (Dale Carnegie Books) by Dale Carnegie

Beyond Legacy Code by David Bernstein

⚡ Activities

Do as many learning hours as you can from Learning Hours 

Learn the mob programming roles with the Mob Programming RPG 

Do lightning talks based on topics from the books

After many practice lightning talks, speak at the monthly software update


Where we are today

This later gave me the ideas to add the skills in the book list to the continuum of the developer responsibilities list. The book list was also used in a prompt to generate responsibilities in our job descriptions using an LLM. This mean that the learning roadmap mirrored the book list which in turn mirrored the job descriptions making if very clear what the learning baseline should be. Last years retrospective lead to additional improvements to the promotion nominations process and it is exciting to see what the next iteration will be going forward!

2 comments:

  1. Thanks for sharing! Very unique. I especially like that all stages share the requirement to be learning and growing, and that the first one isn't focused on contribution.

    ReplyDelete
    Replies
    1. Right, an associate developer is a great way to pipeline continuity for your products as you experience turnover at other levels. More often then not, their ability to contribute grows extremely fast in a mobbing environment. Learning as a primary directive makes a lot of sense for those people. :)

      Delete

 

Follow