RailsConf 2015
Burn Rubber Does Not Mean Warp Speed

Burn Rubber Does Not Mean Warp Speed

by Bree Thomas

In the talk titled "Burn Rubber Does Not Mean Warp Speed," Bree Thomas addresses the challenges faced by junior developers, particularly related to the fast-paced nature of modern developer training and the ensuing pressures of imposter syndrome. She shares her journey transitioning from a marketer to a developer and reflects on her experiences with apprenticeships. Bree emphasizes that the focus on speed in learning and productivity can hinder meaningful progress. Her main points include:

  • The Scariness of Developer Apprenticeships: The fast-paced nature of many training programs creates unrealistic expectations, and the lack of quality standards contributes to anxiety among junior developers.
  • Historical Context of Apprenticeships: Bree explores the history of traditional apprenticeships, noting the extensive time and commitment required in past practices, contrasting it with the short timelines of modern developer apprenticeships.
  • Misconceptions about Coding: Learning to code is often misrepresented as a quick process, which can diminish the understanding that mastery of coding is a long-term commitment involving hard work and continuous learning.
  • Assumptions in Apprentice Relationships: Assumptions made by both employers and apprentices can lead to misunderstandings and detrimental outcomes.
  • Measurement and Progress: The talk highlights the pitfalls of a one-size-fits-all measurement approach in evaluating apprentices, advocating for more personalized tracking of progress and contributions.
  • The Importance of Mentorship: Bree stresses the need for structured mentorship and ongoing support throughout the apprenticeship journey, as well as the need to view apprentices as whole individuals beyond just their coding abilities.
  • Practical Solutions: She suggests extending apprenticeship periods to two years and treating the apprenticeship as a product, focusing on fostering an environment conducive to learning and growth.

In conclusion, Bree encourages a shift from pursuing rapid learning to fostering a rich, supportive environment where all developers can thrive, emphasizing that true mastery in the field of software development transcends mere coding skills and requires a holistic understanding of the craft and business.

