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.