In my experience, it’s intimidating to think about professional development and career growth. Those phrases are intentionally very poorly defined. That vagueness allows plenty of room for individual preferences. But, it also makes it difficult to gauge your progress. This can lead to doubts and anxiety about your current standing in your team or company as you assess your growth as a software developer.
Wouldn’t it be easier (and so much less emotional!) to just go the video game route instead, and simply rank yourself on a five-point scale for each of the core character stats required for your role? In all seriousness, I do like using a gamified social stats concept as a simple mental model to help map out career growth and visualize continual progress.
In the game Persona 5, you can rank up in the “Guts” stat by seeking out horror movies to watch in your spare time. Or, you can level up in the “Knowledge” stat by just showing up to school every day and answering when your teacher calls on you.
I think the same applies to career growth as a software developer. Specific, targeted, above-and-beyond professional development is great. But it’s also important to know that you are leveling up in these areas by just showing up.
Here are the different skill areas I identified and use to map out my career growth as a software developer.
This hands-on technical skill refers to familiarity with different tools, languages, frameworks, etc. Strong hands-on technical ability means being able to hit the ground running when faced with a task strongly tied to a particular tool. Building hands-on technical skills means hearing yourself say, “Oh yep, I know exactly how to do that!” more and more often.
You build this naturally by just writing code and combing through the documentation for several hours each day.
Professional development activities in this bucket include things like walking through tutorials for specific languages or experimenting with new tools on a personal side project.
Developing software instincts requires gaining familiarity with different development patterns and practices. Strengthening this skill translates into having a rough sense of if a particular approach will end up working out.
You can sharpen your software instincts naturally by:
- Being observant and noticing which patterns pop up over and over again.
- Pressing the more experienced devs to explain why they chose a certain implementation.
- Reflecting on why something you implemented ended up being kind of painful and bad.
Specific prof dev activities may look like reading books or blog posts about design patterns or development philosophies.
Technical articulation is the ability to speak accurately and in an approachable way about highly-technical concepts. It looks like clearly explaining a technical issue to a new developer or non-technical stakeholder without breaking a sweat. Or, it can look like dumbing down Rust’s concept of ownership to simply sharing “the talking stick.”
You build up this skill naturally by talking through your thought process when pairing with another developer. And, whenever your software instincts are screaming, “No, bad!” but you’re not sure why, you can build technical articulation by stopping to discuss the concern.
Some professional development tasks that can build technical articulation include writing explanations of technical concepts in blogs posts or presenting a talk at a conference.
Planning — Process and Design
Next, the planning skill is all about organizing work to ensure that the team is productive and that delivery is smooth. Having strong planning skills translates into being able to keep a team running. It’s especially important in the absence of a delivery lead or designated tech lead who might usually do a lot of that heavy lifting for you.
Just like the hands-on technical skill, this one is simple; you get better by doing it. Building planning skills involves volunteering to do technical refinement for a subset of stories in the backlog or jumping in to lead sprint ceremonies/design sessions as needed.
Options for targeted professional development in this area might look like participating in Agile Thinking training or Design Thinking certifications.
The persuasion skill is about effective communication and making recommendations to influence stakeholders’ decision-making process. It requires knowing exactly which buttons to push to steer decision-makers toward the outcome you’re hoping for.
This skill is the most recent addition to this list. It’s not one I have much experience with. I’ve only recently started to feel empowered to take the lead on more strategic level questions, where an unfavorable decision might have a huge negative impact on the project. As a result, developing this skill mainly involves the prior rehearsal of important conversations with a trusted mentor.
Five Stats for Assessing Growth as a Software Developer
Identifying these five skill areas has helped me better understand and reflect on my current abilities. And, knowing that you will slowly level up whether you’re intentionally picking prof dev tasks in that area or not can be a weight off your shoulders when it comes to planning out professional development and career goals.