RailsConf 2023

Forging Your Path to Senior Developer

Forging Your Path to Senior Developer

by Ifat Ribon

In the session titled 'Forging Your Path to Senior Developer' at RailsConf 2023, speaker Ifat Ribon presents a roadmap for mid-level developers aspiring to become senior developers. The talk is designed not only for those looking to advance their careers but also for mentors and colleagues who support them. Ribon shares her journey from apprentice to principal architect at Launchpad Lab, emphasizing the importance of foundational skills and the potential for personal growth.

Key points discussed include:

  • Growth Framework: Ribon introduces a growth framework comprising two dimensions: three pillars (Technical, Problem-Solving, and Leadership) and three scales (Familiarity to Mastery, Dependency to Autonomy, and Consumer to Contributor).

    • The Technical Pillar focuses on mastering syntax, code writing, and executing features.
    • The Problem-Solving Pillar emphasizes learning patterns, recognizing similarities in problems, and increasing complexity.
    • The Leadership Pillar advocates for sharing knowledge, mentoring, and contributing to the development community.
  • Case Study of Andy: Ribon illustrates these concepts through a fictional mid-developer named Andy, detailing her evolution from junior to mid-level. She discusses how Andy receives guidance, incorporates feedback, and gradually transitions from dependency on others to working more independently.

    • As a junior developer, Andy's focus was on producing functional features through guided tasks, where she often relied on more experienced developers for direction.
    • As she gains experience, her technical proficiency, problem-solving abilities, and leadership skills grow, allowing her to contribute to projects with increasing confidence.
  • Reflection on Growth: The talk highlights that growth is not linear; it may occur in spikes across different skills. Ribon reassures attendees that previous foundational work remains useful at every step of their career.

  • Future Growth Beyond Senior Level: Ribon discusses paths that can be pursued after reaching senior developer status, such as technical leadership roles or individual contributor positions, emphasizing that personal interests will guide these paths.

In conclusion, Ribon encourages developers to recognize their strengths, set goals, and embrace opportunities for knowledge sharing. The journey from mid to senior developer is not just about technical skills but also about contributing to and leading within the developer community.