00:00:12.080 Hi, my name is Bree Thomas, and I'm going to go ahead and get started. I am really happy to be here today. I haven't been to Atlanta in a very long time.
00:00:18.240 I haven't been to Atlanta since I was a kid when my parents sent me away for a summer to work on my grandfather's chicken farm. So standing here on this stage right now with all of you is a lot better than the chicken farm. A lot better!
00:00:36.079 A little bit about my professional background: I am a recovering marketer. I was in marketing and branding for ten years, and I've been clean for almost two years. I'm very proud of that!
00:00:45.680 In making that career switch, I attended a six-month intensive developer training program, and I have been formally employed as a developer for just over a year. I work at a company called Mode, a product consultancy and development firm based in Denver. I am the only one on the team with less than thirteen years of experience, and I'm also the only woman on the team.
00:01:09.680 While that may sound daunting some days, they are an extremely supportive team, and I count myself extraordinarily lucky to be learning from masters of the craft. I also run the Denver chapter for Girl Develop It, helping to bring affordable, judgment-free professional software education to women, which I really enjoy.
00:01:45.680 I swear this is the last logo slide; some habits die hard! I've been in exactly two apprenticeships since I graduated from the training program, and as a newbie, the subject of developer training and growth is very near and dear to my heart.
00:02:01.680 But I find apprenticeships in our industry to be a little on the scary side, quite frankly. Not just for the apprentice! And that's what I want to talk about today: specifically, what is so scary about developer apprenticeships, what's missing from them, and at the end of the day, what's important? What should we value in our apprentices and in our apprenticeship programs?
00:02:24.720 My hope is that you'll leave here today with some fresh perspectives and a few ideas. But first, I want to take it back a little bit and talk about the inspiration for this talk because, also near and dear to my heart, are '80s movies. The title, "Burn Rubber Does Not Mean Warp Speed," was inspired by an '80s cult classic, The Lost Boys.
00:02:49.040 So, I just wanted to take one minute of your time to share that relevant scene with all of you.
00:03:09.599 In the scene, a kid named Sam is trying to save his brother and friends from a gang of vampires. As nightfall approaches, the Frog brothers are screaming at him to hurry up, and he just saw a pack of vampires in real life. In the chaos, he nearly drives them all off a cliff, and in that moment, he screams, "Burn rubber does not mean warp speed!" It's like saying, "Hey dudes, I’m going to get us out of here, but warp speed is not necessarily my tempo and is not in the best interest of saving all our butts right now!
00:03:56.960 I like to apply this cheeky movie line as a mantra and metaphor; working hard, being passionate, and being committed (or being scared shitless, for that matter) do not necessarily add up to an ability to move at a predetermined speed. That speed is not necessarily the prime indicator of progress, success, or in extreme cases, survival.
00:05:04.560 Yet, while I was learning to code in my developer training program, and also through both of my apprenticeships, I found myself supremely focused on how fast I was moving—was I coding fast enough? Was I learning fast enough? Oh my gosh, what happens if I don't know all the things by the deadline? What happens if I don’t know all the things; does that mean I'm not cut out to be a developer?
00:05:55.680 It took about ten months post-graduation from my developer training program to chill out on some of that anxiety. And mind you, this is not because I have become a coding sensei, but because I found comfort in the value I was able to bring outside of my hard coding skills. I have a background in marketing, law, and client management, which enabled me to contribute effectively in various areas, both inside and outside of the code.
00:06:45.520 Additionally, I found peace with myself in the rate at which I was learning and the things I needed to do as an individual to foster that learning. It was a tough road getting to that point, often fraught with doubt and sometimes a crippling fear to even write more code or speak up about my thoughts and feelings.
00:07:07.759 This journey of self-realization over the last year made me want to reflect and talk to my teammates and some other apprentices about how developer apprenticeships are perceived, how they’re structured, and how they’re managed.
00:07:30.080 Whether we as an industry might be missing some key opportunities to improve apprenticeships, so to get that conversation started, I did a little bit of research. An apprenticeship is the system of training a new generation of practitioners of a trade or profession, typically with an on-the-job training approach usually mixed with some kind of formal study.
00:08:30.000 Traditionally, apprenticeships would also lead to the procurement of a license in a regulated profession. It's a system by which many apprentices launch their careers as most of the training is done while working for an employer who invests in the apprentice in exchange for continued labor for an agreed-upon time after the apprentice has achieved competencies defined in the program.
00:09:07.680 The system was first developed in the late Middle Ages and supervised by craft guilds during that time. A typical apprentice spent about seven years in this phase, and they were compensated well enough that they could live reasonably, but their compensation was not extravagant. Following the apprenticeship phase, one would typically advance to the journeyman phase.
00:09:31.440 A journeyman is someone who has completed an apprenticeship and is fully educated in their trade or craft, but not yet a master. Back then, journeymen often had to accomplish a working trip that lasted three years or life, traveling and gaining experience while working with different masters.
00:10:07.440 The final phase of becoming a master was never guaranteed. A journeyman had to submit a masterwork to a guild for evaluation and be admitted into the guild as a master craftsman or tradesman. In the European guild system, only masters and journeymen could be members of the guild.
00:10:44.960 An aspiring master had to pass through the career chain from apprentice to journeyman before they could be elected to become a master craftsman. This process included producing a sum of money and a masterpiece in order to gain membership in the guild. If the masterpiece was not accepted, they might remain a journeyman for the rest of their lives. I chose this picture because I believe that you know you've arrived at being a master when you can drink and smoke while executing your craft.
00:11:33.520 This delving into the history of apprenticeships got me thinking about modern apprenticeships and the length of their training periods. The current Wiki definition cites that modern apprenticeships run somewhere between three to six years on average. We might be familiar with the apprenticeship periods for different professions.
00:12:10.880 For example, how long is the apprenticeship for doctors? (Just shout it out.) Seven years? Three to eight years, depending on their specialization. How about electricians? Four years. Traditional engineers? Three to five years. Tattoo artists? One to five years.
00:12:49.920 The key takeaway for me as I read about apprenticeships is that they take years; a lot of years, and they're methodical. There are specific stages, levels, hour requirements, and an application for master status and licensing. There's a commitment on both sides to that time and process, including committed time even after the formal apprenticeship is complete.
00:13:13.120 If we circle back to developer apprenticeships and what is so scary about them... I think it starts with speed. I believe the apprenticeships in our industry are scary because speed originates in many modern developer training programs, growing at a prolific rate.
00:13:46.560 Everywhere you look today, there are more books, online programs, schools, and bootcamps claiming to turn you into a developer fast — to the tune of 24 hours, ten weeks, three months, or six months. Also frightening is that, unlike doctors, engineers, and electricians, there's no licensing body or standards for the quality of the curriculum or the quality of student these programs produce.
00:14:03.680 Let’s consider formal developer apprenticeships: Post-grad, it's often three to six months, and if you're lucky, you might find one that lasts a year. The vast majority run at three to six months, with very few stretching to a year or longer. Even more terrifying is the limited number of apprenticeships available. Many employers hire graduates as fully qualified developers right out of these programs.
00:14:53.680 What's concerning to me about the speed in this context is that it promotes some dangerous misconceptions about our craft. It gives the false impression that learning to code is fast, and fast is easy—and because it's fast and easy, it's clearly a finite endeavor. Just something you check off the list and go start collecting a paycheck.
00:15:12.320 But as developers, we know that what we do is not trivial. The learning is hard and infinite. Mastery takes years — to the tune of ten years at least. Devoting your life to building great software requires passionate commitment, patience, and conviction.
00:15:52.080 Another scary aspect of developer apprenticeships involves assumptions. David Brin, a scientist and science fiction author, said that throughout history, the worst mistake made by individuals on both sides of every new encounter has been the unfortunate habit of making assumptions. It often proved fatal. I might have a slight flair for the dramatic because I don't think any of the assumptions I’m about to share have been fatal, but they are important and often overlooked.
00:16:58.240 Some assumptions made by employers include: assuming that apprentices will be vocal and open, which is not always true; and that by virtue of being senior developers, they're well equipped to teach junior developers. However, junior apprentices might assume that upon graduating from a modern training program, they are immediately employable, handsomely compensated, and not anything like an apprentice.
00:17:47.080 Additionally, there's the assumption that advancing through levels of developer status—apprentice to junior, and from junior to senior—is well-defined and common throughout the industry, which is not the case. Left untreated, these assumptions can be dangerous, resulting in a pit that one must dig out of.
00:18:45.440 What are some potential consequences in this pit? A young developer making the wrong job choice due to the promise of a higher title or salary, only to end up in an environment set up for failure. Or employer frustration because progress isn't meeting expectations, compounded by a lack of insight into why that might be.
00:19:14.120 There can also be confusion and anxiety about where and how an apprentice fits into the larger team. Another scary thing is measurement. While measurement itself isn't scary, a one-size-fits-all approach to measuring apprentices can be. Creating a standardized plan with specific milestones and skill set bars on a strict timeline, then expecting each apprentice to succeed precisely as it was written, is likely to lead to disappointment.
00:20:32.080 Each apprentice is different and may have their own learning style, strengths, and weaknesses. Therefore, we should be wary of an inflexible one-size-fits-all approach in an apprenticeship program. Hard coding skills are important, but if they're the only criteria by which we evaluate our apprentices, we're failing to consider other significant factors.
00:21:03.680 For example, can they integrate effectively with our team? Do we like them? Do they like us? Are they creative thinkers? Can we relate to them personally? Are they happy when they come into work every day? And how would we even know?
00:21:47.520 Additionally, we should consider the other professional skills that apprentices can offer from their respective backgrounds. Take me, for instance; I bring marketing, client management, and legal expertise, which add value to the team outside of the code base. This has proven critical in our business relationships.
00:22:35.360 When considering the value of an apprentice, it's essential to think beyond hard coding skills. Another scary aspect relating to measurement in developer apprenticeships is follow-through. There are many instances where we set out to measure progress but don't follow through. It's often a case of the best-laid plans going awry.
00:23:34.080 At the start of apprenticeships, there's lots of energy around check-ins and scheduled mentorship, along with individual projects, reading time, and opportunities to learn. Then work happens. The apprentice may begin producing, and both employer and apprentice lose sight of the apprenticeship process.
00:24:36.720 Now they have someone delivering work, and the focus shifts because everyone is so busy. What's the point? An apprenticeship is just on-the-job training, right? But now both employer and apprentice have lost a platform to evaluate progress, contributions, and growth in a meaningful way.
00:25:12.000 So, what's scary about developer apprenticeships? Sending apprentices out the door like fast food, failing to address assumptions on both sides, and neglecting to measure the right things at the right time.
00:25:37.760 What's missing from apprenticeships in our industry is the mindset of learning a profession versus merely learning a skill. Many developer training programs can give people skills, but becoming a successful developer is about learning the profession, which involves more than just bulking up coding skills quickly.
00:26:53.440 It's about taking the time to mentor apprentices around interpersonal skills, cross-functional team dynamics, and understanding the business of building software. We also lack the time to just be apprentices. The pressures of billability are real, whether you're at a product company or a consultancy.
00:28:08.840 Yet, so many apprenticeships are not structured for any long-term commitment. Just like structuring a relocation package, we should seek mutually beneficial long-term commitments between the parties involved.
00:29:19.840 This means promising something longer than six months, allowing both sides to focus on what's vital in the program while providing predictability regarding the employer's return on investment.
00:29:44.000 Another critical missing ingredient is investing in mentors as teachers. Simply having a team of seniors does not mean we have a team of teachers. We need to ensure that our team members have the tools to mentor effectively.
00:30:16.640 Moreover, the ability to structure a curriculum that fits individual needs and achieves requirements is essential. Teaching as a formal skill set is missing from some apprenticeships, so we must invest in our mentors as teachers.
00:30:57.440 What's missing from apprenticeships includes the mindset that programming is more than just writing code, allocating time to be an apprentice, and investing in mentors as formal teachers.
00:31:24.800 What’s important in developer apprenticeships is an agile approach. Similar to how we approach software development, we should employ an agile methodology in our apprenticeship programs.
00:32:13.679 Start with key stakeholders: mentors and apprentices. Discuss the goals and measures of success, understand the risks, and align on all the significant aspects of the program.
00:33:04.560 A mutual and clear commitment to the goals is critical for success, along with diligence in the process. Regularly hold planning meetings to talk about successes and what fell short. This will allow us to adjust our mentoring and expectations as we gain insights into each apprentice.
00:33:47.920 Use retrospectives effectively to be honest about mentor and mentee pairings, and address expectations and issues to protect the apprentice's goals, the employer's goals, and the program's goals.
00:34:16.799 The relationship must be a two-way street. While apprentices should exhibit self-directed study and immerse themselves in learning, the apprenticeship's success cannot solely rest on the apprentice. Apprentices need to understand their significance to the business.
00:34:49.920 When an apprentice feels valued, it positively influences their performance. Sharing an employer's commitment to their development is crucial, equating the learning investment with transitioning into a billable developer role.
00:35:23.839 Measuring the whole apprentice is essential for helping them gain confidence as they develop their coding skills. Personally, I found that being able to contribute outside of coding significantly eased my anxiety around code skills.
00:35:55.680 Remember to consider everything that adds value to an apprentice: coding skills, creative problem-solving, and personality. Lastly, time is an important factor. Burn rubber does not mean warp speed.
00:36:35.840 As I worked on this talk, I asked developers and apprentices if they believed it was possible to reach senior developer status within a year. All of them said an emphatic no. They wouldn't even consider someone a senior until two or three years in, with many stating four to five years or more.
00:37:12.720 Why? Because there is no substitute for experience. If you've read Malcolm Gladwell’s Outliers, you know that all the greatest athletes and musicians have one thing in common: deliberate practice and the sufficient time to master their craft.
00:37:56.080 Consider the medieval apprenticeships lasting seven years, followed by three years as a journeyman before they could even apply to become a master. Modern apprenticeships in coding are often very short, sometimes less than a year.
00:38:32.240 Why is the length of apprenticeship so crucial? As an apprentice, why would I prefer a longer apprenticeship over a short one? Getting the bump in title usually means a bump in salary... so why waste years? Conversely, for employers, why invest in potential years over months?
00:39:20.560 It’s because learning to play the notes on an instrument is not the same as being a musician. Learning the basics is just the first hurdle. Real mastery requires time spent applying those skills and integrating the intangible elements of creativity and communication.
00:40:27.120 The relationship between employer and apprentice should focus on building a better developer—one who can autonomously contribute and seamlessly integrate into any team. This developer should extend beyond mere task execution to exhibit thought leadership and creative problem-solving.
00:41:12.560 A well-rounded developer apprentice is a valuable asset, someone capable of writing their ticket almost anywhere. An employer who fosters this type of apprenticeship is well-positioned to retain that talent for the long term, which is definitely worth the investment.
00:41:53.680 To summarize what I've discussed: what's scary, missing, and important in developer apprenticeships. I hope that some of this provides fresh perspectives, but I also promised you ideas.
00:42:27.360 Here are a few thought starters that I brainstormed with my team. If any strike you as too radical, I hope they'll at least plant a seed for creating or enhancing your apprenticeship programs.
00:43:31.520 First, structure your apprenticeships for two years. Pay the apprentices well, but you don’t have to be excessive. If you want to provide a pay increase after six months or a year, great, but don't change their title. Keep them classified as apprentices for two years, with an option for them to reapply for an extended apprenticeship after completion, or if you feel they're ready, let them start working off their owed labor.
00:44:41.679 Additionally, treating your apprenticeship program like a product is important. Make sure your team knows that mentoring is part of their job. Equip them with the necessary tools and support to succeed as mentors.
00:45:15.920 Consider hiring teachers to assist your senior mentors. Lots of teachers have summers off and would likely be interested in making consultant rates for workshops with your team. They don't need to be developers necessarily but should understand how to effectively engage with various learning styles.
00:45:39.920 Incorporate the concept of a journeyman stage into your apprenticeship program, but focus it internally. For example, have apprentices traverse various teams or departments if applicable, encouraging skill development beyond just coding.
00:46:32.640 If you work for a large product company with multiple development teams, give apprentices time to explore different dynamics and determine where they best fit. If you're in a small consultancy, include them in meetings and areas that don't just center on programming, such as design, research, and testing.
00:47:09.120 A well-rounded apprentice can evolve into a highly valuable developer.
00:47:22.720 Thank you.