00:00:23.439
Hi there, I'm Barrett Clark. This talk is titled 'Good Enough.' What I'm going to be discussing is how to balance learning all the things, shipping all the things, and keeping up with everything else. You can see that's already out of balance, right? It happens fast.
00:00:51.280
Let's play a game. Let's have a show of hands. First of all, in the last year, which of these HTTP libraries have you used? Net HTTP? That’s a standard library. Fantastic! How about HTTParty? Right on! What about Rest Client? Nice! Faraday? Everybody's using all of them, great! What about something else, like Active Resource? Maybe?
00:01:27.680
I've used all of these as well. They each bring something different to the table. Each one has something that they excel at, and maybe there's something that feels a bit weak. For instance, Active Resource has its shortcomings.
00:01:45.360
Now, let's talk about Ruby things, like Rails. I wrote a script using Faraday to hit the RubyGems API and check the versions. For Rails, there are 215 versions available, those that have at least a thousand downloads. While there are more versions in total, including release candidates, we have a new MRI every Christmas now. It took us four years to go from 1.8 to 1.9, and then five years to jump from 1.9 to 2.0. Now we get a new version every year.
00:02:45.280
Let's also consider infrastructure—what web server are you using today compared to when you first started? What about app servers? I remember migrating an app to Rails 1.0 and I've experimented with a lot of different app servers, configuration management, virtualization, and containerization. All of this technology moves fast.
00:03:10.640
Transitioning to JavaScript, when I started doing web development, it was just JavaScript. We had Prototype with Rails, and then jQuery came along, which was a great improvement. Now, it seems like every day there’s a new JavaScript framework that gets released. Personally, I’d rather just write JavaScript. I find D3 particularly interesting, but using NV D3 built on Angular can be quite frustrating.
00:04:00.480
My point is that it's astonishing how fast things are changing. Steve Wozniak once said, 'You can't stop the steamroller of technology change.' I feel that pressure, like it's breathing down my neck, and I want to outrun it.
00:04:28.320
Here are some steamrollers that tip my scales: the challenge of learning new things versus keeping up with everything else. It's tough to stay current with all the things we already know. Everything changes constantly. Just recently, we got a new version of Postgres with some great new features, and now there's discussion about new versions of Rails. How are we expected to keep track of all these changes?
00:05:02.240
It’s not just about learning new technologies; there are new ideas, new languages, and you want to experiment with them, but that takes time and attention away from everything else. In my job, which is set up like a lab, I need to be able to write and ship my code in different languages because they each lend themselves to different environments.
00:05:45.280
Writing code in Ruby is beneficial because of its great project-based environment. However, it leads me to think about my experience with Android, which can be challenging. For instance, if you update a vital system component and it causes issues, you might end up in a tough spot. So, writing code is one steamroller that weighs me down.
00:06:00.960
Speaking of tools, I'm more of an old-school vi user, and I'm hesitant about more modern text editors. I find such plugins to be confusing. I prefer to use Sublime or the appropriate tools for each task at hand, such as Android Studio for Android developments. There's also this unique project, the 'special snowflake project,' which many of you may relate to. You can't put it down, and it occupies your mind in ways that make you dream of code and wake up with a headache. It's almost as if I’ve developed a messiah complex around it, believing no one else can bring this project to life.
00:07:06.480
I may also struggle with concepts from computer science. While I have business degrees, much of my development knowledge is self-taught. I work hard to understand principles that many of you might take for granted. This isn't a discussion of privilege, but I acknowledge that my challenges may differ from those of others. Sometimes, I wonder if I deserve to be where I am today. Do I take opportunities for granted, and how open am I to learning and growing?
00:08:12.560
These are considerations in our tech community, and while I don’t have the answers, they are on my mind. While these steamrollers tip my scales, the biggest challenge is that I often feel the pressure of the steamroller looming ever closer, and I feel like I cannot outrun it. I don’t want to be that person—slow, unproductive, a bottleneck, or difficult. We want to stay sharp in our field and rise above that feeling.
00:09:08.960
So what do we do? Stepping back and becoming self-aware is an essential first step. When you're mindful, you realize that the weight you're putting on certain aspects might be causing suffering elsewhere. As a joke with my wife, we often refer to the saying that 'teamwork makes the dream work.' Having a strong team to rely on is healthy. In my team, we work hard and enjoy what we do together.
00:10:20.000
Trust plays a vital role. Knowing we can rely on our team allows us to alleviate worry. When you trust your teammates, it empowers you. Practicing teamwork, sharing responsibilities, and knowing who's responsible for what can help alleviate that burden. We’ve explored many different practices in our environments, aiming to constantly refine and define how we’re going to ship projects efficiently.
00:11:15.000
As we prepare for hackathons, we often spend weeks honing our skills for a simple 24-hour sprint. In such scenarios, every project I work on includes at least one new tool or language that I'm unfamiliar with. Those voices in my head whisper that I'm slow, unproductive, a bottleneck, but I've learned to let go of that pressure.
00:12:34.480
Work-life balance can be a challenge. We're always piling responsibilities on one side of the scale and not prioritizing our personal lives. I have a wife, two boys, and hobbies that I struggle to keep up with. It's important to take time to enjoy life's little moments—like watching my kids play sports and savoring the simple joys of life.
00:13:27.680
Cooking is another outlet that feeds my creativity outside of programming. I enjoy making meals for family and friends, as it gives me joy to create something others can relish. Additionally, stimulating my mind with puzzles, like Sudoku or Hidato, brings me happiness. The simple act of writing with a pencil resonates with me—the sound, the tactile sensation, it all feeds my soul.
00:14:15.519
This is a photo of Lake Champlain, where I've had wonderful experiences and taken part in great conferences. It's essential to remember that while work may always be there, it doesn’t have to be confronted immediately. You'll figure things out, but tomorrow offers another opportunity to take a step back and breathe.
00:15:10.639
Failure happens, and that's okay. We frequently encounter issues while working on projects, but recognizing that it’s perfectly normal is crucial. This journey is challenging, and I often struggle with work-life balance myself. I'm not sure if I'm good enough, but I’m trying to worry less about those steamrollers plowing through my life and focus more on what truly matters—my family, experiences, and overall well-being.