Developer Productivity Introduction
Transcript from the "Introduction" Lesson
>> So I did wanna start off this whole thing with my first big interview. And what I mean by that is that I went through college. I've been fired as a server once when I was younger. Right, none of those were really big interviews, right. You just have to be like, I wanna expand my horizon and boom, you got your job being a busboy, right.
[00:00:16] It's not very hard. But when I was in college I did my own startup. It was really, really good learned a lot, lost a lot of money. Then I joined like a smaller startup that's like been the startup phase for eight years. It was really terrible. Then my very first kind of big interview happened, and I still remember going in there and being nervous.
[00:00:36] I've never been nervous for an interview. I was for time back to back Champion of ACM programming local competitions, won a regional felt really good, great on the whiteboard, super excited. But this one I was nervous because this one, they told me my salary up front. I was nervous.
[00:00:52] I've never made a lot of money, lived off to $6 a day, very like, my goodness, this is gonna be a huge opportunity here. So I was very excited, very nervous and going through the whole thing I felt I was just nailing the problems, right? Doing it in Java on the board because of course good college student knows Java at that point in life.
[00:01:11] This is during the mid 2000s. And then they get to a question where they asked me this. All right, I want you to kind of fix a problem we have. We have a static site with 1000s of files on it. And some hacker got in there and decided that they were gonna put a little advertisement for their site throughout our code base.
[00:01:34] And so now you have to go through and find this string in 1000s of files and remove it. And I was, wow, okay, I think I could to that and they're like let's just start off first with something simple. Can you first identify all the files that hang the string.
[00:01:50] I'm about to do this problem and I'm a little nervous. So I get on Java and I get that buffered reader out string tokenizer and I'm tokenizing and I'm walking through they're standing folders, every directory, I see I recourse back through and do it all. I think I did actually a breadth first search.
[00:02:08] So I just added all the files to the end of a queue and then popped off the front of the queue. But nonetheless, I did all these things got done with it took like 40 minutes. It was a beautiful piece of fine Java done on a Whiteboard. And the interviewer went, all right yeah, that is definitely a solution that works.
[00:02:30] Have you heard of grep? And at that point, I was like, what he's like grep and I was like crap using grep. And I was just like, I don't even know what you're trying to say to me. And I felt so dang silly. And that was kind of like this point in my life where I always thought I was great at things.
[00:02:48] And then just in that small little statement, it kinda crumbled a little bit, right? I didn't realize how much I didn't know, until that moment. And then when I saw how easy it was with grep, the amount of shame I felt obviously went up. I was just like, my goodness, I could have solved this in 15 characters and I just spent 45 minutes, solving something in Java.
[00:03:12] This is ridiculous, I should have been able to do this much, much better. And from that moment on, I've always tried to take more time in learning what is the best way to do things. And so for the last seven years or eight years since then, I've been just really focusing on that.
[00:03:30] And this whole talk is gonna be the summation of all those things. And really in the last two years, it's really kinda of been my focus. And I kinda of came up with a little phrase that the length of knowledge is a measurement of its value. And what I mean by that is that, obviously if you know CPR and you get into a situation which you need CPR you only get to use it once, but it's super valuable, right?
[00:03:53] That one moment is super critical and super valuable. You may know it your whole life and never get an opportunity to use it. But you get to know it, it does not necessarily change that much, and you can use it at any point in your life over the course of 50 years.
[00:04:07] And so the value of it's really high, even if you can't use it, whereas like, say React Hooks, you know React Hooks. Four years ago, you couldn't use React Hooks because I don't think React Hooks were even a thing back then. And maybe in four years from now, there'll be something completely different.
[00:04:21] And so, the length of that knowledge is not necessarily wide, but it's very applicable today. And so today, I really wanted to focus on knowledge that can be used over the course of your entire career, as opposed to just something that will be applicable in today or in your specific job role.
[00:04:38] I also wanted to make sure that it's more operating system independent, meaning that if today you're using subsystem on Windows tomorrow, you're on Mac. The next day you're on Arch Linux by the wing people, you can use anything that I've showed you today on any of those systems.
[00:04:53] And I think that that's really where the power of this comes from, is that the value of it will just be useful forever, right? It's gonna be the whole career. And so let's kinda move in. And so I know that there's probably a lot of you out there that are watching that this is kinda their standard operating condition.
[00:05:12] You get onto your laptop, you open it up, you open up the VS code and that's all you open, right? Everything you do is within your editor it's a very Emacs lifestyle. It becomes your OS, I'm sure there's a web browser even built into VS code, and you can just go there and this is it.
[00:05:30] And so there's some things that are kind of really inconvenient, somethings that are super convenient and you just kinda deal with the things that you don't like, or you don't know that there's better paths. And this is just your experience and this was my experience for a long, long time.
[00:05:44] I didn't have VS code though, I had NetBeans I don't know if you know about this greatest productivity tool ever created. And then if you do have terminals, your terminal experience probably looks a little something like this, where you just have so many of them. And every time you have to find that one task that's running, you just have to do that Ctrl+Tab or I don't know what it is on Mac, Cmd+Tab.
[00:06:06] All the way through until you can find the right tab that has the running process and do something with it. Very frustrating, I mean, my goodness. This picture alone, I can feel my cortisol rising slowly just looking at it. And then of course Windows, I am positive a lot of you out there do the Cmd+Tab, Ctrl+Tab kind of lifestyle where you have to click through manually all of your Windows.
[00:06:30] Or even worse you probably use that exploded view and play a game of Where's Waldo, looking for that one thing you need open jumping into it. I mean these things are just huge time sinks and ultimately what they really come down to is you get some sort of fatigue.
[00:06:46] Every single day you're performing these really simple tasks over and over and over again, and they do take some level of mental effort. I remember when I used to kind of Cmd+Tab through all my tasks or all my windows, I would actually look and kind of roughly calculate which direction was shorter.
[00:07:04] And either do a Shift+Tab or a Tab just to get there faster, right? Or you're using these desktops and they have these nice transitions to them and you're searching through each desktop. It's just so much thought and going into trying to do the thing you wanna do and not just doing it.
[00:07:19] And so by the way, that's my TEDx talk. I hope you appreciate my TEDx talk, Search Fatigue, it's gonna be up there, it's gonna be right up there with power stances. Anyways, by the way, I don't use VS Code, just in case anyone is wondering, I just wanted to get that out there.
[00:07:33] But there is actually another way. There is a better way. There's ways I think, that could really make your life more pleasant as a developer awaits for you to be able to really move all that clutter out of the way and just get right to it. And so you're probably asking, well, what is developer Productivity besides for being oddly capitalized with the P and not the D?
[00:07:56] That just happens when you're creating a presentation. Things happen, nobody knows why. I kind of made this really important, very well thought through diagram so let's kind of go over it. So there's soft skills. And if you don't know what soft skills are, they're kind of the really hip phrase right now in the Silicon Valley.
[00:08:14] Everyone's all about the soft skills. Soft skills are your ability to collaborate, to communicate, to elaborate, everything that kinda ends with ate and you just got to be really great at it and it's just like the focus right now. And obviously the opposite of soft skills are hard skills.
[00:08:29] Because that's the only thing that makes sense, I always considered hard skills. Like how good are you technically at this you really know React. These are your hard skills. By the way hard skills I just made that up a few weeks ago so don't use that anywhere, no one will know what you're talking about.
[00:08:44] And this is this side, you can be really great at hard skills and be completely lacking at soft skills, right? Unable to communicate or vice versa, you can be really great at communicating and displaying ideas but not really able to implement them. But I kinda feel like there's a third set of skills that we don't talk about and I didn't necessarily plan for in this diagram called developer productivity, right?
[00:09:04] It's your ability to transfer between these two and really kind of move everything out of the way. And so I felt like this diagram was pretty good because developer productivity doesn't make you better developer, right. It doesn't mean that you're now gonna be an all star. You're not a 10x developer.
[00:09:18] It's just a new set of skills that help you in your day to day life. And so my definition of course, is all the things that separate you from working, and not everything I'm gonna talk about today will be for you. But the good news is not everything I talk about today builds on the previous item.
[00:09:38] That means, as I talked about one topic, it can be completely disjointed, though related to the previous topic, and so everything will have its own usefulness. And not all operating systems will be as good, right. Windows will not necessarily be as good for some of the things, but it'll be better for other things.
[00:09:53] So just take each one with a grain of salt, see how it fits into your lifestyle, see if it really makes it better for you. It's gonna take a little bit of exploring on your behalf. And lastly, if you do a lot of these things, you are gonna be able to have what I refer to as the by the way factor.
[00:10:09] Now if you don't know what the by the way factor is, I've already said it a few times. A good example is that I use Vim by the way. Now immediately I get to just drop that in a conversation. People think I'm cooler. I use Tmux by the way, I type on Dvorak, by the way, right?
[00:10:24] You get to just use all those phrases. Now I can't say I use Arch Linux, by the way. I mean that's like the ultimate by the way, I'm not there yet. One day I'll have it when my kids go to college and I have enough time to finally customize my operating system.
[00:10:38] Then I'll have the full by the way set. So here's kind of like the itinerary of what we're talking about. Now this is obviously a very shrewd yet crude diagram that I made not too long ago. The first part I'm calling it the 0 to 60, right? This is kind of you and your computer becoming what you wanted to be.
[00:10:59] I find that this section I thought was the most boring but every single time I need to do anything on my computer, it is the best thing ever. I'll get more into that. Next, it's kind of like a navigation terminal section, really just deep diving into that kinda coming up with some tools, building things out, making it into what you want it to be.
[00:11:19] And lastly, we're gonna just be talking about software and tools. Now there's kinda like a little surprise at the end. I'm pretty excited about that last one, we'll do something pretty awesome with it, but really just the future and current tools that are available. And so let's move on.
[00:11:34] And so why do I care? Why do I care about any of this? Because this takes a lot of time, a lot of effort. Why am I telling you about these kinda mundane tools? Well, I like to tell the story about a time in 2016 I believe I had this problem with a Netflix television app.
[00:11:52] Now if you don't know anything about the Netflix television app, it's a c++ application that has a cadences for these releases. And so when I say hey, I'm using say the app version for 20, that is gonna be at some point in time. And if there's a bug, we're gonna have to open up that version of the c++ code base, compile it, get it ready, run it out and go, okay, what's going on here?
[00:12:19] And obviously we have some tools around it to make it really simple. But nonetheless, it's actually like hard version, something that is not very familiar in the web world. And I went over to one of the lead developers over there his name is Anders, and I said hey Anders, like on this version I am seeing this bug and I don't know why.
[00:12:36] What's going on, and he turned to his computer. He's in the middle of work press like three buttons, get menu popped up. He jumped over to that version, it started immediately building, he was just bam bam, bam and I was blown away. I was like, how in the world is he doing that?
[00:12:52] This is incredible, whatever I've been doing is evidently wrong because that would have taken me 10 minutes just to get set up and he did it in 15 seconds. The amount of just effort he does not have to put in to doing mundane, repetitive tasks is credible, I learn this skill.
[00:13:11] But one thing I noticed right away is he was using Emacs. And if you're not familiar with Emacs, Emacs learning curve is rather difficult so I decided that I can do non-differentiable, learning curves. So I chose a less difficult but still difficult editor, Vim. I find that this learning curve just feels better for me because once I finally got to that level, it's just hard and I can deal with it.
[00:13:32] And so I went with Vim, I started diving further and further and at that point, I was using IntelliJ with the Vim plugin. It was a long and difficult road for quite some time. And if you're wondering hashtag, self promotion here. I do have a VIM Fundamentals course here on Frontend Masters, my goodness, like I plan this little loop right there.
[00:13:53] All right, so who am I? I get to work at Netflix. I think that that is awesome. I love Netflix. It's been a lot of fun. For the last couple years, my primary focus has been more on kind of network stuff. I've written part of http2, written a Web Socket protocol.
[00:14:09] All the stuff for our television app to kind of change it in certain ways. It's been a lot and lot of fun. Apparently, what I'm best known for, though, is streaming on Twitch. I'm the guy that codes and screams and reads chat at an unusual pace. It's just I have too much energy and I'm like I just gotta get it out of me and so that feels like a great place to get it out of me.
[00:14:29] I also make slightly meaning and informative videos on YouTube, mostly meaning, but some of them. I'm married to a beautiful wife, that was y best accomplishment, thus far, and of course four kids, it's increased by 33% since the last time I believe I recorded the show. And so this is great, new kid awesome by the way, thanks for asking.
[00:14:50] I genuinely appreciate that. And I do wanna kinda stress this one more time, which is, everything we do today can be done in piecemeal. You don't have to see 500 things to do and go wow, I can't do any of these things right now. How am I ever gonna do all these things.
[00:15:10] I will show you various pieces of technology that are really cool and gonna make your life significantly better. But you can just go, okay, I remember those, I hear them at some point when I have a time out, investigate one of many of them.