RailsConf 2015

Opening Keynote

by David Heinemeier Hansson

In his Opening Keynote at RailsConf 2015, David Heinemeier Hansson discusses the release of Rails 5 and reflects on his twelve years of involvement with Ruby on Rails. He explores the motivations that keep him engaged in the software community, particularly the intrinsic joy of programming and the fear of losing what he has built. Hansson emphasizes the importance of community and daily interactions as vital reasons for his continued dedication to Rails. He shares insights on his personal evolution from a joy-driven approach to programming to adopting a more strategic mindset, influenced by Stoicism, to confront the fears associated with success and ownership.

Key points include:
- Rails 5 Launch: Hansson announces the upcoming release and the significance of reaching the fifth major version, which marks ten years of major releases.
- Motivation: He introspects on his motivations for working on Rails, identifying factors such as community, personal pleasure in coding, and responsibilities as driving forces.
- Fear of Loss: He discusses the transition to taking on responsibilities and the accompanying fear of losing his achievements, noting the impact this has on decision-making.
- Prepper Mentality: Hansson likens his approach to a 'prepper' mindset, where he prepares for potential calamities, using Rails as a set of tools that empower him to adapt and rebuild if necessary.
- Simplicity vs Complexity: He reflects on the challenges of overly complex systems, sharing lessons learned from experimenting with microservices. He advocates for simplicity and integrated solutions as a way to empower software developers.
- Rails 5 Vision: The upcoming version aims to enhance community collaboration and integrate common development practices while retaining simplicity.

Hansson concludes by encouraging developers to embrace a mindset that values simplicity, equipping themselves with the essential tools they need to tackle future challenges and fostering a thriving community around Rails. He expresses excitement for the evolution of Rails and its capacity to support developers in realizing their visions without compromising on functionality or cohesion.

