Check out a free preview of the full Developer Productivity, v2 course

The "Q&A" Lesson is part of the full, Developer Productivity, v2 course featured in this preview video. Here's what you'd learn in this lesson:

ThePrimeagen answers student questions regarding the use of Ansible versus bash scripts, idempotency, and the importance of challenging one's comfort zone. He also touches on personal development and team dynamics, offering tips for creating a cohesive and collaborative team environment.

Preview
Close

Transcript from the "Q&A" Lesson

[00:00:00]
>> Speaker 1: Going back to the first thing you were talking about Ansible versus Bash scripts. One of the reasons that I've been doing Ansible or using that is for the item potency part of it.
>> ThePrimeagen: Yeah.
>> Speaker 1: Have you handled that at all in the bash stuff that you've done?

[00:00:11]
Or is it just like, yeah, run it it'll be fine.
>> ThePrimeagen: Yeah, so a couple things there. One thing is if you remove, obviously, something from your Ansible script and you rerun your Ansible script, it won't know about that thing. So that thing will continue to live. So it's like,

[00:00:24]
>> Speaker 1: [LAUGH]
>> ThePrimeagen: Most certainly the idempotency is like an important part, but it's also there's some lies around it is that it doesn't always stay up to date with what you think. Second, that's why I like the remove and then copy kind of plan, because that's very Ansible-like.

[00:00:39]
You'll notice I kind of stole that same ideas, I want to do that. So it's partially there. It's never gonna be there but nothing I do is that complicated. I can reinstall, I can re-pseudo apt install JQ 1000 times. I'm not gaining new versions of JQ over and over again on my system.

[00:00:58]
Apt is smart enough to handle that for me. So I just kind of like gave that part up and realized I don't think that part really matters for my personal system. If there is something that, every time I execute it, it adds one to a list somewhere on my system, and that's forever getting bigger, hopefully I would discover that.

[00:01:12]
And then I can write an if statement for that one thing. You minimally, if you're using, what's it called? If you're using that, you gotta admit. I like that's pretty sweet. Right, if you're using Ansible and I just like update and just execute that fast, you're like, dang, that is, I like that.

[00:01:27]
>> Speaker 1: I'm tempted.
>> ThePrimeagen: Yeah, this is the whole driving factor for me too was to develop this entire thing was cuz of Ansible slowness. Cuz I didn't want to do that. I really try to use tools first and when they can't conform to what I want, then I try to build my own.

[00:01:42]
And so this is me building my replacement, Mark?
>> Mark: How do you keep your dot file repo updated with local config changes, since you don't use stow anymore?
>> ThePrimeagen: So that's why, if you notice that, it's always copy over. And I'm always in the habit to edit my dev folder, not just the thing.

[00:02:03]
So you did see me here for a brief second to get the little typing, these little typing symbols right here. As I type, I went like this and edited the live version. That means the moment I push this, it's gonna just replace it, which it already did. So if I were to rerun this, my keystrokes will no longer be right here.

[00:02:18]
It's just running right now. Cuz I didn't wanna edit the actual file cuz it works for me when I'm at home. And so that's kind of my approach is that I've just built in a habit. I have a convention over a configuration. So when I want to edit something for my personal system, I go to my dev folder and then I do my edit and then I push all out.

[00:02:37]
Look, I still even have my previous play books. See, I told you I was really building Lula here. I still have them all right there and so I just edit it there, and then I go dev n, right? And then that will go delete everything and re-add everything and so I just keep on doing that process.

[00:02:55]
>> Speaker 4: The major tools that we talked about, like Bash, Vim, and t-mux. What was your progression for how you adopted them? Was it you kind of went on a deep dive and learned them all and to for this setup like this, or you kind of picked them up along the way throughout your career and pieced them together?

[00:03:11]
>> ThePrimeagen: Yeah, so in 2012, I picked up vim motions and IntelliJ. I thought vim was for old, stupid people. Honestly, I had that very kind of, a churlish a mindset of young kids when they're 22 and they're just like, yeah, Vim's for stupid old people, why would you wanna do this?

