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
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.
ReplyDeleteRight, 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