RailsConf 2018

Opening Keynote: FIXME

Opening Keynote: FIXME

by David Heinemeier Hansson

In the opening keynote titled "FIXME" at RailsConf 2018, David Heinemeier Hansson reflects on his two-decade journey in the software development industry, particularly focusing on the evolution of technology and its implications for developers. He discusses the enduring nature of certain core technologies, such as relational databases and Ruby, while highlighting significant shifts in roles and practices within the field.

Key points include:

- Evolution of Roles: Hansson notes a decline in the reliance on Database Administrators (DBAs) due to advances in hardware and software, allowing developers to focus on application delivery without needing specialized roles to manage databases.

- Technological Advancements: Changes in technology (like the adoption of SSDs) have increased performance and reduced complexity, enabling applications to function more efficiently without extensive database management.

- Conceptual Compression: He emphasizes the importance of conceptual compression—simplifying complex concepts so developers can focus on building applications rather than understanding intricate details such as SQL. This compression allows for greater accessibility to technology and lowers barriers of entry for new developers.

- Historical Context and Learning: Hansson encourages using historical insights to propel the industry forward, noting the risks of devolving back into complexity without understanding past successes.

- Leaky Abstractions: He advocates for embracing 'leaky abstractions' as a pathway to create more robust frameworks. This approach allows developers to interact with technology without needing to manage every underlying detail.

- Changing Landscape: Hansson reflects on the shifts in who can launch applications today, noting the importance of inviting more diverse voices into technology by lowering barriers and expanding access.

- Final Call to Action: The keynote concludes with a call for developers to harness their collective power responsibly, striving to build software that serves the greater good and broadens opportunities for all, rather than concentrating wealth and knowledge within a select few.

Hansson's narrative serves as both a retrospective and a guide for future progress, urging the industry to continue evolving while safeguarding the strides made in accessibility and ease of entry into the field of software development.