[00:03:30]
So that was my mentality in 2012 and then I did Vim motions, and I was just like, hey, hey, man, I love Starcraft. I love this too and so it's just like I started getting into that and then I remember I was just really fast at using Vim.

[00:03:43]
It just spoke to my heart. It was just the thing I really, really liked and so I could definitely do this. I really enjoy this and then in 2000 and some time, 2015 I had a co-worker named Yunong, and he joined old joint engineer worked on Node way back in the day.

[00:03:59]
Then he just it's kinda helped me around, playing around with my Vim RC. So I just started using Vim instead of IntelliJ. I was like, it was really fun. Started using that, kind of explored around, eventually, kind of gave up, went back to IntelliJ but I just used it for a while.

[00:04:09]
Then I watched a co worker named Anders back, and he's really, really good at C++. And a guy named Guy Serino, he has some guy, nice try, guy. That guy, they just both were so fast and they're just environment would switch all over the place that I just watched and went, okay, I'm gonna learn this.

[00:04:26]
That's what I want. I want their editing speed. Because when I went over to Anders side, I said, hey, there's a bug in this version of TV why? And he's working on something. He's like, hold on, swap over. Checked out a new version. Did this, this, I was just like, that was the fastest thing I've ever seen.

[00:04:39]
How did he do that? Now, I understand all the things he did. He does it through Emacs. So I will say he's a sinner but we'll get there, maybe one day we'll bring him over to new Vim. But nonetheless, he was so very, very fast, and it just kind of impressed upon me that I've been living in 1999.

[00:04:56]
I wanna live in 2077 right? I wanna be way out there with all the speed and everything and I wanna be the fastest possible coolest way to do things. And so I'm like why am I not doing that. And so then that kind of just stuck it in me so in about 2016 was that that happened.

[00:05:10]
So I went i3 and then t-max came a little bit later and then just kept adding things over the course of the last eight years.
>> Mark: How do you keep your mullet looking so good.
>> ThePrimeagen: That's a great question. So I use my wife's shampoo. She spends a lot more on shampoo than I do and so I would use Gurney a fruittease normally.

[00:05:29]
Second, obviously, I'd like to thank my mom's dad. Thanks for having all that hair. Mom's dad, cuz I am in my upper 30s and still mostly half hair, so I'm pretty happy about that. And then lastly, obviously, I would just say just adopting the lifestyle of a mullet makes your mullet more beautiful.

[00:05:45]
So I've been really thinking about drinking a lot more Miller Lite these days shooting, shotguns off the back of ATVs, just really living that lifestyle.
>> Speaker 5: Obviously this is a lot of like your own what you do, yeah your setup is but the kind of fast shut up and just doing all those things that's kind of the skeleton.

[00:06:02]
You can throw in whatever you actually want in there right.
>> ThePrimeagen: Correct.
>> Speaker 4: It doesn't have to lead you towards the dark path of Vim.
>> ThePrimeagen: It doesn't have to lead you towards the dark path of Vim. And I think more importantly what it should lead you towards is the desire to do something to take away all the annoyances of your day whatever that looks like.

[00:06:20]
And then you have to be willing to do something that's counterintuitive. When I learned Vim, I thought it was counterintuitive, as I specifically said for old, dumb dudes from the 70s. I didn't wanna hang out with those guys. I was like, those kind of stupid other command line tools, and then all sudden, I used it.

[00:06:34]
I'm like, okay, I was wrong. I was the bad guy in this situation. The call came from the house. The killer's in the house and the killer's me, right? I was just realized that I was the wrong one in this situation. So things that are counterintuitive at first are harder to adopt, but then when you do it, you realize how much better it is.

[00:06:49]
One of the best examples, I think, is that what? Every single professional golf player holds golf thing like this with crossed fingers in this very specific way you're supposed to hold it. I think there might be one or two that don't, but naturally I would hold it like that.

[00:07:05]
I'd get ready to try to smash it. It's like, no, you gotta do all these weird things with your body and they're all counterintuitive, but then when you get good at it, you'll be much better than the person who never does it. But that's only if you want to get to that level.

