Talks

Keynote: Reflections on a Reluctant Revolution

Keynote: Reflections on a Reluctant Revolution

by Steven Baker

In his keynote presentation at Euruko 2023, Steven Baker reflects on his journey as a software developer and the creation of RSpec, a tool that transformed testing practices in the Ruby community. He begins by sharing anecdotes from his early experiences with programming, highlighting his fascination with software quality from a young age.

Baker discusses the following key themes and points in his talk:

- Early Experiences with Software Development: He recalls creating a hockey trivia game at age seven, which ignited his passion for programming and quality.

- Influence of Internet Growth: His introduction to cable internet and his innovative package management solution at a young age marked his entry into professional programming.

- Impact of Economic Development Work: As a local tech expert in Nova Scotia, Baker recognized the need for quality software in growing companies. He began teaching test-driven development (TDD) in response to this need.

- Adaptation of TDD to BDD: Through his teaching experiences and discussions with peers, he recognized a need to shift the language around TDD to better align with its practices, leading to the development of Describer.rb, which later evolved into RSpec.

- Community Response and Evolution: The launch of RSpec at RubyConf 2005 marked a pivotal moment, fostering discussions around quality software practices and BDD within the growing Ruby community.

- Collaborative Learning: Baker emphasizes the importance of community engagement, knowledge sharing, and adapting language for better understanding testing practices.

- Encouragement of Innovative Thinking: He advocates for continuous dialogue and collaboration in programming, highlighting that even mistakes contribute to collective growth and innovation.

In conclusion, Baker reflects on his experiences and the dynamic evolution of RSpec and quality development practices within the community. His call to action encourages participants to share their thoughts and innovations, fostering a culture of collaboration that can drive future advancements in software development.