00:00:11 So, this was supposed to be replaced by the title of the talk I never came up with.
00:00:18 The title was 'The Tiger Wolf', but then I thought actually 'Fix Me' is a good title for this talk.
00:00:26 So, 'Fix Me' this talk has been...
00:00:32 As I've said, I've been doing this for a while. In fact, I've been involved in information systems for about 20 years.
00:00:40 It's a really weird thing for me to say because when I got started, I was about 20 years old.
00:00:45 This concept of being involved in an industry for two decades just seemed foreign to me. Now, I've been around for about two decades and in some ways, things are no different, right? I still have the same fire to fix the future.
00:01:03 But instead of having that fueled by youthful ignorance, which I think is a valuable thing, I miss that ignorance because it's bliss. I have something else instead: a sense of history.
00:01:17 This sense of history can be both a blessing and a curse. It's an easy trap to fall into just reminiscing and being content with what we did and where we were.
00:01:28 On the other hand, it gives you a perspective of scale. The technology industry seems to move so incredibly quickly; not a week goes by without something new being announced, making you feel like everything you knew is outdated.
00:01:40 But if you think about the core technologies that underpin many applications that people, including myself, work on — like relational databases — they've been around in their current form for a long time.
00:02:03 A relational database was invented in 1954. It's been around long enough that despite the other forms of data storage that have come and gone, it's still at the core of many applications. In an industry that supposedly moves very quickly, it's interesting to realize that one of those core pieces has remained so stable.
00:02:32 Ruby itself has been around for twenty-five years, and while some things have changed over that time, concepts around the database administrator (DBA) — the person tasked with guarding these precious data stores from developers — have shifted significantly.
00:03:04 When I started about 20 years ago, having a DBA in your team was quite common. Now, I would be surprised if most people in this room are on teams that have a full-time DBA; this role has become quite exotic.
00:03:29 What happened? A big part of this change was the advances in the underlying hardware. Before, DBAs were essential for ensuring that relational databases performed adequately. Now, the ceiling for what a database can handle without dedicated professional oversight has been raised.
00:03:58 For instance, at Basecamp where I work, we have a relatively large database and have launched various features even with incorrect index configurations for thousands of users.
00:04:06 This was possible without realizing it until it fell over months later — that's real progress. We've reached a point where ignorance about the fundamentals of technology can be maintained longer without causing issues.
00:04:28 The role of the DBA has gone through creative destruction; it used to employ many people but has significantly diminished in necessity. Furthermore, certain techniques related to relational databases, such as sharding, illustrate the ongoing evolution of our industry.
00:05:06 Sharding, the practice of splitting a database into multiple databases when reaching a certain data capacity, can add complexity. Before, you had to manage one database; now with sharding, you must manage multiple databases, which introduces additional challenges.
00:05:56 Back in 2007 at Basecamp, just as we were approaching our limits with a single database, we debated setting time aside to implement sharding. This endeavor seemed cumbersome, and we hoped we could find other solutions, such as buying more RAM to defer the issue.
00:06:37 With advancements in SSD technology, we were able to avoid sharding entirely for several years. All versions of Basecamp operate using a single main database with read replicas, demonstrating that we were able to leverage technological progress to simplify our approach without having to resort to complex strategies.
00:07:33 What we've seen is that many aspects of working with relational databases that used to seem imperative at a certain scale are no longer necessary due to trend improvements. Over the course of twenty years, the technology and our methods have changed significantly.
00:08:09 Even in frameworks like Active Record, which was once considered controversial due to debates about the trade-offs between using an Object-Relational Mapping (ORM) versus writing SQL by hand, we've seen a transition towards thinking less about raw SQL queries.
00:08:47 Many developers used to regard ORMs as inefficient, suggesting that writing raw SQL was the only way to ensure that your application performed well. Today, however, we've seen a transformation in how we view AND leverage these tools.
00:09:40 At Basecamp, it’s commonplace for pages to trigger hundreds of SQL queries, something that would have seemed absurd just over a decade ago. However, progress has allowed systems to handle greater complexity without unbearable performance costs.
00:10:46 As I reflect on the last two decades, I see that much of the progress has been about compressing concepts to the point of not needing to engage deeply with SQL or the underlying mechanics of the systems we’re building. This general trend frees developers to focus on higher-level problems.
00:11:39 The critical point here is that while we rely on foundational technologies like relational databases, the specifics of those technologies can be abstracted away, enabling many of us to build systems without needing to understand every constituent part in detail.
00:12:37 This conceptual compression has emerged as a significant factor in the evolution of frameworks like Rails, which provide a substantial amount of power to developers while significantly lowering the barriers to entry for constructing applications.
00:13:19 Through the power of frameworks and abstractions, the range of individuals who can generate meaningful applications widens dramatically. Accessibility boosts, as anyone willing to put in the effort has the chance to create something impactful.
00:14:14 One of the most impactful ways to lower barriers is through conceptual compression. The simplicity of using high-level abstractions makes it significantly easier for emerging developers and gives them the knowledge to launch projects.
00:14:53 Learning tools and frameworks should provide enough simplicity that users feel empowered to create without feeling overwhelmed by unnecessary complexity or specialization. This access empowers larger numbers of people to engage with technology meaningfully.
00:15:29 It’s essential to maintain the progress we've seen. As an industry, we must advocate for the principles of conceptual compression against the tide of unnecessary complexity that can emerge.
00:16:01 As we forge ahead, we must remain reflective about the past and use the lessons learned to inform our future. If we allow ourselves to be dragged into specialization without reevaluating what we deem essential, we risk alienating new developers from the process.
00:16:49 This alienation hinders individuals from connecting with their creations. The more we specialize and compartmentalize tasks, the harder it becomes for developers to own their work and see the broader impact their contributions have on the world.
00:17:35 Steps like understanding the broader implications of software can empower developers to ensure their work has positive outcomes. We must embrace the intersections of our roles with ethical considerations and societal impacts.
00:18:27 Recognizing our responsibility as developers allows us to engage actively in shaping a better future. Ignoring these ethical dimensions leads to unintended harm, even when we are implementing systems that appear beneficial.
00:19:30 When we understand that we are the architects of the future, we can influence the direction we go. We are the creators, and this command over our craft empowers us to enact positive changes.
00:20:30 Our industry is transforming rapidly and presents both opportunities and challenges. By pruning unnecessary complexity and expanding the effectiveness of concepts we’ve developed, we can foster greater inclusivity and allow perspectives from diverse backgrounds.
00:21:36 Recognizing the need for broader participation in technology will only yield innovative solutions and approaches. This broadening of perspectives can facilitate advancements and enhance how we perceive and utilize technology in our lives.
00:22:51 In summary, wrestling with the changes in technology offers us the opportunity to shape the future rather than become mere observers in our industry.
00:23:10 As we broaden the base of accessible knowledge and capabilities, we empower a new generation of developers who can realize their visions. By converging on our understanding while expanding our community, we can create impactful applications that reflect the diversity of our society.
00:24:12 The principles we champion not only lift individuals but also enhance the potential footprints of the applications created. Let’s embrace the responsibility that accompanies the privilege of constructing technology and work tirelessly to institute chang.
00:25:22 As we move forward through the complexities of modern technology, let’s remain committed to our collective vision of liberating ideas, sharing knowledge through compression, and realizing a future where anyone can build applications. This collaborative path will ultimately reflect positively on our industry and its impact on society.
00:26:50 Let’s prioritize engagement over alienation, ownership over specialization, and collaboration over exclusivity. It’s important to recognize that this drive for compression and broadening participation is not merely a trend but a fundamental necessity for the evolution of our field.
00:28:02 In today's rapidly changing landscape, we stand at a pivotal moment, and we should seize the opportunity to ensure that technology remains a force that elevates rather than restricts the creativity of individuals.
00:29:12 Let’s take the responsibilities we have seriously and work towards creating a future where technology serves as a bridge rather than a barrier. Together, we can make strides towards a more inclusive, imaginative, and empowering technological landscape for all.