[00:07:18]
Do you just want to hold it like a baseball bat and swing? Some people just wanna get that good and they can get to a certain point of goodness, and that's okay. And maybe that's what you're okay with shooting for. I was never okay with that. So for development, I was ready to hold my head, still do all the things, get a trainer, put stuff on my feet to hold the golf club, all weird.

[00:07:35]
And then now I'm using Vim and all these things, right? So it's like I was willing to make that leap cuz I wanted to get to the professionals. I didn't wanna just keep swirling around in what felt comfortable without ever leaving that. And I do also, one more thing, I know, there's another question.

[00:07:49]
It's hyper important to always challenge your comfort zone. Whatever that is, doesn't matter what it is. In programming, you always want to push yourself into something you don't know, at least for some small amount of time. I have a personal theory, this personal theory, that most burnout happens because you never see anything new.

[00:08:05]
It's just like, you wake up, you go to your job, you do the thing, you already know the thing you're gonna do, the thing's already been planned for two months. And in two more months, you already know what you're gonna be doing, you already know all the answers, it's just a matter of you mashing in the keys, you're hyper-unmotivated.

[00:08:16]
So your work goes by at like a snail's pace, and it's just like every single day. Of course, you'd be burnt out. And so for me, I have to after work or in my spare time, do things that I think are cool or exciting, build things I didn't think I could build, because for me, that makes the rest of life good.

[00:08:34]
It's if I can't find a time to enjoy it for what it is, then I can't enjoy it for when I have to eat meat and potatoes or eat the plain stuff. So that's personal mentality there, all right, Mark?
>> Mark: Two new questions came in around the happiness of a team, and kind of applying these principles to working with other people.

[00:08:56]
Have you found any sort of tips in your time working with teams at Netflix or wherever applying these principles to working with other people?
>> ThePrimeagen: Yeah I've been through quite a few different teams because I spent over a decade at Netflix. I've been on many different teams and many different teams have totally different operating procedures.

[00:09:19]
Some people want to get together and have a style guide. They want to have required testing, whether it's integration, whatever it is, right? And some people want none of that. And so obviously you have to play the team you're on, and every team is slightly different than the other team you're going to be on.

[00:09:34]
And so personally, what I find is that, I never try to die on bad hills. I find that that to be the best way to create a good team. Is that if someone uploads something or creates a PR with a style, I don't like a naming convention, I don't like any of those things.

[00:09:49]
I never say any crap thing about that, because I just think that that is just a great way to build animosity. I can think of people specifically that I never want to work with, cuz it's just like every kill, you will die on. So it's like, some are important, some aren't important.

[00:10:03]
Now, when an important one comes up, I'm gonna be willing to push against you, cuz I think that everything you say is just nonsense versus this. So for me, all about creating team cohesion or collaboration, right? So it's like, yeah, you'd like to do it your way, it's fine.

[00:10:17]
If we have a style guide, everyone has to have the same looking-ish code, so I don't care if you wanna do it this way versus that way. Some people like currying and lambdas and other people don't wanna do any of that and they want it this way with classes.

[00:10:27]
It's just I'm not gonna argue over the fine details because at the end of the day none of them matter. And so, that's my team approach. It's just only fight for the things that make sense and just let people do the thing they want. I don't have nearly the same approach to teams.

[00:10:43]
I think most software can be written, and most software's complete crap anyways, just due to time constraints and not knowing what's happening. And also just longevity of it being, you build something over two years. The first six months are just chaos compared to the last six months, you're just like, Man, I wish those ones were better.

[00:11:02]
So it's just like, yeah, I'm sure there does exist a world in which we could make a perfect team, where everyone's happy and everyone works on meaningful stuff. But most of us just have to try to fight Jenkins and make groovy work. It's just like that's life. So I try not to be too intense about it.

[00:11:16]
That's my team answer, at least.

Learn Straight from the Experts Who Shape the Modern Web

  • In-depth Courses
  • Industry Leading Experts
  • Learning Paths
  • Live Interactive Workshops
Get Unlimited Access Now