00:00:17.849
Software is hard, as you can see with hardware issues.
00:00:24.310
Last year, I had the personal pleasure of celebrating ten years of working with Ruby and ten years of working with Rails. But this year, I have a much more interesting anniversary—ten years of sharing Ruby on Rails with all of you.
00:00:36.820
And everyone who has been using it over the past decade.
00:00:48.370
The picture in the background is actually from almost exactly this time, where I gave the very first presentation on Ruby on Rails at a Danish university ten years ago.
00:01:00.610
At that time, I had to talk a lot about what MVC is, for example. Today, not so much. A lot of the things we worried about in the beginning have become less relevant as we have leveled up as a community and as programmers.
00:01:13.479
We’re just taking all of that stuff for granted, which is awesome because we get to care about many other things.
00:01:20.920
As I look back over the past ten years, which constitutes the majority of my adult life, I realize it’s fun to look back even further. There’s a common misconception that anyone who ends up creating something like Rails or doing something significant in software development must have been programming since they were five years old.
00:01:37.119
The notion of a hacker is often someone who got their first computer 20 years ago and has been programming the whole time. But that wasn’t me. I didn’t learn to program when I was five; I came to it closer to 20.
00:01:52.930
I had been interested in computers for a long time, but it wasn’t until the late 90s and early 2000s that I really dove into computer programming.
00:02:05.110
I knew many programmers and had a lot of friends who were doing it, but somehow it never caught on for me until I started writing software that I needed for myself and found a place in the software world.
00:02:24.209
Some say that a true hacker is someone who should have been programming for ten years already; otherwise, you’re way behind. Well, I learned to program just about three years before I released Ruby on Rails, and it turned out just fine.
00:02:45.349
I didn’t come from a background where I didn’t know what a computer was; I had exposure to it from a young age.
00:03:03.300
I grew up in the 1980s and was introduced to computers through gaming. I found them fascinating right from the beginning, capturing my imagination. I vividly remember there were lots of parents at that time urging kids to get outside and play instead of wasting time in front of the computer.
00:03:29.690
But the truth was, I really wanted to spend my time in front of the computer. The computer to have back in 1985 was an expensive one, and none of us could afford it, except for one kid in the neighborhood where we all shared it, taking turns playing.
00:03:56.330
Eventually, my dad was able to trade his repair work for a different type of computer, an Amstrad 646. I was excited but a little disappointed since it didn’t play all the games I wanted.
00:04:14.569
At about six years old, I tried to learn programming by typing in codes from a magazine. I thought it was amazing that I could control a computer.
00:04:31.130
I set up a system to send messages to my mom through a tape which I thought was clever at the time, but in reality, it was not real programming.
00:04:43.480
Years later, in the late ‘80s, I encountered a game called Battle Squadron, and the graphics amazed me. It sparked my desire to create something similar, so I found a programming environment called Amos.
00:05:03.359
However, all those concepts of variables and others seemed to confuse me, and I didn’t get very far.
00:05:29.169
In 1993, I attended a demo party in Denmark. That experience immersed me in the world of programming, yet I still couldn’t grasp the concept behind it.
00:05:47.160
So I built another information system, a BBS where we traded software and games. I worked hard to afford modems and phone lines, but I still felt out of place in programming.
00:06:07.100
The truth is, I struggled to identify with programming in a computer science context because it just didn’t resonate with me.
00:06:24.820
In fact, this isn't surprising. My high school diploma shows that I got an F in math but an A in English. My strengths were never rooted in hard sciences, and I initially felt it was a hurdle.”
00:06:48.390
With that, I disabused myself of the notion that I would ever be a groundbreaking computer scientist. I wanted to build information systems rather than focus on algorithms.
00:07:06.200
It also appears that many people in the industry still aspire to fulfill that computer scientist role, but that’s not the only path. Most of our work deals with creating information systems, but the industry often glamorizes different technical pursuits.
00:07:29.250
It's more about interpreting and combining elements than it is trying to uncover the secrets of science or engineering.
00:07:39.080
Despite all this, we often end up discussing hard sciences and universal programming laws, which should be critically assessed, as much of what we do is quite subjective, resembling poetry interpretation rather than mathematical deduction.
00:08:04.189
Instead of striving for hard science validation, we should embrace the truth that programming is more subjective than universal. This lack of understanding can lead to misinterpretations about our roles as developers.
00:08:23.780
In practice, most of what we create has very little to do with deep scientific methods. Understanding that is essential for development.
00:08:35.959
I noticed a parallel between software methodology and dietary advice. Just as diet fads thrive on anecdotal claims, many software development practices evolve without adequate scientific grounding.
00:09:03.740
Both diets and software practices can ultimately lead to confusion rather than clarity. We should aim for sustainable practices that lead to genuine understanding, rather than being overridden by buzzwords or buzz diets like test-driven development.
00:09:35.330
Before we dig deeper into concepts like TDD, it’s important to note that following practices without question can hinder our progress in creating clear and effective software.
00:09:48.020
In that context, I realized we need to focus more on clarity in our coding practices, and perhaps less on the overhead of metrics that don't necessarily lead to a better product.
00:10:05.700
My perception of clarity and simplicity in code has evolved as I’ve interacted more with different types of coding practices throughout my career.
00:10:24.140
The more I read poor software, the more I learn what clarity truly means and how I desire to achieve that in my own practices.
00:10:38.220
Reflecting on this, I equate writing software to the process of crafting understandable writing. It's not just about frameworks and methodologies; it's about how effectively we communicate through code.
00:11:04.850
I’ve seen many examples where developers prioritize patterns over clarity. What many still fail to understand is that simplicity and clarity should guide our work as we develop software.
00:11:21.130
It’s about cleaning up our codebases, ensuring that each submission enhances clarity rather than complicating the message the code aims to convey.
00:11:34.970
Ultimately, clarity should be our primary objective, just as it is the objective in writing and creative processes. When we focus on that, we make better connections between our intentions and our outcomes.
00:11:44.740
Taking all this into consideration, I call on my fellow developers to reevaluate their critical eye toward the critical components of not just development and design, but software writing as a whole.
00:12:01.360
When we become more adept at assessing our work based on clarity and simplicity, we improve our understanding of programming as a language unto itself.
00:12:12.330
The way we communicate through coding should reflect the values and sentiments we hope to share rather than follow trends for the sake of appearing knowledgeable.
00:12:23.390
Coding becomes much more rewarding when we care about clarity above all else, ensuring that our work resonates similarly to enticing writing.
00:12:31.110
In closing, let’s embrace the identity of ‘software writers’ and focus on delivering clear, succinct messages through our code, appreciating the unique way in which we can create experiences for users and ultimately enrich our community.