Together with agile coach Balint Farkas, we recorded a conversation hosted by Iseeq recruitment in Budapest. We explored what seniority means for software developers. This 30-minute session explored my experience on career paths for software engineers, the difference in impact at various levels and more advice on growing, as a developer. Listen to the recording here, on Soundcloud and read a short summary on topics discussed, below.
What are the typical career paths for software engineers? (01:35)
Talking about how I generally think about career progression, from engineers starting out, all the way to staff/principal engineers. And how management comes into this.
Differences in scope and impact between different software engineering levels (04:20)
Talking about how the expected impact is a big differentiator between levels like software engineers, senior engineers or staff engineers. The staff/principal level is especially interesting on what it means to have organization-wide or company-wide models. Why is both scope and impact important, at this level?
As an engineer, when you have a great idea, how can you make this a reality? Even if this idea is in disagreement with views of more senior members of the team. (09:35)
How experienced people should be supportive in healthy working environments. And how staff/principal engineers often will step out of projects, when things are looking good, moving on to the next, most challenging thing in the organization.
Why is autonomy important for software engineers? (14:00)
And why software engineers are non-productive at places, which are hierarchical and they are treated as replaceable resources (and often called "resources").
Taking ownership of your career: why it's important and what can I do to get in control? (16:10)
Stepping back: before you decide to change companies, why it's important you take ownership of your career and vocalize what is important for you and where you want to go. A story about how I changed teams because I didn't like my manager... to not like my manager at the next team either. And realizing that I was expecting both my managers to read my mind and help me reach my career goals that I never told them.
- Goals. Have an honest conversation with yourself on your goals, write these down and share them with your manager. Your manager will try to create opportunities for you to grow.
- Creating opportunities. Instead of just waiting on your manager to create opportunities to work towards your goals, create these yourself. Step out of your comfort zone and volunteer to do some work that is challenging. Pick up work that might not be as fun or shiny, but the work that no one else wants to do, but is important.
- Get to know your professional self. What are things that motivate you, what are things that demotivate you?
As a manager, how can you foster a more collaborative environment, with more learning happening? (23:20)
- Get to know people on your team. Spend time with people and get to know people's background and motivation.
- Help people grow. Give actionable feedback - both positive and constructive.
- Mentorship and coaching. Mentor people and find mentors for them: engineers mentoring other software engineers is also a fantastic growth tool. Coach people to grow.
Mentoring and teaching as a growth tool, as an engineer (26:15)
We talk about how teaching is an important tool to become an expert in something, while also helping others around you grow.