 I'm Barrett Clark and this talk is good enough. Really, what I'm going to be talking about is balancing learning all the things and shipping all the things with all the other things. And you can see that's already out of balance, right? Okay, so it happens fast. Let's play a game. Let's have a show of hands. First of all, in the last year, which one of these HTTP libraries have you used? Net HTTP at a standard library, yeah? Fantastic. HTT Party, right on. What about REST Client? Okay, REST Client. Faraday, everybody's using all of them, great. What about something else? Active resource maybe? Yeah? Right. Okay, so in the last year I've used all of these also. They each bring something different to the table, right? They each have something that they're really good at or maybe they feel good, and they each have something that's kind of weak. Active resource is basically all weak, but... Right? Okay, so what about Ruby things? Rails... Wait, hold on. Let me check something. I wrote script. This is a soft talk, but I have to have some code. So I wrote a script using Faraday to go out and hit the RubyGems API and look at versions. So, okay, Rails. 215 versions in all of time that have at least 1,000 people who have downloaded. There are more versions. There's probably about 250 versions total of Rails Gym. And that includes, as you saw, release candidates. We're about to have a new version. So we have a new MRI every Christmas now, right? It took us four years to go from 1.8 to 1.9, and then five years to go from 1.9 to 2.0. We get a new version every year now. And infrastructure... infrastructure. What web server are you using today versus, you know, whenever... And what about app servers? I remember the bump to Rails 1.0. I actually migrated an app to Rails 1.0. I've used a lot of different app servers. And configuration management, virtualization, containerization, asianization, whatever. That stuff moves fast, and now I've got this whole CoroS Docker standoff thing. So it... There's a lot of shift in all these areas. And speaking of shifts... Oh, I went too fast. So speaking of shift, what about JavaScript? When I started doing web development a long time ago, it was just JavaScript. As far as I know, it was just JavaScript. So we get prototype with Rails, if I remember correctly. And jQuery comes along, and it's great. And now, you know, you've seen that zero day since the new JavaScript framework's been released. So... I'll tell you what, I would rather just write JavaScript personally. I like D3 a lot. NVD3 built on Angular makes me rage, but that's a different story. A point with all of that is it's scary how fast everything changes. Steve Wozniak had a quote, you can't stop the steamroller of technology change. You can't stop the steamroller of technology change. And so I feel that breathing down my neck, and I want to outrun it. So here are some of my steamrollers. Some of the things that tip my scales, learning all the things versus all the other things. Staying current. It's really hard to stay current on all the things that you already know about, right? Everything changes, we just got a new version of Postgres, it's got great new stuff. Everything changes, new version of Rails coming out, what the hell's new in that, I don't know. Everything changes. And then you've got all the other things, like new ideas, new technologies, new languages, and you want to play with them. That takes time. So that takes time away from all the other things. And tools. In my job, I work in kind of a lab environment, which is great, but I've got to be able to ship the code, any code, I've got to be able to write it first and then ship it. And different languages lend themselves to different environments, right? In Ruby, we have a really good project-based environment, and that's great because you can kind of sandbox and isolate things. Xcode does a pretty good job with this. It has its warts, but it handles projects pretty well. Android's a different story. Maybe it's just that I'm terrible at Android, which is totally possible. Maybe you update some fundamental system thing and you totally shy your foot off. So write the code, any code. This is one of my Steam Rollers. Tools, all that stuff. And I don't, I'm an old school sixer, like I like VI, but Vim is a little bit newfangled for me. I don't like all those, like, the plugins are weird. So I use, I just like a text editor. Just give me a sublime, and I'll use, you know, Android Studio, I'll use Xcode. I'll use whatever, like, the actual tool is for the thing. That's not something I don't want to learn, Vim. It's just, it hasn't made sense to me yet. I'm not that smart. And then you have that project, that special snowflake project. You can't put it down. Does this happen to anybody else you dream about the code? You go to bed and you chew on it. You're working through those problems. You wake up with a headache. That special project tips the scales. And then maybe you get so wound up that you get like, I'm the only one who can bring this thing to life. I'm the only one who can ship this feature. This product will be nothing without me at Messiah Complex. But that's kind of, that's maybe a trust issue. I don't know. And then there's computer science. Yeah, I've got business degrees. I'm totally winging it. I work really hard to know about, to understand or even know about, like, core principles that I'm sure a lot of you totally take for granted. Tips and Scales. And while we're talking about things that we take for granted, this isn't a talk about privilege, but I feel like I should touch on it. I acknowledge that my struggles are probably different from your struggles. It's not a level playing field out there. I know that I've had opportunities that maybe not everybody's had. Do I deserve to be where I am? I don't know. What do I take for granted? And how open am I really? I don't know. These are important conversations in our community. And I don't have the answers to them. But it's something that I'm thinking about. So those are some of my steam rollers. Some of the things that tip my scales. My biggest concern is that I feel, I hear that steam roller bearing down and I can't outrun it. I can't outrun it. I don't want to be that guy. Slow, unproductive, bottleneck, difficult. I want to be that guy. Mike, you notice what I did there? The snail on the ball. So what do you do? Okay, so I think taking a step back and being self-aware is a good first step, right? Being mindful of the situation of the problem, you're putting way too much weight on this side and this other side is suffering. This is an inside joke, actually, with my wife. It's a super dysfunctional work setup and this is one of their sayings. But it's actually, it's a good... I mean, there's a grain of truth in this, right? Teamwork makes the dream work. Having a good team is a good, healthy thing. I have a good team. We work really hard and we have a lot of fun. So, this is our team mascot. I love that you, Caroline, had the coming, the wookie slide. Travel Chewy has his own Twitter account. You should go look at it, but not right now. He travels with us when we go to Hackathons. There he is, sitting in a terminal at SFO, waiting to fly back from Disrupt. And this was a totally organic thing. He was actually a president from a good friend who I'd worked with for a long time. At a previous job, he was a going away president. And because we're programmers, you know, we have our silly toys, I brought him into the office at my new place at Saber. And the team just latched on and Travel Chewy became a thing. He has a seat at his table. He is in our office. Up there, you see he's presenting one of our hacks. We also do an annual Hackathon at Work where you just get to kind of play around with stuff. And we took flight data and turned it into music in JavaScript using, I think it was the band.js. And it'll make your ears bleed. It wasn't cool. It wasn't good. But if you Google airport beats, you can see that horrendous hack. And he's playing with the Oculus Rift there. So I know this looks like a cheesy success release poster, but trust does help diffuse worry. And it's a great cycle, right? If you know that you can rely on your team, then you can offload that worry. And you can put it down. You can put that special snowflake project down. And you don't have to worry. And if you know that you're trusted, then that's empowering, right? At least for me, at least. Practice. So we do have to spend time figuring out how these tools work, playing with these languages. So what do we practice? We practice code. And these are things that we do at Work. So I've learned a lot about how to practice and how to do these things through exercises that we've done at Work. So we practice code a lot. But we also practice methodology, like how do we think about a problem? How are we going to approach something? How do we work through something? And of course, then we practice teamwork, working together. What are the handoffs? Who's going to be responsible for what? And we've tried all sorts of different things, drawn out priorities, all these things, all towards figuring out how are we going to ship that MVP? What even does that mean? And this, I think, is another good thing to help kind of diffuse worry. If you know what the target is and you're crystal clear on what's important and what's not important, then it helps guide the conversations and it helps relieve that stress. And it takes the personality out of the conversations also. So you're able to talk about this is in scope, this is out of scope, and with out of scope it's totally unimportant and you don't even need to worry about it. And so it gives you that really nice, tight definition about how to do something. When we're gearing up for a hackathon, we spend weeks working on all these things. For a simple little 24-hour go. Like I said, we do lots of different languages, lots of different things, and every project has at least one brand new thing that I totally don't know how to do. You can't let that stand in your way. But those voices haunt slow, unproductive bottleneck. You've got to let it go, let it go. Work-life balance is hard. We're constantly piling stuff on this side. You have to put some weight on the other side. Feed your soul. So I've got a wife, I've got two boys, more hobbies than I could ever possibly do. You've got to take time to enjoy the little things. So my kids both play lacrosse, and they both need new gloves at the same time, of course, which is amazing. But it's fun to watch them play. It's fun to watch them just run around and have fun. You see my big yellow dog there, Jack Dog, and my big green egg. I love to cook. I'm a creative person, and cooking is another way for me to be creative and make things that people enjoy, but not at a glowing screen. And then you see those little puzzles there. Sudoku or Hidato and the pencil. There's something about that scratch of the graphite on the paper, the sound and the smell. I love that. It feeds my soul. This is Lake Champlain, sunset on Lake Champlain in Burlington, Vermont. Great Ruby Conference up there, great marathon if you're into running. It's a great, just feed my soul place. I love Burlington. Here's the thing. It's still be there when you come back to it. Work will always still be there. And you don't have to figure it out right now. Oh, you'll figure it out probably. Probably. But you don't have to figure it out right now. Tomorrow is another day. I have a hard time with this one. If you work to be done, like I want to get it done, right? But there's always work to get done. Tips to scales. Failure is okay, really. So remember I told you that little anecdote about maybe you update some fundamental system thing in Android and shoot your foot off. So Android Studio, like every day it gets updated or something. And I did a brew update at some point and it updated all the things. Gradle was one of the things that got updated. And so when somebody, we had a showcase app, a Google Glass app that we had done to show off some internal API stuff. And somebody wanted an update. And I said, okay, sure. It took less than half hour to write the code and then it wouldn't build. Gradle wouldn't even run, of course. So I spent three days off and on, three days fighting with Gradle to build this stupid project. Finally got everything figured out, got it built, got it in the glass, and it didn't run. Great. Fantastic. Now what? So we talked about it. We were busy in another project. This was an old showcase app. We decided it wasn't that important. Figure is okay. It doesn't happen very often, but it's okay. And I thought it was funny. Of course, that's when I would have my failure. So confession. I struggle with all of this. Like this is hard stuff, right? If there's work to get done, I want to get it done. I don't know about work-life balance. And I don't know if I'm good enough. This is a really fun hobby that my sons and I just got into. And you can see we're really good at it. Really good. So I don't know if I'm good enough, but I'm trying to worry less about those steamrollers. My son drew this. As I was preparing to leave, he handed it to me from a book that he had made. And I don't know if you can read that. Skills. This is a book about daddy. He and I play Minecraft together. And I'm terrible at Minecraft. So I get a five on that. But life, I'm up there, top of the charts on life. Job, not quite as good. And love, back up at the top. Nobody cares. Nobody is going to care if that app that you're working on ever existed. This is what matters. Thank you.