00:00:11.120 All right, we're doing it live. I'm Steven Baker. About 20 years ago, I created RSpec, and I've apologized already for it. I want to talk about where it came from; there's a bit of history there, and it's been quite a journey.
00:00:20.279 So, let's start talking about ancient history because to know where these things come from, you kind of need to know where I come from.
00:00:27.880 My first piece of software that I ever wrote was a hockey trivia game on Commodore 64 BASIC and then QBasic. It would ask you questions like, 'Who's the best hockey player ever?' and of course, the answer was Wayne Gretzky.
00:00:34.040 That's when I got my first bug report because my dad played the game and he answered Bobby Orr. And he wasn't wrong. So, I had to add that feature to my hockey trivia game, and it grew and grew.
00:00:42.280 I couldn't add features without introducing bugs, and I didn't know what the hell I was doing; I was seven years old.
00:00:47.840 I became obsessed with how real programmers did this. How do people who do this for a living actually produce quality software? It turns out, most of them don't, including myself.
00:00:55.199 But I became consumed by the idea of quality and where these things come from. A few years later, when I was around 14 years old, cable internet began to come to the part of Canada where I lived.
00:01:06.200 They would bring you a cable modem, a CD with the drivers, and a branded web browser. You'd get Internet Explorer, Netscape Navigator, and the throbber would be branded for the cable company.
00:01:12.119 When they came to my house to install cable internet, I was working at the cable company at the time, doing sales as a 14-year-old.
00:01:18.680 They gave me a really old version of Netscape Navigator, and I was offended because this was during the Browser Wars, when we were getting new versions of browsers all the time.
00:01:24.920 So, they gave me this outdated version, and I thought, 'This is stupid. Why don’t you just use the fast internet to download my web browser?'
00:01:30.439 So, I cracked open Visual Basic and Visual C++, and I wrote a package manager that would install the cable internet drivers.
00:01:35.479 Then, it would use the fast cable internet to download your web browser and install the cable company's logo into it. I thought it was really cool.
00:01:42.799 I showed my boss, and I said, 'Hey, look, it fits on a floppy disk!' He asked me how much it cost to make CDs, and I said I didn’t know.
00:01:50.200 He said, 'A lot! Please come to the office.' So, I got on the bus, took a box of floppy disks with my source code, and printed out all the documentation I wrote.
00:01:57.960 I was finally going to meet a real programmer who would tell me all the things I did wrong and how to do it better. I was eager to learn.
00:02:04.280 I went to a meeting in a downtown office with about five or six executives from the cable company, and I said, 'Hey, I did this thing, and it fits on a floppy disk.'
00:02:11.480 They asked how much money I wanted, and I said, 'I don't know, I just wanted to meet a real programmer, and I really want a new computer.'
00:02:17.040 So, they gave me $1,000. I was officially a real programmer, and it was the first time I was exploited.
00:02:23.879 So then, on the internet, nobody knows you're a 14-year-old boy. They'd better not.
00:02:29.200 This meant I could find work online, and I have been working in this industry since I was 14, which is now 26 years.
00:02:37.800 I became obsessed with quality and how to improve our practices. I was also involved in free software, and at one point, I was the youngest Debian developer.
00:02:44.440 I started off as a Stallman-loving free software hippie. Yes, I use a Mac, so I'm complicated.
00:02:55.520 My first real job, where I didn’t work from home, was in economic development. Economic development is what we do in many communities in Canada.
00:03:02.479 If a large industry leaves, the government puts in agencies to increase economic activity.
00:03:07.560 When I was 18 years old, I became the local tech expert for the Annapolis Valley region of Nova Scotia.
00:03:14.599 I helped businesses start, including software companies. Whenever someone needed assistance hiring, they came to me, an 18-year-old punk kid.
00:03:20.120 I realized that many of those companies needed help with quality, and I was studying that.
00:03:26.039 So, I started teaching test-driven development (TDD), which was quite new at the time.
00:03:32.440 I learned about extreme programming, and I came across a paper called ‘XP for One’. I can't find it now, but it had a great impact on my learning.
00:03:40.400 As I was working at the Economic Development Authority, I was teaching these classes and facing some resistance.
00:03:47.560 People would say, 'You can't test something that doesn't exist.' I thought, 'Okay, you're right; the language we use to discuss TDD doesn’t truly reflect what we're doing.'
00:03:54.560 TDD is more of a design activity. In my research, I discovered the Sapir-Whorf hypothesis, which states that language influences the way we think.
00:04:02.320 I decided that I would change the terminology around TDD to help correct misunderstandings.
00:04:09.600 I wasn't the only one thinking about this; Dan North and Liz Keogh were also discussing Behavior-Driven Development (BDD), which was closely related to customers.
00:04:17.040 As I was teaching these classes, I created something called Describer.rb.
00:04:24.160 Ruby is wonderful for meta-programming, so I aliased ‘test unit’ to ‘test case’ and adjusted the test case suite.
00:04:31.440 This allowed it to find methods that started with ‘should’ instead of ‘test’. This was my first real experiment.
00:04:37.760 Unfortunately, this approach led to some maintenance nightmares, especially in early Rails projects.
00:04:45.760 At the end of my class, I explained that Describer.rb was just a teaching tool to illustrate a point. I emphasized that we traditionally used the xUnit pattern for testing.
00:04:53.200 I thought I'd never hear about Describer.rb again, but I received surprising feedback from a well-known figure who had noticed it.
00:05:00.480 At some Agile conference presentation, someone who took my class explained how they had learned TDD using my tool.
00:05:06.400 He reached out to me, leading to further conversations about the project. I swiftly realized my creation had gained traction.
00:05:12.320 After renaming the project to RSpec, I had the chance to share my ideas and improve the tool's usability.
00:05:19.760 Everyone was excited about improving TDD practices, and as the Ruby community grew, so did our discussions.
00:05:27.040 In these early days, a lot of people embraced the idea of BDD that I was advocating through Describer.rb.
00:05:34.240 During these sessions, I loved discussing how we could shift our paradigm around testing and make it more intuitive.
00:05:42.000 People kept asking questions, and I was excited to share my insights. I began speaking at conferences, which was overwhelming at first.
00:05:49.560 I learned that teaching was the best way to reinforce my own understanding. I never expected my work would help shape aspects of the greater Ruby community.
00:05:57.120 However, I soon found out that not everyone would appreciate the changes we were trying to implement.
00:06:04.200 Despite the initial challenges, the community reaction and the excitement around RSpec continued to grow.
00:06:12.919 I was fortunate to connect with some of my heroes, learn from their experiences, and shape my own path.
00:06:22.000 At RubyConf 2005, RSpec had its coming out party but I didn’t realize how significant it would be at the time.
00:06:30.440 My motivation was simple: to share knowledge and help others realize the value of TDD and the tools we create.
00:06:39.120 As I returned to later conferences, I realized how many people hadn’t used the tool yet, but were eager to learn.
00:06:46.680 There was a lot of work ahead, but the community embraced the idea of quality and continuous improvement.
00:06:54.720 It's heartening to see that many people created amazing projects using RSpec and embraced the concepts further.
00:07:02.640 Advancements continued with various discussions around how to improve testing for complex applications.
00:07:10.520 As our tools evolved, the focus shifted to collaboration and making programming more accessible.
00:07:18.000 I cultivated relationships across the community that encouraged growth. We all understood the importance of knowledge sharing.
00:07:25.440 One day someone asked a critical question: 'What does it mean to do TDD effectively?' It sparked a long discussion.
00:07:33.360 We agreed that our language could be reshaped to better reflect the practices we all aspired to, and that resonated strongly.
00:07:40.920 I was fortunate to have people believing in the journey RSpec represented, paving the way for our shared vision of better development practices.
00:07:48.640 In hindsight, the successes we encountered were not solely about RSpec; they embodied the growth of a vibrant community.
00:07:55.920 Reflecting on my experiences made me grateful for every moment where we created meaningful dialogue about quality.
00:08:03.120 Interaction with many like-minded individuals opened doors I never thought possible, allowing for original ideas and new routes.
00:08:10.760 I couldn't have anticipated that our work would inspire others to push boundaries, and this continues to drive me today.
00:08:18.440 I believe our community thrives on collaboration, and the insights gained feed our progress together.
00:08:25.360 In that spirit, I want to encourage everyone to actively share thoughts and ideas, to envision a brighter future.
00:08:33.760 As we enhance our approaches to coding and testing, the dedication each of us shows will undoubtedly yield transformative results.
00:08:43.600 I'm excited to see how our contributions accumulate and how they can redefine development practices.
00:08:51.040 Please don’t shy away from expressing your thoughts; they can play a crucial role in inspiring the next wave of innovation.
00:08:58.760 Reach out, create together, and recognize how valuable your voice and experiences are in shaping our journey.
00:09:06.800 Even if it means making mistakes along the way, take those steps; they contribute to our shared evolution.
00:09:13.200 I look forward to the narratives we will create as we continue moving forward together, reflecting on our collective growth.
00:09:19.560 Thank you for your continued passion and commitment to better development practices.
00:09:26.280 Now, I'm eager to hear your questions and thoughts as we explore these concepts further.
00:09:34.080 Let’s push the boundaries of what’s possible. Thank you.