92: Backend Dev is the Best End Dev

92: Backend Dev is the Best End Dev

Released Friday, 21st April 2023
Good episode? Give it some love!
92: Backend Dev is the Best End Dev

92: Backend Dev is the Best End Dev

92: Backend Dev is the Best End Dev

92: Backend Dev is the Best End Dev

Friday, 21st April 2023
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

Simon B:Hello and welcome to another episode of the All the Code Podcast. I am Simon B, a web developer and CTO based in the UK, and I am joined, as always, by my co-host, Simon G.Simon Grimm:Thanks for no special introduction today, Simon. ReallySimon B:You'reSimon Grimm:gladSimon B:welcome.Simon Grimm:you prepared this one piece for me today. But anyway, I don't need a special introduction because we have a special guest today, about which I'm very happy actually. I don't know our guest for very long, but I still feel like he could bring something cool to our show, so I told Simon that we definitely need to invite him, because he's been working on some interesting project and I just like interesting people, so today we got Lane from boot.dev.@wagslane:Thank you, glad to be here.Simon B:Welcome to the show, Lane. Yeah, so you are another guest that Simon G has bought in. And yes, I didn't give him a special intro this week because I wanted to get straight to the chase. So who are you, what doSimon Grimm:I'mSimon B:youSimon Grimm:gonnaSimon B:do,Simon Grimm:go.Simon B:and what are we gonna talk about today?@wagslane:Yeah, thank you. Yeah, so I'm Lane, Lane Wagner, as Simon so graciously announced. I'm the founder of boot.dev. So I've been a backend developer for the last seven, 10 years, been writing code for about 15. And I kind of transitioned from a hiring manager role, working on a team writing Python and Go, into kind of this founder role for this new company. So we teach developers how to become backend developers, or rather we teach students how to become backend developers. They're kind of an online interactive website.Simon B:Nice.Simon Grimm:Have you started as a recruiter or have you started as a developer and then transitioned into this hiring role?@wagslane:No, no, no. So I definitely started as a developer, worked my way up kind of the traditional way from junior dev, senior dev, team lead, hiring manager. I was actually head of engineering at a startup for a while, went backSimon Grimm:Mm-mm.@wagslane:to managing a smaller team, and then decided to start boot dev, raised a bit of funding. And now it's just me and one employee and we write courses, make videos and all that kind of stuff.Simon B:Nice,Simon Grimm:Yeah, so that'sSimon B:so I'mSimon Grimm:exactlySimon B:just looking at it.Simon Grimm:why I invited you. And my leg is killing Simon, I guess. ButSimon B:Ha ha.Simon Grimm:we talk a lot about frontend in here. So Simon and I pretty much every other episode is either called the development of AI or the end of frontend or frontend whatever. And I just thought, well, there are probably some backend developers in the world and they maybe want to hear about what's possible for them. So I thought, who could be better than Lane for this? Because I honestly, I usually see these code schools and they're like this is the react course, this is the CSS course, this is the whatever course. Is boot.dev like the first website that's focused on backend?@wagslane:Yeah, there's surprisingly like very little resources online for backend developers. And I'm glad you're considering talking about backend on your podcast, because now you can truthfully call it all the code rather than half the code. SoSimon B:I@wagslane:it'sSimon B:like@wagslane:a goodSimon B:that,@wagslane:thing.Simon B:well done. Nice.Simon Grimm:Ah ah ah!Simon B:I like this guy. This is good.@wagslane:Yeah, no, it's actually crazy. And this is one of the main reasons I started Budev. Like backend developers. I would say about half of the backend developers I've worked with over the course of my career has had CS degrees, and maybe half haven't. With frontend developers, that ratio is much more stark in my experience. A lot fewer frontend developers tend to have traditional CS degrees, and in my opinion, there's really no reason for this divide other than there's better resources online for frontend devs. Again, in my opinion. Until now, of course. I'm...Simon Grimm:Ha@wagslane:workingSimon Grimm:ha ha!@wagslane:every day to make backend stuff. But yeah, there's like this kind of void. Like nobody's making, you know, very interactive experiences for teaching people how to write Go, how to make servers, all of that non-visual stuff.Simon B:But I mean, but this is because backend dev is boring, right?@wagslane:Hahaha!Simon B:LikeSimon Grimm:Oh,@wagslane:Savage!Simon Grimm:ISimon B:that'sSimon Grimm:likeSimon B:why.Simon Grimm:where this is@wagslane:Hahaha!Simon Grimm:going.Simon B:That's why, right? Cause back-end dev. So in a second I'll tell you my background, but I mean, come on. There's no animations, there's no gradients, there's no nothing. It's just data and endpoints and boring processes.@wagslane:HaSimon B:Like@wagslane:ha!Simon B:who wants to do, why do you want to do back-end dev? It's dead anyways, and it's SuperBase and Firebase solved this problem.@wagslane:So there's like absolutely a kernel of truth to what you're saying. And I think this is part of the reason why so few people are making these courses. It's really obvious what to do when you teach someone front end dev. It's like, oh, we're going to like throw some HTML and CSS on the screen. We're gonna like reload the browser and we're gonna see some pretty things. To make backend development and like traditional CS education interesting, you have to try just a little bit harder. Like I would argue it is really fun. I like playing with a command line, like read a vowel print loop and writing code and getting feedback and that sort of thing. But like you kind of have to know what you're doing upfront, right? Like it's not as simple as acting as a user. Like when you work as a front end dev, the results you interact with as a user would, right? You open a browser. When you're building a backend project or a command line project, you don't really act like a user so much as you act like a developer, which means there's this faster ramp up time when we're onboarding people onto the platform where we have to teach you what is a command line and what does printing something to the console even mean? Because that's your primary way of getting feedback.Simon B:Yeah, 100%. And so I should now say that I consider myself a backend dev before a frontend dev. So I love backend work. Like if@wagslane:Ha haSimon B:I,@wagslane:ha!Simon B:so I actually went to the end of the fifth round of interviewing for Shopify for a senior backend role. I didn't get it. Unfortunately, I messed up Conway's Game of Life. I'd never seen it before, but apparently it's pretty standard if you've done a CS degree. I didn't know, so I had to. I had to solve it on the fly in an interview and therefore didn't get the role. But I was super excited about getting to just be a backend dev, because the stuff that I get bogged down with the most and kind of hate doing the most is. like the boilerplate front end stuff, like great, another login form, like oh great, another form, another animation that I can't get right, great, CSS stacking context has got wrong, so therefore my Z index isn't working, like all of that kind of rubbish. Actually, my favourite job that I had was making just really quite horrible RXJS pipelines. in NestJS of interacting with five or six different services and APIs and wrangling that data and understanding how to store it and how to invalidate it and update it and all that kind of good fun stuff. I really, really, really love that kind of work. And you're right, there is no that I can think of off the top of my head other than a couple of Andrew Mead courses on Udemy. I can't think of anybody that comes to mind as being primarily a back end. Focused person until now obviously and boot.dev So yeah, I think this is this is really valuable and I hadn't really considered That it's when you're is that front-end is more approachable I just assumed there was a higher demand for front-end roles and therefore that's why the boot camps did front-end But you're right. It's much more in keeping with how people with no technical experience, that's how they're used to interacting with software. So let's teach them how to do that bit and shrug. They'll learn back end when they need to learn back end, right?@wagslane:Yeah, I mean this might actually be an interesting statistic to you. It was to me. I assumed that there's more front-end developers in the world than there are back-end developers. But last stack overflow survey says there's twice as many people with the role back-end developer as front-end developer.Simon Grimm:Pure backend developer?@wagslane:Yeah, so they break it down based, like they have a bunch of different roles and every year it changes. I actually wrote this huge article where I like grabbed all the data from the last 10 years and like tried to kind of normalize it becauseSimon Grimm:Did@wagslane:theySimon Grimm:you build@wagslane:changedSimon Grimm:a scraper@wagslane:the way.Simon Grimm:for it first?@wagslane:Well, they provide the data in CSV, but it's different every year. So like they change how they ask the question. So you kind of haveSimon B:Yes,@wagslane:to likeSimon B:because@wagslane:makeSimon B:we wouldn't@wagslane:some.Simon B:want to be able to compare year on year now, would we? That would be too silly.Simon Grimm:I'm sorry.@wagslane:Yeah, exactly. So I'm like looking at these trends, but yeah, it blew my mind. Like when you break down front end, full stack and backend as separate roles, there are way more people doing like primarily just backend work than primarily just front end work. Which is pretty interesting. And I actually have a very kind of similar experience to you Simon, like I got a CS degree. So I did some front end work in there, did some backend work, obviously mostly CS theory, but It's like, it's more fun and like, there's more dopamine involved when you're like learning front end at first. But most people I've talked to, unless they like love design, as they get a few years in, in my experience, they tend to enjoy back end a little more because you're more, you know, if you enjoy systems thinking and like raw programming and architecture, then back ends really where you get to do most of that creative work, even though there's like less visual kind of a, of an aspect to it.Simon B:Yeah,Simon Grimm:So,Simon B:I thinkSimon Grimm:so, so, yeah.Simon B:we have a great lag between me and Simon G today. Go on, you go ahead.Simon Grimm:No, just like if I'm now starting out and learning back end stuff, what is like the rough path of things? Because honestly, I would call myself somewhat of a full stack developer because I know front end and I can bring up some kind of Node.js API and return some data from a database and write files and whatever kind of stuff. So traditionally, I would now call myself full stack because that's cool. But what is like the real path of becoming a backend developer? I actually don't know. For backend, it's not really like a huge black box. I kind of know what's going on. But what are like the main languages right now? I think you said Python and Go. And Rust, I think, is also quite cool. But what's the path of? Do I like get started really with how does a console work and then how do I build an API and how do I write files and do I then get to threading or what is the end game? Because I'm really like a noob when it comes to backend, honestly. So I would just love to know what's like the learning path.@wagslane:Yeah, so like with frontend, it's pretty obvious, right? Like you do HTML, CSS, vanilla JavaScript, then you like pick a framework and there's like 10 billion and like you pick one and you learn it and then you can like build some stuff. Backends a little different in that you kind of need to like, like the entry points, there's more entry points. It's not always HTML, right? So like I start people in Python. You don't have to start in Python. I made that like educated decision because I think. Python's a great language to start with. Its syntax is simple. You can do a lot on the command line with it. So you can kind of build fun and interesting scripts quickly like with data and CSVs. And that kind of makes up for some of that like lack of dopamine that you'd get by opening a browser and kind of seeing what you created. But like you could start with anything. My brother started with C++ and it almost killed his programming career because he hated it so much. And thenSimon Grimm:Me@wagslane:like...Simon Grimm:too me too@wagslane:Yeah, he was like this is so awful and like later he learned C++ and loved it But um, but like starting with it was really really hard. So I kind of have this belief that to be like To get to that first job actually don't think it's best on the back end to like just learn one language Because I think you'll be such a more well-rounded engineer if you learn a couple So that's why we do Python and go so kind of start people in Python We learn some basic things like we just learn coding for a bit. We learn like how you structure code how you interact with it through a command line, object oriented programming, data structures and algorithms, that kind of stuff. And then we move into, okay, what is a front end and a backend? And I actually use JavaScript to teach the fetch API. And I don't even teach HTML and CSS, I just teach the fetch API so that you can understand how people are going to make requests to your server and get data. And then weSimon Grimm:Ja, mit Sinn.@wagslane:learn Go and web servers and databases and Docker, and we deploy a web server. So that's like kind of the like high level roadmap and there's definitely more stuff I'm going to be adding, but it's kind of amazing how you can just like totally skip HTML and CSS other than to like hand wave and say like, these are things you probably have heard of and like they're how we render stuff in the browser and like people are totally fine with that.Simon B:Yeah, I thinkSimon Grimm:Have youSimon B:that's...Simon Grimm:ever given a course on Python or Go on a site like Egghead or this new site called galaxies.dev?@wagslane:I missed the first part of the question, sorry.Simon Grimm:Have you ever given a course on Go or Python on a different side?@wagslane:I haven't!Simon Grimm:I heard there's this new platform which is up and coming, Galaxies Dev.@wagslane:Yeah, if I had to choose between those three, I'm pretty sure I would choose Galaxies.dev.Simon Grimm:Oh yeah,@wagslane:It'sSimon Grimm:yeah, yeah,@wagslane:the one I keepSimon Grimm:I@wagslane:hearingSimon Grimm:heard the@wagslane:about.Simon Grimm:pay- yeah, keep- also I hear people telling it looks so good and the payment is great You should definitely reach out to them@wagslane:hahahahaSimon Grimm:But but Simon I cut you off once againSimon B:So I was just going to say, like, I think starting with general programming is a really sensible way to go and also stops people getting stuck in this sort of something I've noticed is the route. If people come into front end development, they tend to just get quite stuck in front end development because they're rushing to react. Basically, it's the rush to react because that is the brand that is the skill. And so, you know, I think the sort of rush to react means that people kind of get stuck in this JavaScript world. They don't even necessarily nail down HTML and CSS particularly well. They eventually get forced to learn CSS in some proper capacity. But many devs put that off for over a decade. So, you know, who knows when they'll get there. Whereas when you do backend dev first, that is more like you say, general programming. And so therefore you come in with a much more. kind of open mindset, you naturally become a polyglot programmer. And that's not polyglot with a capital P and all of the fanciness and, and stuck upness that can come with that. It's just, Hey, you're going to be doing some shell scripting. You're going to be doing at least one backend programming language. And if you want to do some front end, well, then you're going to have to learn JavaScript. So if you learn Python and you want to be a full-stack web developer, well, then you're going to have to learn JavaScript. Now I say to people, if you want to just get into the industry as quick as you possibly can. just learn JavaScript because it will run in both. However, if you know that you wanna do backend development, then great, I think Python, I mean, Flask is great to get up and running with, I hear Django is excellent, I've never personally used it, but I've heard it's one of the best backend frameworks to use. So I think that's a really sensible way to go because it sets people up with a much more... broad foundation and I just think one of the worst things you can be as a new developer, particularly as a new developer, is to be opinionated because that's just going to kill your career before anything else will. Like being opinionated, only doing React or only doing this or only doing that is just going to kill you. So as somebody that clearly lives and breathes the backend world and like you I think I've dev'd for about 15 years across a different variety of things. The number three on my to learn list for the last 10 to 12 yearsSimon Grimm:YeahSimon B:has been Ruby on Rails. It's been perpetually number three on my to learn list. And then I learned number one and then something else jumps into the number two spot. And it's just been there. I don't know what queue structure that would be. And basically nothing can ever go into index two on my to learn list,@wagslane:theSimon B:right? Because it's always Ruby on Rails. So my question for you is, What is the current Ruby on Rails that was so amazing when we saw GitHub and Airbnb and I think GitLab and all those Shopify, all those amazing companies that came off the back of Ruby on Rails? What's the current Ruby on, is it still Ruby on Rails? And what in your view is the current Ruby on Rails?@wagslane:That is such a good question. So a lot of my career, especially over the last, like, say five years, has been migrating code that's been written in either Ruby on Rails or Java into Go.Simon B:Interesting.@wagslane:Not like wholesale and not because Go is better, but because we have performance problems typically. So like, and when it comes to Java, to be fair, it's usually not actually performance problems with Java. It's usually like we have this giant Java monolith and it's using one database and like things are getting really slow. So we're gonna break things out into microservices. Oh, and while we do it, we like Go. So we're gonna do that. Ruby on Rails has been the opposite. So I worked at a company that kind of ingested massive amounts of data from the internet. So like blog posts and tweets and all this public data from Reddit. And using Ruby on Rails to run those like filtering and sorting algorithms costs like 10 times as much money, sometimes more than to run the equivalent service in Go. So like just significant cloud cost savings to rewrite portions of the app. So we didn't rewrite the entire app, but we basically took that data pipeline and built some services in Go that could do it. So like, what is the framework? We'd have to consult the Stack Overflow, like developer survey to see like what the trends are year over year. Definitely in my geographic area, right? In Utah, Go has been gaining a lot of traction. Go is interesting though, in that And like just to preface this whole thing, like I've spent way more time building services in Go than even Python in my career Although I did I did a lot of Python especially in school The interesting thing about Go is that It has this like kind of a new modern feel to it and it's very simple And I've found that a lot of like people with a DevOps background or like a traditional ops background really love Go For that reason because it's like so easy to read and figure out what's going on And when you deploy it, you don't have all these runtime dependencies, you have a statically compiled binary. The initial downside to Go is that not a lot of people know it yet, right? So you have to kind of train up your Ruby on Rails devs or your Java devs on Go. I don't think there's a silver bullet. For example, Rust, as Simon G mentioned, is getting more popular, although the whole Rust foundation news kind ofSimon Grimm:Yeah@wagslane:just... snatch defeat from the jaws of victory. We'll see how that goes.Simon Grimm:Is the primogen into rust or is he into goo?@wagslane:He's a rust guy. I don't actually know his opinions on go. I know he mentions it from time to time, butSimon Grimm:Yeah, I think he's just the god and everything.Simon B:I've had the misfortune of writing some Rust. You can get my thoughts on Rust having the way I phrased that.@wagslane:Ha ha ha!Simon B:We had a cloud service at a job that I was at where they'd done it in Rust because they wanted it to be quick. The fundamental problem was not the language it was written, then it was the data structure of the underlying data. And it was one of those cases where they took the Rust Band-Aid and slapped it on and went, well, that's going to be fast. It's like... Well, it will be fast because Rust is fast, but you don't need Rust to make this fast. You just need a better data storage structure. And it was so frustrating. Like basically this was, this company, I don't know if anyone from that company listens to the podcast, they probably don't. That company was basically AWS services, everything. To the point where I spoke to some AWS devs and said, hey, like we're doing this, we're using this, we're using this, we're using this. how do we make this kind of a better experience for us? How do we reduce some of our costs, our dev time, et cetera? And they replied and went, don't use so many AWS services.@wagslane:HaSimon B:Like@wagslane:ha ha!Simon B:you'reSimon Grimm:Ha haSimon B:usingSimon Grimm:ha!Simon B:too many. That is what your problem is. I'm like, yeah, I know, but the CTO loves them. So yeah, anyway, I think it's interesting that you've said Go. I've heard lots of really good things about Go. The only reason I haven't looked into it and explored it myself is that everything I've heard about Go, it sounds like it's great. when you have scaling issues and scaling problems. But if you don't have scaling issue and scaling problems, you're probably better off doing it in something else to then get to those problems further down the line and then use Go when it's really valuable. I don't know if that's true, whether you have a take on that or not.@wagslane:Yeah, the interesting thing about backend development, as we kind of alluded to earlier, is you can use any language out there, right? And that's going to work when you're a small startup. You don't have any hard requirements typically when you're just getting started. You don't have many users, you don't have massive data. Any language will work. And frankly, the right choice when you're a small startup is to use what your founders are familiar with or your first employees are familiar with. Like that's going to be the most effective thing for you. The only time these like, kind of like, nuanced differences really start to matter is, either when you start running into like, problems of scale or like, personnel problems, right? Like you have this team that's like, all, you know, very good at X and so like, switching to Y would be kind of silly. But yeah, Go has like a few key advantages. I mean, I used it at Boot Dev, like from the start, just because I'm... very fast in it. Like I can actually spin up a server in Go faster than I can spin up a server in Flask. Just again because you know I've done it so many times. But yes the nice thing about already using Go at Boot Dev is I'm going to be able to take those like performance problems that we will run into as we growSimon Grimm:Yeah.@wagslane:much farther before having to like make a switch. Discord famously had to rewrite one of their Go services in Rust. Because Go is a garbage collected language. It runs, I would argue, it's a little faster than Java and C Sharp land. Much more memory efficient typically, but it's still not on the same performance level as C or Rust. So anyways, they rewrote in Rust. But they didn't do that upfront. They were handling billions of messages before they had to make those changes.Simon B:You should probably just define garbage collected language because we do skew towards a more beginner focused um, pod, uh, audience and I am pretty sure I know how to define a garbage collected language but since you used it in a sentence so confidently, I'm gonna ask our guest to define a garbage collected language forSimon Grimm:I'm out.Simon B:us please.@wagslane:Yeah, definitely. So pretty much every interpreted language, which are languages like JavaScript or Python, languages that in order to run them on your machine, you have to install some interpreter, right? Like the Python interpreter or the Node interpreter. Pretty much all of those languages, like for the most part, are garbage collected. And basically what that means is the interpreter takes care of memory management for you. When you create a new variable, which... You know, you say x equals five, that five has to live somewhere in your computer's memory. You don't have to worry about cleaning that memory up manually in your code. You don't have to like later in your code, say, you know, delete five or whatever. It's handled automatically by the programming language. Go is that way. It's automatically garbage collected by the Go runtime, even though there is no interpreter in Go. This is like one of those interesting things about Go. It's a compiled language that kind of ships with a little bit of garbage collection. code kind of built in. WhereasSimon B:Interesting.@wagslane:in languages like Rust, yeah, languages like Rust and C, you kind of have to manually clean up the code. Rust takes a different approach. It's a little safer than C. But like in C, you literally have to allocate the memory manually and then deallocateSimon Grimm:Oh yeah.@wagslane:it later. So it's justSimon B:Maloc@wagslane:a lot of work.Simon B:and Dialoc.Simon Grimm:Yeah!@wagslane:MalachanSimon B:Every,@wagslane:free. Yeah, exactlySimon B:that's it, every C students, nightmares. And from again digging up from stuff I don't think about very often, is garbage collection the same as automatic reference counting? Is automatic reference counting just another way of doing garbage collection? Or are you not familiar with automatic reference counting?@wagslane:Not enough with the nuance to define the difference. I think we'll need someone above my pay gradeSimon B:Yeah, I think@wagslane:toSimon B:same@wagslane:confidentlySimon B:as me.@wagslane:define that.Simon B:All I know about automatic reference counting is basically the idea is that the system will keep something in memory so long as at least one other thing is referring to it. So famously, Objective-C does this. And I think I therefore assume that Swift does it as well. So basically, so long as one thing in the running application has a reference to another thing. the thing that's being referenced will stay alive and basically the system just keeps account of like how many things are looking at this and if it goes up to five then keep you around and when it goes to zero well nothing's referring to you so we might as well bin you out the system. I think it's just a different flavour of garbage collection but I could be wrong if any listeners know then let us know.@wagslane:From a high level, that just sounds to me like how Go does garbage collection. So maybeSimon B:Okay.@wagslane:it's a type of, like maybe it's a way to implement garbage collection.Simon Grimm:So I now learned that I need to learn Go. I already got the page open, a tour of Go, and I'll definitely go through this. Now my question is, is there like a cool framework to Go? Because we come from JavaScript world, like whenever I see a framework, I just need to hop into it. So is there anything to make Go easier? For Python, I know there's Flask, and actually it already fails me after Flask.@wagslane:Django, yeah.Simon B:Shango.Simon Grimm:Yeah, Django, yeah, yeah, thanks. So is there anything like this for Go? And also, second question to that is, we've been talking about Ruby on Rails and Go and Python and all that stuff on the server. What is your opinion about Node.js on the server? Because I really like my Nest.js backends and they always had a great performance, in my case.@wagslane:Yeah, okay. Let me answer the first question, then we'll see if I remember the second question by the time we get to it. Oh no, I've forgotten the first question. The first question was frameworksSimon Grimm:It was about@wagslane:inSimon Grimm:the@wagslane:Go.Simon Grimm:frameworks.@wagslane:That's right.Simon Grimm:Yeah.@wagslane:Okay, so frameworks in Go. Go is fascinating as a community because it has a very like strong kind of philosophical root in like the creator of the Go programming language and like the current maintainers like Russ Cox is kind of the maintainer of the Go project at Google.Simon Grimm:He calls- he's Rust, his name is Rust.@wagslane:Russ, R-U-S-S.Simon Grimm:Oh, okay. Oh,@wagslane:Hey,Simon Grimm:that would have been too funny.@wagslane:yeah, yeah. And there's all these philosophical opinions that kind of make their way into the language. And one of those opinions is we hate dependencies. So for example, node modules, you can tell by looking at any folder called node modules, the JavaScript developers really don't mind dependencies, because there's definitely more dependencies in your code than there is code for your application. It's an absurdity,Simon Grimm:Yes.@wagslane:frankly. In Go, we don't have that. culture. You'll have very few dependencies in a Go project. The standard library is super rich, so you'll depend on the standard library a lot to do stuff. Basically, everything you need to build a great HTTP server is in the standard library, and we import little tools as we need them. So, I'll import like a little third-party auth package, right? Or I'll import like maybe a special HTTP router that I'll use. But very few Go programmers actually use a framework because... because it's just kind of included in the language. The language was built around the idea of building web servers. HTML templating is built into the language. Kubernetes kind of runs on top of that, or I should say Helm, the package manager for Kubernetes, kind of runs on top of that templating language. So it's kind of just a philosophical difference. But to answer your question, very few people use frameworks. There are a couple. There's one called Jin. I think it's probably the most popular. But I've never written a server in Jin. I've always just written kind of a standard HTTP server.Simon B:I guess that's the difference between having a language that is designed to solve a specific problem, which is let's write a language. My understanding is let's write a language to solve the problem of web services. Like that's my understanding of what Go is. Most languages aren't written with that as a founding principle. Like Java, I suppose in a way JavaScript was, let's make things look a bit fancier in the web browser, but let's do it in 10 days and not to think too much about it, right? Whereas Go... was set out with an opinion from the start, so therefore, you bake all the stuff, all of the stuff that a framework adds to a language, it's just in the language, right?@wagslane:Yeah, so there's definitely truth to that. I wouldn't say that Go is a domain specific language in the sense that it was like built to build backend web services. What I would say is that it was built late enough to assume that the web is a central part of everything we do, right?Simon B:Yeah,@wagslane:SoSimon B:that's@wagslane:like,Simon B:it.@wagslane:yeah, so like a ton of the web stuff is built in, but like Go is all, Go kind of has like, I would argue two super popular niches. The first is web servers, web services. The second is command line tools. Very, very popular for building command line tools. Because again, when you build a command line tool in Python or Node, you have to ship it with a interpreter and a version lock and all these things. You build a simple go binary. It's going to be a lot simpler to write the code because it's not C and it's not Rust, but you just distribute a static binary. So it's kind of fallen into those two niches, although it is a Turing complete general purpose programming language.Simon B:So we'll get around to Simon G's second question in a second. I haven't forgotten that we're on a tangent here. But one of, I mean, I think if you total up all the languages that I programmed in, it's like double digits, right? Of various sort of lengths of time. Sometimes it's on the side, sometimes it's full things, right? The one thing that I've really, really, really, really, really dislike about Python is its shipability, for want of a better word. Like I can write a really useful Python tool to run on my machine. I have one for this podcast. I've tried to share it with Simon G a couple of times, and it's beenSimon Grimm:It wasSimon B:theSimon Grimm:horrible.Simon B:biggest bane of my life. Like, I got to the point where I'm like, right, let's just install whatever that with a minute. Is it Minikube or whatever it is? Like, let's let's install like the full and let's install Anaconda, right? Let's install Anaconda just so that we can be on the same page and have a fresh environment. This is ridiculous. We shouldn't need to install Anaconda just to get this thing working. And so it sounds like, though, that Go does have a solution for that because of the differences in how the language is created. Is that what you're telling me?@wagslane:Yes. So as someone who teaches Python and depends on it for my living, I will tell you that Python is good at everything except running in production. Like you, yeah,Simon B:The ultimate it works on my machine.@wagslane:yeah, exactly. Like configuring dependencies for Python is an absolute nightmare. Like I use it a lot to build like scripts for myself on my machine, cause I'm comfortable with my own development environment. But yeah, like sharing it. even just for coworkers, sometimes it's just a huge pain. There are definitely tools you can use, like virtual environments and even Docker and things to make it better. And it's gotten way better over the years for sure. But yeah, it's still kind of a nightmare. And I don't ship production Python code very often anymore because I just write it and go. The reason I teach Python is because it is, in my opinion, the best language to learn programming in. It's just so simple and so easy to write. And when someone's starting their programming journey, I mostly worry about them giving up in those first few weeks because it's so hard. So getting people over that hurdle with Python, teaching them how code works, what variables are, loops, all these things in a language that's very comfortable and familiar. And I mean, on boot dev, you're writing the code in your browser, so you don't even have to worry about all this dependency stuff. I just think that's a huge advantage. And then later I teach them Go, and I teach them how I ship to production and deal with production issues and all that. store stuff.Simon B:Yeah, I think that's really good to hear that somebody who lives and breathes Python has the same fundamental complaint that@wagslane:HehehehehSimon B:I do about Python because it's such a powerful language. The joke is that JavaScript is dependencies the product, basically. But actually, one of the really powerful things about Python is its dependencies and ecosystem of things that have been made. just makes it so easy to add facial recognition or like all sorts of really quite powerful things like video editing with movie pie and all those kinds of things. It's just so powerful. But yeah, you want to ship it anywhere and good luck. Simon, do we want to do we want to go to your your second question? Whatever it was, I can't remember.Simon Grimm:No, actually I wanted to follow up because Elaine just brought this up. We haven't really talked a lot about boot dev. So now on boot dev you have this editor where I can write code in the browser. How did you actually build this? Or can you describe why you got it and how it works?@wagslane:Yeah, for sure. So the barrier, like I'm really interested in like lowering this barrier to entry when it comes to like, you know, learning backend development. I don't want you installing Python and interpreters on your local machine, like when you start, I want you doing that later because you're going to need to know how to do that to be a professional developer. So like, we're not scared of you learning that, but upfront, I want you to have this like nice interactive environment and I want it to be gamified, right? I want to do achievements and badges and all these like little dopamine hits that I can add to help you kind of progress through. So that's why, like, that's the why I built it that way. The how is a little interesting. So I was very, I mean, this is a bootstrapped company at the end of the day, we did raise a little bit of cash, a very small amount of angel funding last year. But for the first two years, I was building it as a side project. So very, you know, spending just my own personal money on it and very little amounts. So in order to keep costs low, I actually did everything in WebAssembly on the client side. we actually ship the PiedEyed Python interpreter to you, and that's how you run Python code in your browser. And then in the case of Go, we actually take your code, compile it on our backend servers into WebAssembly, ship it back to you, and run it on the client. So actually all of the sandbox and kind of code that you run in is running in your browser, which has the awesome side effect of, well, students love to write like infinite for loops and kind of number crunchy thingsSimon Grimm:Ha@wagslane:thatSimon Grimm:ha@wagslane:are very...Simon Grimm:ha!@wagslane:performance intensive and expensive, so they can kind of brick their own machine and not mine.Simon B:That's funny.Simon Grimm:Genius.Simon B:I have a little code playgrounds in my 30 days of JavaScript course. And I had exactly the same problem when I got to like teaching while loops. And I was like, they're going to write an infinite loop. And I was like, I don't want to because I bring it in quite early. And I was like, I don't want them to like to think that I've bricked their browser. And so basically, as part of teaching a while loop, I also teach just here's a big number. here's a counter and make sure that you exit the while loop when you get to this big counter, because@wagslane:hahaSimon B:otherwise you're gonna make a mistake and you're gonna have a problem with it. And that's kind of good enough because my 30 days of JavaScript course is very much like, here's enough JavaScript to get to the next level. You're not gonna be a JavaScript tech cert by the end. You're gonna have enough JavaScript to then know where you're gonna go with your JavaScript. And that's why it's free with a prior grade. But I'm just playing through now with this, this Python playground. code area that you've got in boot.dev. And yeah, it's really nice. It's very snappy. I like your sort of skeleton loading. I like the gamification aspect. I'm always really impressed with products and people that add that extra layer of gamification. Like I don't play games. I've never really got into any games. And so I tend to have a bit more of a sort of... I don't know, I miss out on all of that aspect when I'm building something like this. I try and just kind of go with my amazing personality and wonderful writing skills, but actually you've got something else in here that I really like.@wagslane:I'm sorry, I just lost you guys for like the last 15 seconds. My internet cut out.Simon B:It's okay. We'll still have it on the on the files and stuff. So I was just saying that I'm really impressed with the the gamification aspect that you've got, because when I try and write courses like this, because I don't play games, I don't really kind of I I don't know how to add this layer. But literally, like I just ran the first lesson and then immediately you've shown me I've got points, I've got confetti. I get to get some, I don't know, it was like magic boots after like two days@wagslane:HahahaSimon B:or something.Simon Grimm:Oh, that is the best part. Like I already feel like I want these items and I want some epic drops. Do you have like epic items or something?@wagslane:We don't have items yet, but yeah, we have quests and achievements. And now I look like a jerk because I just made you repeat all of the praise apparentlySimon B:No, no,@wagslane:whileSimon B:no,@wagslane:I was...Simon B:you're fine. No, no, that's okay. It's fine. I often ask people to just say nice things to me again, as if I didn't hear it the first time round as well. So I feel like we're kindred spirits in this regard. Feel free to say nice things about me as well. So yeah, anyway, I think we've gone off on a little bit of a tangent there of weirdly complimenting@wagslane:What?Simon B:each@wagslane:HaSimon B:other. That's fine. I@wagslane:ha.Simon B:have a question if we can continue to kick Simon G's part two down the road. In fact, there's a note in our show notes right now that says, leave my part two until the end to build tension. So we're going to keep kicking this part two. We will remind you what his part two question was. But we're a very open part here. So something you went to very early on in our chat here is, you mentioned DevOps. And I'm a big proponent of DevOps at the right time, for the right reasons, in the right places. I don't think you should DevOps everything because it can get in the way and you don't know what you need in the future. But where does backend end and DevOps begin? Because I think it's a very gray area and I don't think I have a good handle and I've worked in a very DevOps heavy company. So where's that line, do you think? And how do you know when you're straying from one to the other and should people be concerned? about straying from one to the other.@wagslane:So now is my time to return the compliment. I think you have good opinions because I can tell by the way you asked the question that we agree.Simon B:Oh, thanks so much!Simon Grimm:Ha@wagslane:ISimon Grimm:ha.@wagslane:recently wrote an article about this. It was called, our backend and DevOps roles merging. And it's like the Dragon Ball Z like fusion ha thing as the blog post titles. Maybe go check that out if you want a long form answer but I'll give you the gist of my thoughts here. So I think that the kind of trend over the like last 10 years of like the DevOps movement has been that as developers, we're simply automating a bunch of the stuff that we did manually in ITOps, right? We're taking kind of classic deployments, you know, server configurations, and we're taking that, building it as a service in some cases on things like Vercell or, you know, even just AWS and Google Cloud products. But the idea is we're like putting it into code. We're making it declarative. We're kind of forcing you to use Git to manage these things. And so my perception is basically that most of the jobs or like the day-to-day things to do in the IT ops world are moving towards the dev side. And I definitely think as a back end developer, you don't need to know like, I hate the term DevOps skills because in my opinion, it's not really a job title. It's more like a way to do things. It's like a kind of a philosophy around like automation and CI-CD and like these sorts of things. But you don't really need to like be an expert on that stuff to like get started as a backend developer. But I think you will just kind of naturally tend toward learning more and more of that stuff because as a backend developer, you're going to have to be familiar with the infrastructure you deploy on. Like when you have scalability problems on the backend, you have to know, is it my code? Is it the database that I'm using? Is it issues with the networking, with the load balancer? You have to be intimately familiar with all this stuff that's going on in the background. And so there's kind of two ways that you deal with that. Either you get on the phone with a DevOps person who knows the infrastructure, and you try to figure it out between the two of you, or just over time, you get to know the infrastructure. And the opposite is true as well. I personally have a lot of students who have had a history in ops and DevOps who are now learning the application side of the stack, because I just kind of think that those two roles are over time growing closer and closer together. Even if you don't need to be an expert up front, I just think that's kind of where your career tends to go.Simon B:Yeah, okay, yeah, I like that. This is the joke of full Slack developers now just in the IT department. And I think nowhere is that clearer in the merging of dev and ops in DevOps. But I do think you can kind of come in as an ops person first doing dev or a dev person first doing ops, and there's kind of a meeting in the middle. And I think also as well, you kind of need both types to be able to do that. on a team to be effective because no dev is going to have the detailed knowledge of ops and no ops person is going to have the detailed knowledge of dev. It needs to be the two. But I do have one quick follow up question. I'm going to put Simon G on the spot as part of this. Lane, have you read the Unicorn, no, the Phoenix Project, the book?@wagslane:Yeah, yep, read itSimon B:And@wagslane:lastSimon B:do@wagslane:year,Simon B:you think,@wagslane:ISimon B:and@wagslane:reallySimon B:do you@wagslane:enjoyedSimon B:think,@wagslane:it.Simon B:and do you think Simon G should read this book?@wagslane:Yeah, why not? I don'tSimon B:Exactly.@wagslane:see...Simon B:Yes. Yes. He should read this book, shouldn't he? Because SimonSimon Grimm:We doSimon B:B.Simon Grimm:have aSimon B:OK,Simon Grimm:mastermind, we don't have a book club.Simon B:so because because I freaking love this book and I've read it, I think three times, I've recommended it to dev friends, to IT friends. I've recommended it to my wife. She's read it. I've recommended it to people that don't work in dev because I think there is so much you can take from that book. that I think everybody should read it because it's not just a book about DevOps, it's a book about doing business better in the modern age. And I would really love to do a whole episode where I talk about it with someone, but he just won't read it. Ha ha ha ha ha.@wagslane:Every company becomes Parts Unlimited after you've read that book.Simon B:Yes!@wagslane:Like every you're like, oh, I work it. Oh shit. I work Parts Unlimited.Simon B:And every and every company that hasn't read that book is Parts Unlimited. Like it's@wagslane:Hahaha!Simon B:just it's just every company. So anyway, I'm glad@wagslane:Yeah.Simon B:that you've read it and that you like it. And if he can stop reading only Star Wars, I might one day be able to do a podcast episode with Simon G about that book. MaybeSimon Grimm:Okay.Simon B:maybe maybe we'll just get you back for it.Simon Grimm:Okay, yeah, just replace me with Lane, no problem. Now I'm gonna make, actually we're gonna bring back Lane once I've read that book probably, but I'm gonna make a commitment now. Simon, this is for you. I'm at probably 90% of my book. I'm currently reading Darth Plagueis, by the way, for all the Star Wars fans out there. DarthSimon B:しわSimon Grimm:Plagueis, what the master of Darth City is, so I highly recommend this for a little backstory. But I'm almost finished with that book. After this recording, I'm going to go to Amazon, I'm going to purchase your book. I don't know what the name was, something with the Phoenix. SoSimon B:The PhoenixSimon Grimm:I hopeSimon B:Project.Simon Grimm:it's not Harry Potter, but@wagslane:Harry Potter and the OrderSimon Grimm:yeah,@wagslane:of the Phoenix.Simon Grimm:yeah, yeah, that'sSimon B:Hahaha!Simon Grimm:what I wanted to read. Yeah. And then in about five weeks we can talk about Harry PotterSimon B:Yes,Simon Grimm:and the PhoenixSimon B:excellent.Simon Grimm:stuff.Simon B:Excellent.Simon Grimm:Okay. So that brings me to my final question that I brought up about half an hour ago. So I wanted to know, because we are the front end podcast for all the code. Sometimes also half the code, as you said. Is Node.js any good? Like you got the experience of a real backend developer. You do all the cool stuff with Python and Go and we just do the front end stuff and try to make our way into backend with Node.js. So from your perspective, is it any good? Should I just drop it and learn something real or what words you take on it?@wagslane:Yeah, as a true backend Scotsman, I will share my opinion on Node.js. So I like Node.js quite a bit. I actually use Node more often than I use Python in production,Simon B:because@wagslane:probably.Simon B:you could actually@wagslane:Yeah,Simon B:ship it.Simon Grimm:B-@wagslane:well, I mean, I say probably because, okay, so let me break it down. Here's where I use Python in production. Very small service that does like very specific machine learning task. Right,Simon B:Yeah.@wagslane:like,Simon B:You wrap it in a flask cap and move on with your life, right?@wagslane:yeah, I'll ship that, like, it'll do its thing. We keep it small, like, it's a blast radius, it's pretty small in case things go wrong, like, nope, no problem. Yeah, Node is interesting because here's the thing, Node's performance when it comes to CPU compute is awful. It's really bad. Like, if you need to crunch numbers in a Node app, it's almost as bad as Python. Not quite as bad, but like, it's pretty bad. If you need high performance I.O., so I need to go grab something from a database and give it to a user, it's just fine. You're not running CPU cycles doing that. There's really no reason not to use Node. If your front-end developers are using TypeScript and you can write your Node server in TypeScript, that's a huge win to have that API gateway in TypeScript. I just, again, kind of break out things, or I would, assuming I'm working on this make-believe project, I would start breaking things out. as the CPU compute starts getting expensive.Simon Grimm:So basically I can just continue using it if I just build an API and connect a database and do the usual crud stuff, but once I get to really hard calculations and stuff I should probably focus on something else.@wagslane:Yeah, like when it starts getting expensive is like a pretty good heuristic, right? Like, oh, we're spending tens of thousands of dollars a month on AWS, like, you know, compute bills. How could we reduce that by, you know, 15 grand a month or something?Simon Grimm:I mean, you can spend 10k on Firebase by just having one line in your code wrong that queries some kind of collection in the wrong way. I've seen the post about it, so that can go quite quickly. But yeah, that also makes me feel better about writing my Node.js code. If a true backend developer says, it's actually quite okay,Simon B:So@wagslane:Ha ha!Simon B:I'mSimon Grimm:ISimon B:notSimon Grimm:thinkSimon B:sure howSimon Grimm:theSimon B:I gotSimon Grimm:small littleSimon B:lumped...Simon Grimm:Simon can live with that.Simon B:I'm not quite sure how I got lumped in with being a front-end only developer. I've worked with some front-end developers and I can tell you, I am very much not a front-end developer. I'm far happier working in the back-end. And yeah, I like your kind of description of what Node is good for. I think Node gets a bad reputation because it's, you know, it's slow, it's... not perform and et cetera. Well, sure, if you're going to use a synchronous blocking task, then yeah, it is going to be slow, but most things it's just firing things off to other things. If you're building a primarily CRUD application and you're firing off lots of different requests to lots of different places, so long as you're not blocking the main thread, then load is totally fine. It's also good for business perspective as well. Like you say, if you've got a front end team, people write in JavaScript or TypeScript, then having the backend in the same. And I kind of now view Node as, again, if you come from a JavaScript first mentality of thinking about the front end, et cetera, to me, Node is the de facto choice for your backend until you need something specific somewhere else. because there's nothing that you can't... This is the wonderful thing about back-end, right? And much more so than front-end, is you can just break off a portion of your infrastructure and run it somewhere else, and all you have to do is just switch the endpoint. And if it's really complicated, you can use the strangler pattern, where you slowly move stuff over@wagslane:UnlessSimon B:and@wagslane:it'sSimon B:replace@wagslane:a Ruby onSimon B:things.@wagslane:Rails app.Simon B:True. Yeah. Well, again,@wagslane:hahaSimon B:you say,Simon Grimm:I'mSimon B:butSimon Grimm:out.Simon B:I mean, yeah, OK, but at the same time, it's just another endpoint, right? And a database like, you know, you can you can even work around that. So so, yeah, I got the impression there that Simon G going to his last question was was working towards wrapping it up. But I've still got like half a dozen questions that I want to ask you. But we probably should start to wrap this up looking at the time. So. Thank you for your time with us today. This has been really, really interesting. I'm really happy that somebody is taking on the back end space and making back end fun. And now I've just realized why you've gamified back end is to get over that, not getting the immediate feedback as a software user. You've replaced that aspect, like you said, with the dopamine hits of the game. So you're a very clever man for doing that. Very, very. Impressed indeed. Is there anything that that we haven't talked about that you were like, oh, you know what? I wouldn't mind talking about that when I'm talking to these guys later Is there anything that you want to obviously promote boot.dev or put the links etc? Like like like what what would you like to kind of say as we as we wrap this up?@wagslane:Yeah, I think I'd like to finish by just pointing out one fundamental assumption I think a lot of people learning to code have that I think is untrue. And that's that you need to learn front end development before you learn back end development. So if you, if you enjoy front end development, there's nothing wrong with getting into front end development. But there is a very interesting like bias, I think towards like I have to start with front end and like back end is this advanced thing. And that's really not the case at all. Like if you look at any traditional CS program, They skip front end and don't even care. It's like this other thing, right? So you definitely do not need to learn front end. If you don't fundamentally enjoy HTML and CSS, you can try backend development and you can jump right into it. So that's just one thing I want to challenge anyone who's listening that's starting their coding journey to think about is, what do I enjoy more, working with data or building visualizations? And I would let that drive your decision more than an assumption that I need to start with HTML.Simon B:Perfect. Simon, any last thoughts from you?Simon Grimm:Only that I'm not thinking if I'm in the wrong profession should also probably get into@wagslane:Ha haSimon Grimm:backhand@wagslane:ha ha ha!Simon Grimm:stuff.Simon B:You're such a butterfly. You're like, oh, new shiny thing. Let's go over here. OK,Simon Grimm:Oh yeah!Simon B:anyway, we'll wrap this up as always. So firstly, Lane, your site is boot.dev. Go check it out. It's got a real I don't know if it's intentional and I'm not a gamer. So forgive me. It's got a real Assassin's Creed vibe to it when you land on the home page. Maybe that was the vibe or you're going for Skyrim. I'm not sure I don't know anything about Skyrim. It's just another game that I know where people sometimes wear@wagslane:hahaSimon B:hoods. So, yes, they go check out boot.dev. As always, you can find me at all the code.co. If you want to learn the fundamentals of JavaScript in a way that doesn't waste 55 hours of your life, then go check out my 30 days of JavaScript course. Simon, where can people find you?Simon Grimm:As always at Galaxies.dev, actually I changed the copy on the page last weekend a tiny bit, so I try to brand myself now as the platform with no BS courses for busy developers, because all of our courses are really below two hours and if you already know a bit about frontend development you don't really need 30 hours of React, you just sometimes need two hours. of Astro to get started and understand the basics. So go check it out, galaxies.dev. We just have a new course on Astro, which is very hot in the frontend world. And hopefully in about two to three months, we're going to have either a Go or a Python course. Either Lane is doing it or I have to get into it. So go check it out, galaxies.dev.Simon B:Awesome. Catch you in the next one.Simon Grimm:Bye!

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features