Talks

Good Enough

by Barrett Clark

In his talk titled 'Good Enough,' Barrett Clark addresses the challenge of achieving work-life balance while staying up to date with rapidly evolving technologies in the programming field. He reflects on the pressures of continuous learning and the feeling of inadequacy experienced by many developers, particularly those dealing with impostor syndrome.

Key points discussed include:

  • Technology Evolution: Clark highlights how quickly technologies such as Ruby, Rails, JavaScript frameworks, and infrastructure tools evolve. He recalls how the community sees frequent updates and new versions that require constant adaptation.
  • Personal Experience: Sharing his personal experiences, he mentions the difficulties of keeping track of numerous tools and versions, illustrating this through his interaction with various HTTP libraries and his struggles with Ruby on Rails.
  • Impostor Syndrome: Clark expresses feelings of inadequacy and questions his worth in the fast-paced tech environment, despite his efforts in self-learning and professional growth.
  • Team Dynamics: Emphasizing the importance of teamwork and trust, he notes that relying on a supportive team can alleviate pressures and contribute to a more manageable work-life balance.
  • Work-Life Balance: He provides insights into his personal life, including his family, hobbies, and the significance of finding joy outside of work. Cooking and engaging in puzzles are mentioned as creative outlets that help him unwind.

Clark concludes by encouraging self-awareness and prioritizing what truly matters in life, suggesting that while the pressures of technology can feel overwhelming, focusing on family and personal well-being should take precedence over feelings of inadequacy. He acknowledges that failures are part of the journey and that it is essential to embrace them while striving for balance and fulfillment in both work and personal life.

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.