Ruby on Rails

Summarized using AI

Staff Engineer: “Here be dragons”

Alexandre Terrasa • November 13, 2022 • Houston, TX

In his talk "Staff Engineer: Here Be Dragons" at RubyConf 2022, Alexandre Terrasa, a Staff Engineer at Shopify, explores the ambiguous and less-charted waters of the staff engineer role, which can feel daunting compared to the clearer paths from junior to senior engineer positions. Terrasa emphasizes that while junior and senior engineering paths are well-defined, the transition to a staff engineer—much like uncharted territories marked by "Here Be Dragons" on medieval maps—comes with uncertainty regarding responsibilities and expectations. He seeks to demystify this career progression by discussing the staff engineer's role, responsibilities, and impact on teams and projects.

Key Points Discussed:

  • Career Path Overview: The journey from junior to senior engineer is typically straightforward, focusing on skill development and individual contributions. However, advancing to staff engineer introduces ambiguity and a need for broader impact.
  • Technical vs. Management Track: Engineers often face a choice between technical leadership (staff engineer roles) and management positions. Staff engineers engage in leading teams, identifying problems, and shaping project directions without necessarily assuming management responsibilities.
  • Responsibilities of Staff Engineers:
    • Leading technical direction for teams and maintaining high engineering quality through practices like code reviews.
    • Mentoring team members and fostering a culture of growth, including organizing one-on-ones for feedback.
    • Engaging in strategic planning and alignment with higher management to set technical priorities.
  • Role Evolution: As staff engineers, coding becomes less frequent as responsibilities shift towards leadership and strategic problem-solving. The time allocated to coding varies based on company focus and project requirements.
  • Long-term Vision: Aspirants to the staff engineer role should consider what they truly want, seek mentorship, and align their vision with their organization's needs. It’s also critical to secure a sponsor who can advocate for them in their career development.
  • Embracing Challenges and Mistakes: Terrasa highlights that accepting mistakes and collaborating with the team to find solutions is critical to fostering a positive work environment.

Conclusions and Takeaways:

  • The staff engineer role is pivotal in bridging individual contributions with team leadership and strategy.
  • It is crucial for aspiring staff engineers to engage with current staff engineers for insights, prioritize high-impact work, and develop the necessary skills for long-term advancement.
  • Building networks and seeking mentorship are essential for growth in this challenging yet rewarding career path.

Overall, Terrasa encourages engineers to navigate their journeys thoughtfully, recognizing that becoming a staff engineer is not solely about technical prowess but also about leadership, mentorship, and strategic thinking.

Staff Engineer: “Here be dragons”
Alexandre Terrasa • November 13, 2022 • Houston, TX

“Here be dragons”: this is how uncharted areas of maps were marked in medieval times. Today, while the journey to become a Senior Engineer is known territory, being a Staff Engineer appears full of dragons. Together, let’s demystify what leading beyond the management track really means.

RubyConf 2022

