Do I Need a CS Degree?
August 29, 2019
NO! Joshua and Kel talk about life as developers without degrees, suggestions for improving your path of learning, ways to get past gatekeepers and a bunch more.
Note: Not all these tips are just for self-learners! A lot of them are great for folks in bootcamps or university as well!
Be sure to check out our new Slack community to meet others who are facing the same things you are and share your journeys!
-
00:00
Joshua
Hey folks, welcome to Getting Apps Done, a mostly non technical podcast about building software. I did a talk here locally in the UK just recently where I was talking about failure. We just recently posted that as well so you could have a peek at what I was talking about. And afterwards somebody approached me and they asked a question that I thought it was really good and it's something that nobody's asked me before, but I don't know why. They wanted to know about the university in particular because they had just dropped out, and decided they weren't going back, but they wanted to be a software developer and they were a little bit terrified of having done this even though they had already made a definitive decision that university wasn't working for them. It wasn't a good fit for them, but they weren't absolutely convinced that they could carry on with the profession they had decided because everybody was telling them, you need to have a university degree to become a software developer. And I remember I was told much the same when I was in high school thinking about whether or not I should go to college. And, my personal experience is a little bit different than a lot of people because I made the same decision. I didn't- I take that back. I went to college for all of about two months before I decided that was not for me.
-
01:19
Kel
Yeah. We definitely are in the other bucket. I am also a dropout. I went for two years. I think
-
01:26
Joshua
you survived a lot longer than me. Yeah.
-
01:28
Kel
Yeah. I went through for two years, but it was, yeah, so obviously it is not necessary to become a programmer to go to college. I was there for two years, but I can't say I was all there for two years. And I tended to take a longer path to become a developer. We've mentioned before that I started on a help desk and support and moved into, you know, desktop support and patches and servers and then starting to write code for things and then actual development. Um, just over time, so a bit more of a indirect course, but it was also a, it was also very useful to take that indirect route cause I picked up a lot of skills I wouldn't have otherwise.
-
02:07
Joshua
There you go. Shortest episode ever. You do not need a degree to become a developer. Maybe we should explain that one a little bit better. Um, so there are some reasons for this and there are some caveats to this. Obviously learning how to program, it's a big thing. There's a lot to learn with programming, but you absolutely don't need to go to a university to go do that. That doesn't mean that I think that going to a university is a horrible idea. We have some members of our community who have quite often say that they're very grateful they did because they had started down a path. They went to university where they told them all you are gonna learn this and you're gonna learn this and you're going to try a couple of different languages. And they actually discovered that the language that they hated when they started is the one that they loved when they finished. So there's definitely some merit to that. And I think there's definitely some merit for just having that experience. But it wasn't an experience that worked well for me. And obviously it wasn't one that worked well for Kel either. So it's not for everybody. And then you've got bootcamps as well. And it's much the same for some people. And again, we've got people in the community who loved their bootcamp, they learned a lot and they got their first job because of their bootcamp. But again, it's not for everybody.
-
03:21
Kel
Yeah. And starting up, I mean it's the, oh, how would you describe those? The, the classroom setting, right? You're forced to learn these things in these orders. There's repercussions if you fail to, you know, if nothing else, your homework, your homework will be graded poorly, that sort of thing. So that's what a lot of people go to the university is for that very structured learning where it doesn't have to be very much self-motivated. Um, you can just sit down and kind of soak in all of that information.
-
03:48
Joshua
Somebody is telling you what you need to learn. And that is one of the hardest things of doing it on your own is knowing what you need to know in the first place. Because there's a lot of stuff out there. And if you just go out and decided, I'm going to learn everything about software development, good luck. It's never going to happen.
-
04:03
Kel
Exactly. And when I started, so in I went for two years, I obviously got some programming, I mean not obviously, but I did get some programming classes while I was in college. I did C++. So I had two or three kind of intro programming course works and my favorite one was taught by somebody who had left the industry and was now teaching at college. And so all of his stuff was, you really should add comments here because other people are going to have to read your code and this is important. Oh, you should structure this differently because other people have to read your code and maintain it. And it's important. And so by doing that though, he was very much focused on showing me the things that I would not have stumbled into by self teaching. And I found that to be amazingly helpful.
-
04:46
Kel
So there's definitely value in having somebody guiding your learning, helping you, like show you a path that you can follow that isn't just you kind of wandering around the internet and seeing all of these conflicting opinions on what you should know next. You know, you see that all the time now. What technology should you learn next? React or Vue or.
-
05:04
Joshua
The big five to learn this year!
-
05:06
Kel
Yeah, and it's not really not all that helpful when you get down to it. You'll usually end up finding out that the thing you need to learn will be, will kind of emerge naturally from the job that you're working at of, oh, we're going to be building this client in React. You should probably know that.
-
05:22
Joshua
Absolutely. Now the counter to that is, and one of the ways that we learned was doing projects. We didn't go learn all these things in school. We didn't have somebody telling us, you need to comment here, you need to do these things here because somebody else was going to learn that or read that. We worked on projects, so it could be an open source project. It could just be a project that you work on with a couple of other people, but the act of actually working on something with other people, gives you that same context. It allows you to start to experience the negative sides of that. If you don't put those comments in there or if you don't structure it in a way that it's easy to read and easy to maintain, somebody is going to have to come along and clean up behind you or they're going to yell at you until you have to do it yourself. You're going to learn that lesson one way or another. So and that is probably the key here. If you are not going to go to university or go to a bootcamp or something like that to learn these things, you do need to start to find ways that you can counteract or learn the things that you would have learned if you had,
-
06:21
Kel
I really like your, your comment there for bouncing off the people cause that's probably the part that you're missing the most of when you're at university or a boot camp. You have a person who's telling you their experiences and trying to, in a really compact all of the lessons they've learned and tell you these things so you don't have to learn them the hard way.
-
06:39
Kel
But if you program on your own, you're not going to necessarily learn those same lessons. You're going to learn the ones that are just specific to you and the project you worked on. And so having other people that you're collaborating with and conflicting with and coming in with these different viewpoints and things, you'll learn much faster and, but not as structured. So yeah, having people that you're working with will be very helpful for your growing.
-
07:02
Joshua
It's not as structured, but it's also much more realistic because when you go to have your first job, you're going to work with other people. Some of them you're going to like and get along with, and some of them you're not. It's just the way it is. So having that experience is going to be valuable to you and it absolutely can replace some of that experience that you would have gotten from university or bootcamp.
-
07:25
Kel
If nothing else, it will increase the pace of feedback. When you write good code or bad code, it's really difficult to tell on your own because you just wrote it. It was the best that you could do. But you'll find out that, you know, months later you might- It's kind of like writing. If you reread something months later, it might be better than you thought, or way worse than you thought. Programming's very much the same way where you'll look at your own old code and kind of cringe sometimes and every so often be, oh, that was great. But if you're working on a team with somebody, then that feedback comes much quicker and so you can redirect your energies faster. You can go, oh, I should probably learn how component based design works because this jquery badness just is bad. Lots of examples of those in the past.
-
08:09
Joshua
It's not often. I look back at things that I wrote a long time ago and think, oh, that was brilliant.
-
08:15
Kel
It's really exciting when it happens. It doesn't happen often, but it's really great.
-
08:20
Joshua
Those moments of epiphany, yeah.
-
08:21
Kel
Wow, that was great. My favorite is the, when I'm working in a team, I'd go, you know, be reading some Old Code and I'd stumble into something going, this is really clever. Who wrote this? I should ask them how they did. I did this. Really? Wow. How? What? I mean, that's such great thing.
-
08:38
Joshua
It's more often though, I'm reading through old code thinking, who the hell did this?
-
08:43
Kel
Yeah. That's unfortunately far more common. Speaking of failure, right? Speaking of failure.
-
08:49
Joshua
Yes, failure is okay. So you're going to learn, you're going to get better and you're going to hate everything that you wrote a long time ago, whether you went to school or not.
-
08:59
Kel
So yeah, looping back to education. So the, the educational thing, the, it really can depend a lot on the teacher too. That was something I discovered myself teaching Java at a bootcamp. The things that I chose to teach the order. I chose to teach them how to huge impact on what they were learning and how they learned it. I was a little disturbed at how many, uh, odd habits like down to naming conventions to the order that I program things in that they picked up just by watching me. Um, which makes sense. Those are things that you learn, uh, naturally over time, but they were picking them up from me, which was frightening. It was a lot of pressure on the teacher. So the order that you teach things in it have a huge impact on the way that the people are learning. So your teacher can have a huge impact on what you learn and the pace that you learn.
-
09:49
Joshua
Absolutely, and when you are your own teacher, it's entirely down to you. Now the obvious thing to do there is to try to find a teacher, whether it's just finding a mentor who knows a little bit more than you or finding the right books. One of the things that I picked up early on when I was learning how to develop software, was finding books that worked well for me, that I understood well. I, in fact, I bought a lot of books that I went right back to wherever I could get rid of them because I didn't get on with them, but just like not getting on with the teacher. Sometimes I'd pick them up and either they were just so awful boring, I kept falling asleep or I just didn't like the way they taught. It just didn't click for me. Where other books, I picked them up and immediately suddenly concepts that I wasn't getting on my own just clicked because the teacher, the author of the book, was amazing. They helped me see things from a different perspective. So again, if you don't have a real teacher at a university, you do need to find another source of teaching, whether it's books or other people.
-
10:49
Kel
Yeah, books are a really great example. I kind of forgot about that in this era of Internet. Um, and it's been awhile since I've actually, books are usually written from the context of someone who might not know all of these different subjects. And so the more skilled you get, books tend to have a lot less new information. And so it's honestly been a while since I've read a book. And you know, that was technical based. That was really all that interesting to me. It's like there was good stuff in it, but it took a lot of effort to go find the good stuff. So I tend to prefer more bite sized information that I can filter.
-
11:23
Joshua
which everybody will grow into. But certainly early on you've got a lot of knowledge dumps you got to pick up on. And some of those books will teach the core concepts that I, in fact, some of the Java books that I was reading almost 15 years ago are probably still perfectly relevant today. Some of the syntax might've changed, but the concepts behind them and how variables and arrays work and sorts and loops and all those things haven't really changed that drastically over the years. So books don't have to be cutting edge information, still be really, really useful. So that's a good source. Another thing that we probably do need to cover, which is going to be probably the biggest fear when it comes down to deciding not to go to a university and that's gatekeepers. We've talked about gatekeepers in the past.
-
12:11
Joshua
We've talked about some different things and actually one thing that Kel alluded to early in this episode that I like and I would like to kind of circle back to now is ways that you can get around those gatekeepers by not necessarily starting with software development directly. Because we both started in a support role where I, you know, yes, working on a help desk, not the most glamorous thing ever, but I will absolutely swear it is one of the best ways to become a really great developer, because it gives you different perspective, but it also helps you bypass some of those gatekeepers. It gets you some technical experience in IT that will kind of help because most jobs when they say they want a bachelor's degree, there's always that little or equivalent experience next to it.
-
12:54
Kel
What I found, specifically, is not all the gatekeeping is done from the programmers. A lot of it is done from the boss, the manager, the CEO. People who are not coming from a technical background themselves and being able to communicate effectively with those folks can often kind of take a meandering path around the gate. Instead you come through, I guess basically the front door instead. The CEO's, Oh, this person totally knows what they're talking about. Regardless of that's entirely true, but it's being able to communicate effectively and knowing these other skills and having all of these other useful things can really help you leapfrog some of those problems about not knowing whatever a bubble sort is or a merge sort or a quick sort or, yeah.
-
13:39
Joshua
Yeah. The other thing to keep in mind, that's generally a temporary problem. After I had a few years of experience, everybody stopped asking. They didn't even look. In fact, I have actually worked for companies for several years and somebody will ask me at a bar, which university did you go to? I didn't. I could've sworn you had one on your CV and then they check it the next day I'll be, oh, there's nothing in here about that at all. I just made that up because once you've got four or five years of experienced, they just automatically assume that you've already gotten past the gatekeepers before. So unless you're going to a really big corporation where somebody in HR is trying to dot every I and cross every t, they're not even gonna notice. So some of that is temporary, but you do need to be able to get over those.
-
14:24
Joshua
And as Kel says, really great communication is a good way. Networking is another really great way because I can tell you right now, a lot of the jobs that I got I got, because I knew somebody who said, I know this person. I know they're really good at what they do. Give them a chance. And it was enough to get my foot in the door, get the interview and prove to people that actually I know I don't have a degree, but I do know what I'm talking about.
-
14:46
Kel
Yeah, exactly. I mean that's how I ended up on a help desk.
-
14:50
Joshua
I wonder how that happened?
-
14:52
Kel
Exactly.
-
14:52
Joshua
What nut job would vouch for you?
-
14:55
Kel
I mean we were talking about you lasted a couple of months. That means you started in the industry a little bit before. I did cause I last it a couple of years. So you got me my first foot in the door. That was really helpful at the time.
-
15:04
Joshua
Kel was very glad I dropped out.
-
15:07
Kel
Yeah, it was surprisingly helpful for me at that time. But um, and kind of looping back around we were talking about strategies and gatekeeping and networking is definitely a big one. Communication is definitely a big one. There are other ways of totally getting around it. Um, one of the things that the bootcamp I was teaching I did was they focused a part of their course on just approaching that directly. They taught you how to whiteboard, they taught you basic data structures and algorithms. And there's loads of websites for that nowadays where you can do, you know, coding challenges and it's a very different skillset than what you will be doing day to day. But it's not like a useless skill set. Like there's, there's plenty of use to knowing all of these things. They're just not very focused on what you actually care about, which is why we constantly talk about not using those types of questions as interview questions.
-
15:56
Joshua
One of these days that binary search tree might be useful.
-
15:59
Kel
Exactly. And you'll learn other tricks and habits and it does kinda actually help you get used to some of the detailed stuffs of languages. But that's something you can also do is focus on, just pick out the highlights of the gatekeeping and just attack it directly. You know, start going down hanker rank like that is, that is definitely an option you can do. You can practice those at home. There are plenty of sites to do that so that there's very much a, a possible strategy is to not try to fight it too hard, but just okay fine, I will learn your gate and we will plow past it. And they're honestly not that difficult. Basic data structures, basic algorithms. I mean we covered them all in uh 10 weeks. Like we covered pretty much every one I had heard in awhile and within 10 weeks of a bootcamp and I mean I'm not sure how much you can possibly really ingrain that stuff in 10 weeks. But you can, you can at least cover them. So that kind of gives you an idea of how much time it takes. Yeah,
-
16:55
Joshua
And that is really what it is. Under no circumstances to get through the gatekeepers should you lie or omit or try to hide anything. The key is to put yourself in a position where you are fully capable of proving what you're capable of. Because that's all that gatekeepers is there for any ways, to try to get rid of people who aren't capable. And if you can prove to them that regardless of whether you do or do not have a degree or went to bootcamp or whatever, you know your stuff and you are fully capable of doing that job, it's much, much easier to get past those gatekeepers. I'm not going to promise that every single one of them will let you pass. Some of them will be complete sticklers because they don't know any better. But in most cases, most companies are just looking for really talented individuals and they're willing to look at alternative sources if you can prove to them that you know what you're talking about.
-
17:47
Kel
Yeah, exactly. And those employers are struggling against, you know, when they hire people that they take on a lot of risks, which as we've discussed before, I really think there's a should be taking on that risk. They shouldn't be trying to offload it to the people that are applying. Um, but they're trying to cut their own risk of hiring somebody bad. So they put on all these gates, they put in all these filters and just take whoever manages to pass through it. And if a whole bunch of people that were qualified don't make it past those gates, most companies aren't really caring, which is a bad thing. Um, but that's what you're fighting against really, is just how can you prove to them to lower that risk and make them trust you more, to show that you are capable of doing the jobs, that you can make it past their gates, that you can do the things that they're trying to use degrees and all of these other things to do for you.
-
18:33
Joshua
Yeah. Some other things you can do around that: First off, find companies that aren't doing these stupid things. Find them where they don't have ridiculous requirements of bachelor's degrees or master's degrees or anything else. I've seen all sorts. Generally I just ignore them and I apply anyway, which you absolutely should do, but if you want to avoid that entirely, there are plenty of companies that don't do that, particularly startups. A lot of them are just looking for fresh talent. They don't care about things like that. They just want to know that you can do what you do. Which to back that up, then you can go start to put yourself publicly out there as knowing what you are talking about. Do some open source projects. Work really heavily in open source, do some live stream coding, if you can teach other people. If you can teach other people how to code, nobody's ever going to question you as to whether or not you can code.
-
19:23
Kel
I am a huge fan of teaching. Teaching to both learn for yourself and show that your learning is very, very great for that.
-
19:31
Joshua
Absolutely, and I have seen plenty of cases where people who have gone on YouTube, not even with huge followings or anything like that, but just enough that when somebody looks them up, saw, oh, they're on YouTube. It was enough that they thought, oh yeah, actually, if they're teaching people on YouTube, clearly they know what they're talking about, and they can listen in and see what you're doing and what you're all about. Same with the open source. They can see that you are communicating with other people. You are participating to this community and building a really great product already, that ticks a lot of boxes for them right there. It reduces the risk for them in hiring you.
-
20:05
Kel
Exactly. And there is, um, you'll definitely feel pressure if when you do those types of things of displaying your ignorance, we've talked about that before as well. That it's a scary thing to show that the things you don't know as well. And when you're starting out, especially in open source or YouTubing and teaching, you'll be doing that a lot. You'll hit the edge of your experience quickly and it's a good idea just to be okay with it. It's the same with the interview. Just be yourself, show to the edge as you can show as much as experiences as you can. Your actual skillsets. People will forgive you for things you don't know. It is fine. Um, but by showing as much as you really do know, it does lower the risk. that honest, you know, displaying of here are my skills really does lower risk of a company hiring you because they're, you know, they're definitely worried about how trustworthy are you, how well can I really know your skills? And being able to show that in a way like through teaching is a really helpful thing.
-
21:00
Joshua
Yeah. Another thing that that is demonstrating that we do see when a candidate has gone through university is the initiative and then the ability to stick with something. Because I obviously if you went to school for four years, you managed to complete something. Whether it's of any value at all or not is another story entirely. But you did finish something and that can be important. But you can achieve that by finishing projects because, when it comes down to it, that's much more important to me. When I'm hiring somebody, I am not really that fussed if they can go to a bunch of classes for four years straight and you know, not drop out or flunk out because they're. I'm much more interested in seeing, oh actually they have completed three mobile apps and they haven't even had their first real job yet. That's awesome. That's cool. That's enough for me to think, they can do that for me. That's great. That's fantastic.
-
21:51
Kel
I had a lot of people leave their university degree no more capable of programming. I mean, like I said, I took what, three C++ courses. We never learned how to do file input. I mean I knew lots about data structures, but nothing about the day to day programming of input and output and failure conditions and patterns, like all the things that are really important in a day to day programming life were not the things covered in the university until you got towards the end. And then those were kind of electives. And so you're not necessarily going to come out of the university degree really all that much more qualified than somebody who's come out of the boot camp. At least at first you'll, you'll most, I mean you have four years vs. 10 weeks or whatever. So there's definitely a difference. Uh, but not necessarily more difference than just the time spent.
-
22:41
Joshua
Yeah, absolutely. And Yeah, in fact, I was talking to somebody about that today. If I'm looking at two candidates, one spent four years in the university, one spent one year at a bootcamp and three years in work, I can tell you which one I'm going to hire. I would much rather have those three years of real world experience. And if you didn't do either and you spent four years getting real world experience, that counts for me too. I'm definitely okay with that. So first off, I will reiterate, I don't necessarily have any problem with anybody wanting to go to university. If it's a good fit for you, it's a good fit, fantastic. You learn however you learn. Same with bootcamps if that works for you. Awesome. I think bootcamps provide opportunity for people who otherwise wouldn't have done this in the first place and I think that is absolutely great, but if you just happen to be like us and we are talking about this because this is our experience, it didn't work for us.
-
23:32
Joshua
Maybe a bootcamp actually would've worked for us, but they weren't really a thing at the time, so I can't say one way or the other on there, but I know university didn't work for me. It didn't work for Kel, but we found ways to build our skills, educate ourselves to learn to love to learn because that's really what software development is always going to be about, there's a lot of learning. And prove yourself to anybody who's looking, because that's all you really are doing with any of these things is you're trying to get yourself into a position where you know what you know and you can prove it to other people.
-
24:10
Kel
And it's worthwhile to them. Is the real thing? Like you want to be worthwhile to somebody and you want them to pay you and you want to, to have that open and honest exchange of skills for cash.
-
24:21
Joshua
Yeah, absolutely. And you don't need to take any one particular path to get there. It's your path. You take your path and as long as you do that, I think most people are going to come off fine. You're going to find a job. You can find something that you can provide a huge amount of value in and you just kind of stop stressing about it. If your university didn't work for you, it didn't work for you. That's great. A software developer is your thing, find a way to make it work for you. Learn what you need to learn. Yeah, and get out there.
-
24:50
Kel
All right. I will put transcripts up at gettingappsdone.com as always. Please be sure to check out my website at joshuagraham.info and Kel's website at piffner.com. If you have a different point of view or you've just recently decided that university really isn't for you and you've been on the fence or anything else related to education or if you've got questions or advice drop into our slack channel at gettingappsdone.com/slack and we'd love to chat with you about that.
-
25:17
Joshua
We've got a community who also would probably be really interested in hearing what you have to say as well as providing some of their own input. If you've got questions. We have a bunch of great people in there who have a lot of really great experience and not the same experience as us, so there's a lot of different sharing going there, so we would absolutely love to have you on there as well. Otherwise we will see you next Thursday. Remember we post every single Thursday. There will be another episode, and sometimes we fit one in between. Apparently now it happens.
-
25:45
Kel
It happens.
-
25:45
Joshua
All right. Until then. Thanks for listening. Cheers.
-
25:52
Kel
Cheers.