00:00:12.040 Well, welcome! It's great to see so many people here again this year. Even though I can't actually see you, I'm imagining that you're all out there. This year, we're going to release Rails 5.
00:00:27.320 Thanks! I love people clapping for what they don't actually know they're going to get. We'll see whether you're still clapping at the end, ha! Rails 5 is, as the numbers suggest, the fifth major release of Ruby on Rails in ten years. We have released a major version of Rails every two years since 2005. I started working on Rails in 2003, and it took us about two years to get to version one. Somehow, as if by clockwork, we've managed to push out a release every two years.
00:01:00.480 Last year, we kind of looked at the release schedule and said, 'Oh, we've been releasing a major version every two years. Let's just say that was the plan and we're on a two-year schedule.' I love yesterday's weather; it's so much easier to predict. But there’s something funky about five. I don’t know why certain numbers feel special, but it feels like a milestone. Maybe it’s because it marks ten years of major releases or whatever it is.
00:01:36.399 When I started thinking about what I wanted to talk about at this RailsConf, which I think is like the eighth or ninth— I don’t remember exactly, I think 2006 was when we started with RailsConf— I had this question about why. Particularly, I started to ask a personal 'why.' Why am I still doing this? It has been 12 years, the majority of my adult working life spent building Ruby on Rails and products with it. So, why? Why am I still here?
00:02:26.760 This question goes to the root of something I find so interesting about software, which is that software is about people, and people are about motivations. What drives them? What are their values? If you understand that, you have a better chance of understanding the software that comes out of it. It’s like peeking behind the curtain to see where all this stuff is coming from. I’ve spent a lot of time trying to do that with other software projects.
00:03:03.400 I look at a piece of software and I’m fascinated, wanting to understand how they arrived at a particular point. For example, how did you end up with 2,000 lines of XML configuration? I’m just fascinated by that process. I’ve mostly used this introspection for comedic effect, poking at other communities, languages, or frameworks. But for this fifth major release, I thought I should also point this introspection inwards and examine my own motivations for still being involved in this.
00:03:51.160 There are some obvious reasons; it's not just one answer, as with anything complex. One reason is that I love the community. I love what we’ve built here; I enjoy the daily interactions through GitHub pull requests, mailing lists, Twitter, Campfire, and other channels we use to communicate. It’s a lot of fun. But that isn’t the whole reason. I have other communities I’m involved with, and they’re fun too, yet I didn’t necessarily pour in as much time into those.
00:04:41.919 Another argument, the one I usually lean towards, is the intrinsic motivation— I just enjoy this! Writing Ruby code is a privilege and a pleasure, making it a compelling reason in itself. Yet I pursue other interests as well, and again, I don’t spend that much time on them. As I dug deeper into my introspection about why I’m still here, I recognized something more primal.
00:05:50.320 When I started out with Rails, my motivation was primarily intrinsic pleasure from programming. However, over time, those motivations became routine, and certain necessities faded. Now I work with a talented team at Basecamp, and I don’t necessarily need to do everything myself. But as this transition occurred, I started to accumulate responsibilities.
00:06:57.000 Building a successful company and a popular product has its rewards, but it comes with the growing fear of having something to lose. I absolutely hate that nagging sensation— the idea of losing something, as it tends to be one of the prime drivers of fear, which leads to all sorts of bad decisions and shortsighted thinking.
00:08:00.840 I’m aware of this because I've seen it happen to others. I talked a bit about this in my 2012 keynote on progress, where I touched on the fear of losing something. Through introspection, I decided that I wouldn’t succumb to this fear. One of the great discoveries for me has been my exploration of Stoicism, which emphasizes finding tranquility in life by addressing fears head-on.
00:09:41.560 For me, the fear of losing everything I've built up over the past decade often crosses my mind, and I think about the worst-case scenarios: What if everything disappears tomorrow? Whether due to my own mistakes, unforeseen circumstances, or major catastrophes, the fear nags at me.
00:10:31.679 Today, I work with 47 wonderful people at Basecamp. While I enjoy the longevity we've had, it also adds to that feeling of having something to lose. If I’m going to confront this fear, I need to accept that it could happen— that I could end up alone again, figuring everything out by myself.
00:11:47.019 To address this personal fear, I adopted a 'prepper' mentality, needing to be self-sufficient enough—that if calamity struck, I’d be ready. This is where Rails comes in; it’s my prepper backpack, where I pack everything I might need. It's the belief that if the world ends and a zombie apocalypse arrives, I’ll be prepared with my essential tools—turbolinks, active support, active record, etc.
00:12:58.680 The 'prepper' mindset is fascinating. While I read an interview with a series of preppers and laughed at the absurdity, I realized they are addressing their fears— whether it's preparing for the zombie apocalypse or some other catastrophic event. That willingness to confront fears is commendable.
00:14:05.519 However, I find myself in disagreement with the stereotypical prepper mindset. While they prepare for the end, I’m not satisfied with mere survival or just having enough supplies in a shed. That’s not my idea of salvation. I’m not greedy, but I want to take that idea and elevate it— I desire the capacity to recreate things to a satisfactory state.
00:15:21.680 For me, it's about retaining the necessary tools to build a comfortable, self-sustaining existence rather than grand visions of building empires. My aim isn't to construct the grandest structures but simply to ensure I have what I need to maintain my skills and creative abilities.
00:16:59.840 I understand that my personal perspective is not the conventional approach in the software industry. There's often this belief that every challenge can be solved by breaking everything down to APIs and treating the server as a singular data source. However, in practice, it rarely works out that way.
00:18:38.079 By accepting a more holistic approach— one that embraces integrated systems—we can pursue projects that make sense to us while not being trapped by conventional wisdom. This shift allows us to be both functional and agile. Leveraging this integrated philosophy will make us less susceptible to the pressures of constantly evolving tech stacks and elaborate architectures.
00:20:06.320 When I looked back a few years, we experimented with microservices at Basecamp. We had a feature that required using that functionality across multiple applications, and while it seemed like a great idea initially, the reality of keeping everything in sync with different apps running at different speeds proved challenging. It was a valuable lesson in the inefficiencies of overly complex systems.
00:20:51.920 Ultimately, this experience refined my perspective, leading to the conclusion that simplicity often wins over complication. For all the talk about the advantages of microservices, there's a reason why monolithic structures remain appealing. They offer cohesion and a unified approach instead of a cacophony of loosely-coupled services.
00:21:37.280 In designing software architecture, the goal should be to prioritize systems that indeed feel majestic, supported by a robust understanding of their interrelations. Instead of falling into the trap of diminishing returns on complexity, we should appreciate the beauty of cohesive systems.
00:22:03.960 We have been working on Rails and its ability to integrate smoothly with the tools we already utilize, focusing on making our coding procedures more efficient. These tools empower us to create sophisticated applications while allowing a single developer or a small team to tackle ambitious tasks effectively.
00:22:57.679 With the new updates coming to Rails 5, I envision it fostering community collaboration, new integrations, and facilitating common development practices. With the ability for Rails to adapt and integrate, we can usher in a new era that embraces modern expectations while still valuing simplicity and functionality.
00:24:07.519 The real magic of Rails lies in the fusion of simplicity with power. By embracing integrated software solutions, we have the chance to overcome challenges faced by teams of hundreds, leveraging our tools to maintain an edge. This framework can help foster development driven by a passionate community dedicated to improving the software-building process.
00:25:09.440 In summary, while the industry may continually push towards microservice architectures, Rails 5 represents the ability to combine the power of regard for simplicity within integrated systems, allowing for clear, maintainable solutions. We must recognize that simplicity is a form of strength we should continue to embrace.
00:26:13.200 So, if you’re seeking a framework that respects simplicity while delivering robust capabilities, I invite you to explore what Rails 5 has to offer. It’s about ensuring developers of all circumstances feel empowered to create meaningful applications, reflecting their visions without compromising on cohesion.
00:27:10.840 I'm excited to see how the community will adapt and grow with Rails 5, continuing the crucial balance between complexity and simplicity. So, as I finish my speech today, I encourage you all to reflect on that integration— to pack your proverbial backpacks with the necessary essentials that empower you to tackle any challenges ahead.
00:28:39.920 Thank you very much for your attention and enjoy the rest of RailsConf!