00:00:00.000 Ready for takeoff.
00:00:17.279 Hi, RubyConf! Last stretch before lunch. Are you as excited as I am?
00:00:26.100 Okay! Hi everybody and welcome to the talk titled "Staff Engineer: Here Be Dragons." My name is Alexandre Terrasa, and I am a Staff Engineer at Shopify. You can reach me by email because I'm an old person, apparently.
00:00:30.840 We're hiring, so if you're interested in what we're doing and want to have a chat, please come join us at the booth after this talk.
00:00:37.559 I'm a member of the Ruby and Rails infrastructure team, working with some amazing people. Together, we tackle projects like the Ruby language, the Rails framework, ygit, trophy, the Ruby syntax tree, and the Ruby LSP. This talk is about dragons, and specifically about what 'Here Be Dragons' means.
00:01:07.860 In medieval times, uncharted areas of maps were marked with 'Here Be Dragons' to indicate zones where people had yet to explore. While paths like junior to senior engineer are well-defined, the role of a staff engineer feels more elusive and filled with uncertainty—much like those dragons.
00:01:29.520 As I began my career as a junior engineer and progressed to senior engineer, the paths seemed clear, but stepping into a staff engineer role became daunting. It wasn't immediately clear what was expected of me or what my responsibilities would entail. That's why I wanted to give this talk: to help demystify the role and clarify what it means to lead beyond the management track.
00:02:29.880 I want to clarify that I do not claim to be an authority on this matter, nor do I consider myself a great staff engineer. There are individuals from my team here today, so I hope to be honest and share insights based on collective experiences.
00:02:55.500 For this talk, I consulted senior colleagues, staff engineers, and other team members. I want to thank everyone who helped me understand their experiences, share their perspectives on this position, and answer the questions I've been asking over the past few weeks.
00:03:12.960 I also want to highlight two excellent resources: 'Staff Engineer' by Will Larson and 'Staff Engineers Part' by Tanya Raley. I encourage you to read these if you're curious about becoming a staff engineer or if you're already in that role. They provide valuable insights into what it means to be a staff engineer.
00:03:49.920 To better understand what staff engineers do, let's briefly review the journey from junior to senior engineer. It usually starts with a junior engineer position, perhaps right out of university or from a different background. At this level, the goal is to level up your craft; you contribute to projects and ship code with many oversights while taking direction from more senior engineers.
00:04:30.420 As we grow and progress, we reach the engineer level, where we continue honing our craft but collaborate more with the team. We apply best practices learned from more experienced colleagues and start shipping code more independently. However, the impact we have at this level is still primarily individual.
00:05:02.940 Eventually, we become senior engineers, trusted experts of the code we work with. We require less oversight and better understand the long-term impacts of our technical decisions. We contribute to new technical patterns and hold our peers accountable for adhering to those patterns. At this stage, our impact shifts from being individual to influencing our peers and the broader team.
00:05:56.700 In most companies, the title of senior engineer is considered the peak career level. It is the highest position that most engineers will achieve without making a shift to management. While it's generally important to progress quickly from junior to senior roles, there are no expectations to advance beyond senior engineer.
00:06:55.140 But what if you want to go further? You typically face the choice between the management track—engineering management—and the technical track—technical leadership. The management track includes the positions of engineering manager, senior manager, director, and VP, focusing on performance reviews and career progression.
00:07:47.280 If you're not inclined towards management, you might consider the technical track, which includes levels such as staff engineer, tech lead, architect, senior engineer, principal engineer, and distinguished engineer. Today's discussion will center on the staff engineer level, where many find themselves grappling with ambiguity.
00:08:56.400 The issue with the role of staff engineer is that it may not be present in all companies, which depends on the organization's maturity. Statistically, there are fewer staff engineering positions compared to senior engineers, resulting in less guidance available through articles and resources.
00:09:54.840 Historically, the title of staff engineer likely originates from the British Navy's establishment of naval engineers when steam engines were introduced. In 1885, the most senior chief engineers received commissions as 'staff' with ranks equivalent to lieutenants in other branches, indicating experience of 8 to 15 years in the field.
00:10:44.720 The term 'staff' itself comes from the German word 'stab,' designating a group of military officers assisting a commander in decision-making. Today, staff engineers lead teams (squads or clusters), identify technical problems, and create impactful solutions. They align the technical direction of ambiguous projects while developing team processes, tools, and the codebase to improve throughput and engineering quality.
00:11:24.840 Their impact level shifts from individual contributions to team-wide growth. As Rose Wigley, a senior staff engineer at Shopify, succinctly put it: a senior engineer is a problem solver, while a staff engineer is a problem finder. As staff engineers, we identify strategic challenges and priorities for our companies, think ahead, and strive to anticipate potential problems.
00:12:30.180 To gain a clearer picture of what a staff engineer's week might look like, let’s visualize a standard workweek. As a staff engineer, you remain part of a team, report to an engineering manager, and participate in team rituals. Responsibilities like morning sprint planning, one-on-ones, stand-ups, and team socials still fill your schedule.
00:13:17.640 In addition to team collaboration, you set the technical direction for your team. For example, you'll schedule time for code reviews, which ensure that your team builds correct code within the right architectural context. Code reviews are essential for maintaining engineering quality and keeping awareness of team dynamics and projects.
00:14:16.560 As a trusted area expert, you’ll likely be involved in meetings—strategic planning sessions where you contribute to selecting priorities and aligning with higher management, and collaborative alignment meetings to decide the technical direction across teams. You'll leverage your expertise to enhance communication and foster teamwork.
00:15:07.140 Mentoring and sponsorship are crucial duties of a staff engineer. The best staff engineers dedicate time each week to help grow their teams and the people around them, fostering a team’s growth and empowering others to make decisions.
00:15:50.160 Back to our weekly schedule—mentoring involves organizing one-on-ones to assist team members’ growth, provide feedback on processes, and discuss ongoing challenges. It's essential to keep open lines of communication, especially in remote work settings.
00:16:49.560 Pairing is another effective tool to foster learning and sharing knowledge, which should be done across varying seniority levels. Additionally, hiring is part of growing the team. By allocating time for interviews, you can ensure that candidates from various time zones have opportunities to connect with your team.
00:17:38.940 Being a staff engineer involves ensuring your team’s success, which includes mentoring, onboarding, and sometimes taking notes or sharing the outcomes of meetings. It's essential to create and maintain effective documentation to clarify processes and systems for new team members.
00:18:25.680 Now, let's address a common question: "Do you still code?" Generally, the answer is yes, but the time allocated to coding diminishes as responsibilities increase. As staff engineers, coding efforts often become more specialized and focused rather than frequent.
00:19:07.680 Ultimately, the time allocated to various tasks as a staff engineer will evolve, depending significantly on your organization’s focus and priorities—whether it’s solving immediate challenges or refining processes for long-term successes.
00:20:03.180 As you contemplate becoming a staff engineer, first ask yourself if this is what you really want. If you prefer spending your time programming, this role may not suit you. Define your vision as a staff engineer and gain clarity about what you wish to accomplish.
00:20:43.920 Engage with staff engineers in your organization for insights about their roles. Understand what energizes you, and find the right problem space where you can provide the most impact. Prioritize high-impact, strategic work, being mindful not to take on everything by yourself.
00:21:37.920 Be a partner to your engineering manager to create an environment that fosters team growth and success. Cultivate visibility for your behind-the-scenes work, sharing updates with your team, senior management, or stakeholders as necessary.
00:22:12.840 Remember, this professional journey is a marathon, not a sprint. The challenges faced as a staff engineer could take years to resolve, so pace yourself for long-term impact rather than short-term quick fixes.
00:22:46.560 On the subject of becoming a staff engineer, it’s important to reflect on the deeper implications of the role. Being proactive in developing those skills while already contributing positively to your team prepares you for advancement when the opportunity arises.
00:23:49.020 Securing a sponsor—an individual capable of advocating for you when opportunities arise—can be a vital step in your career advancement. If your current company lacks room for growth, consider looking elsewhere where your skills may be more valued.
00:24:30.420 In conclusion, reach out for mentorship and build a network of allies in your career. Discussions about your experiences help open doors and present opportunities previously obscured. Leverage resources to aid your growth, and don't hesitate to lean on others during your journey.
00:25:14.760 For further exploration on this topic, I encourage you to visit the staffenge.com website, a treasure trove of resources. It includes insightful articles, examples, and practical advice on becoming a better staff engineer.
00:26:10.400 Thank you all for your time. I think we have a few minutes for questions. If not, feel free to find me afterward at the Shopify booth to discuss further.
00:26:43.440 As for how to cope with not solving problems yourself, it’s important to trust your team and understand that finding larger problems to solve is a critical part of your role. You need to accept that delegation empowers your team while enhancing workplace dynamics.
00:26:58.320 Building a network of staff engineers can be challenging if you work at a smaller company. To connect with others, look for opportunities both within and outside your company. Conferences and community discussions, like those on forums or podcasts, can provide rich insights and allow you to engage with peers.
00:27:50.280 Mistakes are part of the learning curve. Be transparent when you make them, accept responsibility, and focus on preventing the same errors in the future. Work collaboratively with your team to identify solutions, and ensure that your communication fosters a positive environment.
00:28:33.560 Thank you very much, everyone! Enjoy your lunch.
Explore all talks recorded at RubyConf 2022
+62