00:00:19.279 Thank you, everyone, for coming in today to the talk "Forging Your Way to Senior Developer." This talk is going to be about how to take the next step from being a mid developer to a senior developer.
00:00:26.220 It’s really geared towards both developers in the room who might be in that position looking to move forward, but also for coaches and colleagues who might want to help someone else get to that position.
00:00:37.079 A little about me: My name is Ifat Ribon, and I'm a principal architect at an agency called Launchpad Lab. We're a digital product agency based out of Chicago.
00:00:48.719 I actually started as an apprentice at Launchpad Lab and have gone through this incredible journey to reach the technical leadership position I'm in today.
00:01:00.000 In today's talk, I'm going to share both my experiences as I grew through those levels and the conversations I've had over time, including my work on developing our career ladder at Launchpad and discussions with others in the industry.
00:01:11.159 So let's talk a little about the map for our journey today.
00:01:18.119 We'll start by laying a bit of a foundation so we have a good guide for the steps we’re going to walk through. From there, we’ll follow the footsteps of a developer.
00:01:28.860 When we meet her, she’s a mid developer, but we’re going to explore how she got there to understand the foundational skills that will carry you forward.
00:01:41.040 Then we’ll take a bit of a rest and reflect on that journey before we plan for the next steps toward reaching your goals of becoming a senior developer.
00:01:54.000 We’ll wrap up with a discussion about what might be even beyond that.
00:02:05.040 To start us off with a bit of guidance, we’ll talk through a growth framework.
00:02:10.380 This growth framework is composed of two dimensions. The first is what we call the three pillars: a technical pillar, a problem-solving pillar, and a leadership pillar. These represent a set of competencies that developers will build throughout their careers.
00:02:24.360 The technical pillar is probably the one you’re all most familiar with. It includes understanding syntax, writing code, and executing features.
00:02:37.920 The problem-solving pillar is a bit more abstract, focusing on learning patterns, approaching different kinds of problem sets, and recognizing their similarities.
00:02:49.860 Ultimately, this pillar enables you to work in greater ambiguity. Finally, the leadership pillar, or what you could consider a stewardship pillar, is about sharing your experiences and supporting others through coaching and mentoring.
00:03:02.280 It involves creating and consuming content, and contributing to or maintaining tools and libraries that help developers.
00:03:14.280 In addition to the pillars, the second dimension consists of three scales that span across the pillars.
00:03:26.700 The first scale addresses familiarity versus mastery: moving from learning a language to becoming proficient, and ultimately achieving mastery.
00:03:41.099 Next, there’s a dependency scale that looks at moving from requiring significant guidance and mentoring to working with others with greater autonomy.
00:03:53.220 Finally, the third scale is about advancing from being a consumer of information to sharing and promoting information broadly.
00:04:04.680 As we continue on this journey, we’ll examine how a developer can level up in each of the pillars and think about their progress across these scales.
00:04:16.919 So, let’s meet our developer, Andy. We’re first meeting her as a mid developer. She completed a boot camp two years ago and got her first junior developer job at a company called Buttercup, a cupcake kit meal delivery service.
00:04:27.660 Andy loves diving into tasks, figuring things out with her teammates, and learning and growing from those around her. Let's reflect on how Andy started her journey as a junior developer.
00:04:41.040 As a junior developer, Andy really started at base camp, at the lower end of each of the pillars. She lived in that area of familiarity with syntax and certain problem sets, working through structured tasks.
00:04:53.880 Andy consumed a lot of content; she loved reading blog posts and listening to conference talks, soaking it all in as she began working at Buttercup.
00:05:06.720 She started building competencies in each of those pillars, beginning with the technical pillar. As a junior developer, Andy was focused on getting features to work. She would write code, test it in the console or the web browser, and submit a PR, receiving feedback on issues like syntax.
00:05:24.360 Over time, through this feedback, she improved the quality of her code. Andy was also dedicated to learning conventions and patterns in the community.
00:05:40.800 She spent a lot of time learning Ruby on Rails conventions and how to organize code by leveraging examples from others. With time, she began to apply design principles independently.
00:05:55.920 Initially, Andy executed very small feature tasks or bug fixes, but as she gained experience, she was able to handle mid to larger feature sets with less guidance.
00:06:09.960 As Andy became proficient with Ruby syntax and practiced common patterns, her technical competency grew. Moving on to the problem-solving pillar, Andy spent her early days solely focused on solving immediate problems at hand.
00:06:24.420 She tried to understand how her features fit into the larger picture, which required her to recognize the interconnections between her work and that of others.
00:06:38.520 However, early in her journey, Andy tended to overlook common edge cases. For example, when tasked with creating a pausing feature, she spent a lot of time designing a complicated calendar UI.
00:06:54.000 A senior developer offered a simpler solution: just let users pause the feature and come back when needed. This insight helped Andy recognize the importance of simplicity.
00:07:10.380 As she progressed, she began to identify common problem sets, such as running background jobs, understanding data flow, and recognizing various patterns in feature sets.
00:07:25.140 With this knowledge, she learned to leverage solutions based on past experiences and the guidance of her colleagues.
00:07:38.640 Under the leadership pillar, as a junior developer, Andy often paired with more experienced developers, where she primarily absorbed knowledge.
00:07:50.820 However, as she grew, she began pairing with peers and even became the driver in some sessions, explaining new conventions she had recently learned.
00:08:05.580 Andy was also actively consuming content at all levels, from tutorials to attending talks. As she continued to gain experience, she started to produce her own content.
00:08:19.440 At Launchpad, we hold lunch and learns and developer committee presentations, which encourage developers of all levels to share what they’ve learned.
00:08:34.680 Andy spent time learning tools and libraries, including an internal tool used at Buttercup, and opened PRs to address issues she discovered.
00:08:49.740 As she contributed back to the tools and collaborated with peers, Andy began to embark on knowledge sharing.
00:09:05.040 Next, let’s take a moment to reflect on the journey Andy has taken. She has leveled up her technical proficiency, improved problem-solving skills, and started engaging with her community.
00:09:16.140 Although we discussed each pillar linearly, in reality, they grow at different rates and sometimes regress.
00:09:30.060 As you gain experience, you will likely find moments of growth and regression in these areas.
00:09:43.620 You may be wondering what about those skills I mentioned earlier? Throughout this journey, we’ve explored how Andy progressed her Ruby proficiency.
00:09:57.120 We also saw that she moved from a place of high structure and guidance to working more independently, along with growing from a content consumer to a contributor.
00:10:09.840 Now we need to consider what’s next on this path. For some, reaching the senior developer role may seem daunting.
00:10:22.320 It's important to recognize that the foundations and skill sets you've worked on will carry you forward.
00:10:34.440 So let’s dive into the technical pillar again—when we left Andy, she was improving her code quality.
00:10:44.520 She started writing more elegant code and, as her efficiency improved, she began to understand performance considerations.
00:10:56.280 Andy was able to apply design principles effectively, and now she had the opportunity to create some of her own.
00:11:08.520 As she graduated into more complex coding tasks, she gained proficiency working with larger features, often leading initiatives.
00:11:20.520 This level of mastery requires a deep understanding of code and the ability to produce solutions that expose any unknowns.
00:11:32.640 Shifting gears to the problem-solving pillar—all of you know where we’re heading. As you grow, it becomes crucial to see the larger picture.
00:11:46.560 You might find yourself in a position to break down bigger projects and facilitate collaboration among team members.
00:11:58.440 This involves strategic decision-making, such as prioritizing features for the client based on impact or addressing risk.
00:12:11.760 As you get comfortable, you will start to recognize the patterns that develop throughout different feature sets.
00:12:24.840 You will learn to reduce known unknowns and begin asking the right questions to uncover hidden challenges.
00:12:37.860 By identifying known issues, you can develop strategies for tackling new challenges in an organized way.
00:12:50.760 Finally, on the leadership front, we previously saw Andy pairing with less-experienced developers.
00:13:02.640 As she advanced, she began acting as a coach or mentor, providing guides for junior developers while continuing to learn from her peers.
00:13:14.640 Moreover, her content creation evolved from intermittent contributions to establishing herself as a thought leader.
00:13:27.600 She started developing strategies that fostered a knowledge-sharing environment within her team and community.
00:13:39.240 Now, let’s circle back to the idea of conducting a reflective pause. Recognizing your accomplishments can motivate you to continue growing.
00:13:54.000 As we continue progressing, you will begin to recognize your expanding influence and the value you bring to your team.
00:14:06.360 Once you reach senior developer status, it’s essential to understand that your journey doesn’t stop there.
00:14:18.360 The path to further advancement is often recognized as the technical leadership route.
00:14:28.920 As developers progress, they may discover specific passions within the different pillars, like technical expertise or project stewardship.
00:14:39.840 You don’t need to master every aspect; rather, embrace the path that resonates with your interests and skills.
00:14:51.660 For instance, the technical path often involves roles like individual contributor and can lead to titles like staff engineer.
00:15:01.920 Alternatively, those who excel in problem-solving may gravitate towards roles such as principal architect.
00:15:14.640 If leadership is your calling, consider opportunities such as team lead or even engineering manager roles.
00:15:26.460 It’s important to stress that just because you choose one path, it doesn't block you from exploring the others.
00:15:39.240 All these paths can—and frequently do—intersect, allowing you to gather diverse experiences and insights.
00:15:53.760 As we conclude, thank you so much for attending today. I truly enjoyed discussing this topic, and I welcome any further questions you might have.
00:16:09.360 Happy to take questions live!
00:16:26.220 Yes, that’s a fantastic question! The concern is about time balance: as you work on one pillar, you may feel another is being neglected.
00:16:36.780 For many in the community, those less represented often fill gaps in areas outside their main interest.
00:16:44.760 You might be spending significant time in leadership advocacy, while feeling your technical skills suffer.
00:16:56.040 I recommend leveraging your transferable skills. For instance, both advocacy and technical roles require asking good questions and effective communication.
00:17:08.760 By recognizing how those skills apply across various pillars, you can use your time more efficiently and build your knowledge base.
00:17:23.520 Thank you all so much! I greatly appreciate your attention today.