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.