Show notes
In this episode of Building Infinite Red, we talk about the importance of education and experience when starting out in software development and how things change when you move from making your products to running your business. From books and online resources to bootcamps and higher education programs, Jamon, Ken, and Todd share their stories, insights, and opinions for every level of professional. Show Links & Resources Lambda School Austin Allred on Twitter Epicodus Airtable Episode Transcript TODD WERTH: Today's topic is education. I actually don't recall what this topic's about. Ken, do you recall? KEN MILLER: Yeah. Well, it's this question that kind of comes up periodically about developers and CS degrees and that kind of thing. I think there was a Twitter thread a little while back in Jamon's feed, because Jamon's feed is the only feed that matters. TODD: That's a fact. Yeah. KEN: Yeah, do you remember who that was, Jamon? JAMON HOLMGREN: Yeah. The question was, "I have 10 years experience developing sites, but I have no formal education. What are your thoughts on experience versus education? Been thinking of getting a front end development tech degree from Treehouse, but I'm not sure if it's worth the time and money." Yeah. That is a question that does come up fairy regularly. KEN: For that specific question, I think the answer is no, it's probably not worth it, right? If you have 10 years of experience, and you're going to go take basically a practical degree, don't bother. JAMON: Right. KEN: But there are definitely nice things about getting a real CS degree, but getting a job is not necessarily the best reason to do it. JAMON: Right. KEN: If that make sense. TODD: I would totally agree with that. Well, just to start out, the three of us, Jamon nor I have finished college, nor do we have any CS degrees. I learned to program on my own when I was a child, probably started when I was 12. And then I started programming professionally when I was about 24, and then I learned basically on the job. Ken went to Harvard and got a CS degree there. Jamon, you are similar to me, right? JAMON: I was pretty similar to you, yeah. TODD: Yeah. So what I usually tell people, A, now, when I'm hiring people and I'm not representative of everyone, so it's quite a bit different, I do a cursory glance of their resume, maybe. That's less relevant to me than what they can do. In my opinion, developers is a portfolio job, which means the work you've done is hugely more important than any kind of education. Now, obviously if you do have a CS degree, I do find people want CS degrees, they understand some concepts that you maybe don't use day-to-day, and when they do come up, they have a much better understanding of that. Sometimes it's easier to teach them new ideas, because they have the analogy in their mind already. So it's definitely worth it. I would say, my short answer and I'd love to expand on this further in this podcast, but my short answer is you need to learn what you need to learn in order to produce work product, which means develop software, develop websites, develop apps. And everyone has a different way of learning. For some people, school is the best way. For me, school always bored the hell out of me to be honest, and it wasn't the best way for me, but there's no exact right way for everyone. It's just however it works best for you. JAMON: Yeah. And I think that part of this is how much access and opportunity you have, because certainly college is one fairly proven path toward gaining an opportunity to access the job market, to get enough skills that you're hireable out of the gate, and then to access the job market and actually get a little bit of exposure, whether it's through an internship or something like that. So that plays into this as well, if your dad was a software engineer or something, and he has contacts that you can talk to and maybe get some opportunities, then maybe you don't need that, maybe you don't need to go down that road. But there are few other factors here as well. Some of them are personal goals, like what type of programming, like Todd was saying, what type of programming you want to do, how much debt you're willing to take on, how much you can take on. And then also, in some cases, very specific cases, the prestige of the university can be a factor because it certainly opens doors for Ken that Todd and I don't have. TODD: I do want to interject real quick before you jump in, Ken. Going to university has many, many benefits that have nothing to do with getting a job, and those are a super valuable if you have the opportunity. They're worth it. But specifically about a job is what I was talking about. KEN: As a life experience, college is great. If you have the opportunity, you should probably do it. Getting a job as a programmer per se is not a good reason to go to college in my opinion. Now, if what you want to do is get a job at Google, or one of the places that is well-known for preferring CS graduates, especially from elite schools, then you should do that, you absolutely should do that. You're going to have a much, much, much harder time doing that. But also, more to the point, Google has I think fairly reasonable case for it in certain ways, because they are actually dealing with the high level intense CS concepts more than your typical programmer job. TODD: Correct. KEN: Now, I think where the problem comes in the market is that if Goggle does it, then we should do the same thing and then we'll be successful like Google. And the vast majority of companies out there do not need that. And I can also definitely tell you, from my own experience, from the people that I've watched, is that getting a CS degree, they're teaching you the fundamentals of how computers work. In Harvard's case especially. They're very much on the theory stuff. But even a more typical CS degree is very much about the background, the hopefully unchanging fundamentals, and not so much how do you design a build system. Todd? TODD: Yeah. I want to rant a little about a CS degree. CS, I'm sure all of you know is computer science. It is really that, it's computer science. Scientists don't make things. They discover things, and they ponder about things. For example, a physicist and a chemist may work together to make some sort of new alloy, but they're not going to design an airplane. That's what engineers do. If you get a computer science degree, you learn the science of computers. You could actually get a computer science degree, and correct me if I'm wrong Ken, and not learn to program at all. KEN: That would be pretty rare. You do have to know some programming in order to do a lot of the things that they teach you- TODD: But you could do like abstract programming that doesn't actually work. Like, say you're developing an algorithm. It's not- KEN: Yeah. I would say that would be pretty atypical, but there's definitely classes that don't require a lot of coding. TODD: I'm exaggerating to make a point. KEN: Some of it is straight up math. Yeah. TODD: Right, which is different than engineering. KEN: Well, and a good engineer should understand the science obviously. Yeah. JAMON: And I think one of the things to know is that, in my career certainly, and I'd like to hear from both you, Todd and Ken, I haven't noticed a huge market difference between the software engineers that I work with that have degrees, versus those that do not. I often don't know which of them have degrees and which do not. It's not always a strong correlation between their ... or it hasn't been a strong correlation in my career with performance. I think there's some characteristics that are positives for people that come from a CS degree background versus others who maybe come from a bootcamp background, or Todd and myself maybe learned out of a book basically and experience, but in my experience it's not something that is ... there may be differences, but they're not significant. TODD: I think it depends on the situation. When you teach people you notice it more. For experienced people, people who have a decade under their belt, no, there's no different. For new people, someone who comes out of school with a CS degree will understand concepts, and I think it's easier to teach them to be honest, in that way. Real quick, I personally started ... well, I started programming privately, but that was just me programming games and that kind of stuff, stuff I enjoyed personally. But professionally, I started building software. So I started out as a builder, a maker, over the years formed myself into an engineer, and then during that, got interested in the CS stuff and learned that stuff too. So I got to the same result, just in a different path. KEN: That's totally true. You can absolutely learn all this stuff on your own later if you're that kind of person. I think what the reliance on CS degrees doesn't really take into account, is that 90% of programming out there is essentially business automation, for a loose definition of business, but it's basically business automation. I mean, yes, okay, there's sort of a sector on high performance computing, or scientific simulations. Honestly, the one that in some ways benefits the most from formal education, believe it or not, is games, because there you need the linear algebra and the harder math, and your performance constraint in ways that mean you're more likely to be coming up with novel algorithms than you are in your typical business program. Jamon? JAMON: It's surprising how rare it is to encounter those types of situations in typical applications, like mobile applications and web. You just don't really run into it. KEN: Right. So, the kind of people who are going to excel at your, like I said, very typical business automation, style programming, user interface design, et cetera, et cetera, are actually going to be people who sometimes were not computer people before, because they're going to have more connection and empathy with the target users. And that ends up making more of a difference to the success of software projects in many cases than your facility with the computer itself. TODD: Yeah. Let me give you a real example from myself, because I started out very practical, and then later got interested in the CS concepts and stuff. Just purely for my own interest and stuff, and that did help to a point in my engineering career, but I did a project circa 2001 or something like that, and we would display, as a website, and we would display a map for the user, and they click somewhere else on the map and we had to calculate, based on the pixel difference between where we knew they were and where they clicked, the difference in direction and distance from the original spot. Now, this required spherical geometry, and the earth actually is not a sphere. It's a little bit like a football actually, to a slight extent. In this case, someone who had a more CS background may have jumped into this easier. I actually had books on my shelf, like college algebra, and college geometry and stuff like that, and I would review these things. And I learned how to do it. It was a successful project and it was very fun, but that's an example because I came from a practical place I had to look that up. Now, on the flip side, I've worked with people with PhDs in computer science, and no offense, bless their hearts, but they would work for two weeks and accomplish literally nothing. And then you'd ask them, "Was that done?" They were like, "I didn't know it was urgent." Well, it was an hour task. That's two weeks ago. And I think they're on a different academic time, because they spent so many years in school, it's just a difference. KEN: Which is, again, not to denigrate the usefulness of them. They're just useful in very specific circumstances and not as general programmers. Jamon? JAMON: I kind of see it as, to use an analogy, like when you're lifting weights, if you lift weights in a way that is very functional, they call it functional, where it's almost like you're lifting a box or ... yes, Todd? TODD: Jamon, for our listeners who may not be familiar with this concept, can you explain what lifting weights is? JAMON: It is this theoretical thing that supposedly some people do. TODD: Can you do it inside of your own home? JAMON: I do now. I built a gym actually. But yes, you lift weights for health. And one of the ideas is that you do this sort of functional strength, where it's something that actually builds up the muscles for lifting boxes, and carrying children, and moving things. So it's very much like you're doing those types of movements, but just with heavier weights. It just makes you stronger in those ways. And then there's other things where you're isolating specific muscles in a way that you would never really do in a day-to-day basis. And university can sometimes be more like that, where you are exercising those muscles, you are making them stronger, but you're not doing it in a way that necessarily replicates what you do in real life. And I think both are necessary. If you just do functional strength training, it will get you so far, but you won't ever hit certain muscles because, like we talked about intense performance or whatever, you might not actually be using those aspects of your brain in a day-to-day basis. But they are good to have for when you need them. So I think that's a decent analogy of what we're talking about here. I think that one of the criticisms that I've had of some of the higher education programs, is that they don't do particularly great job of replicating the real world of what people will actually be doing once they actually get into the job market. You can create a binary tree algorithm, but can you move this button over four pixels to the right? Which is often your first task when you get to work. TODD: Yeah. And I would say that it really depends on the person. In an idea world, if money is no constraint, time is no constraint, yeah, of course I would love to go to university and stuff. But on the flip side, I'm a very practical person and I like to build things, I like to make things. So maybe I went for a few years, but maybe if I would have went that route I wouldn't liked it as much. I would have preferred to just jump in and start getting things done. I think for me ideally was 18, I started doing it, actually doing it for three or four years, and then go to university for maybe two years, and enjoy learning all the concepts I didn't learn. That would have probably been pretty cool for me. JAMON: I realized we're kind of leaning more heavily on the criticism side of this, but one of the criticisms of universities is that they optimize for rewards, like extrinsic rewards. Like, I got this degree, I got this piece of paper, or I did what was necessary to get an A. Where learning to accomplish something to actually expand your mind is a little bit of a different thing. When I started my business I needed to build a website, I had a website to build, and I didn't know how to do it. For me, when I was learning from a book, it was very, very applicable. Like, okay, in order to make a menu, I need to know how to do these things, and it was very, very applicable. Very, very directly applicable. KEN: Well, I'm going to make the positive case ... TODD: Please. KEN: ... for going in and doing it. One is, fair or not, it does open doors. TODD: Correct. KE…
Full show notes at the publisher