What are you wanting out of your job? Are you wanting money, satisfaction, expansion potential, or maybe a bit of all of them in one? A lot of jobs in tech have this potential, but the overwhelming majority of these opportunities seem to be looking for developers. Whether its web development, software development, full-stack or just front-end, there’s a lot you can do under the umbrella of development, both with and without an employer. With that in mind, many people are left asking if you really need a degree to land a job in development. There obviously are those who say no, that they landed a job with 9 months experience and a bunch of projects, but there are still others that call survivorship bias on that and say that a degree is the only reliable way to break into this industry.
My name is Morgan, I’m author for and owner of SleepyNova, and I want to talk about getting jobs in development. As a current Drupal developer for my state university, I feel I’m qualified to discuss this topic, partially because I’m graduating soon from university, but already have 2 years of professional experience from development jobs I landed without any degree. I do want to clarify for best understanding, I did not take any internships, this is purely professional development experience.
In my current experience, it seems to me that there are several factors that need to be considered:
- Educational Quality
- Problem Solving
- Projects
- Interview Skills
- Developer Type
- Where you are Applying
That is a bit of a long list, so I’m going to break it down and talk about one at a time. I would like to point out that nowhere in that list is university attended or degree obtained mentioned. That is because I don’t believe a degree is necessary, and in some cases I believe it can hold back otherwise competent developers. I will discuss that later in the post, but for now, let’s get started.
Educational Quality
The quality of your education is not correlated with what university you go to or what resources you have. I want to dispel that thought out the gate, as many people believe that external conditions manage how well they can learn. Now, I’m not saying you can simply manifest the knowledge into your head, but we are in the modern era, and you have internet access (I know since you’re reading this, unless someone printed it out and handed it to you, in which case, odd but acceptable I guess.), you have all the resources you will ever need. You may not be able to understand them all immediately, but there are some that are beginner friendly enough that given effort, anyone can learn how to develop with a high quality of education.
I know you must be asking a question though. How do I know this as a degreed developer?
My answer is simple. My degree is not in Computer Science or Software Engineering. I got a degree in Graphics Information Technology (GIT for short), and while that sounds similar, the focus was actually on design, at least with the professors who taught me. It had focus areas for Graphic Design, Videography, Commercial Photography, User Experience/Interfaces (UX/UI), and Front-End Development & Design. None of those are development heavy, ironically even the Front-End Development & Design, as the professors claimed you could just know HTML & CSS and get a job (This is blatantly untrue for those who aren’t in Web Development yet).
In other words, this was very low-quality education for someone who would later become a developer. At the time, I wasn’t even a front-end focus, but a Graphic Design focus in the program. I was dabbling in development due to COVID, when I found I had an interest (and could get paid more doing it). At that time I had only taken HTML & CSS, so I started practicing that again, but noticed a lot was missing. That’s when I found JavaScript was necessary to make things work, and after that I thought I was prepared again, until I found out about Libraries and APIs, and that was when I took my education fully into my own hands.
I proceeded to rebuild my understanding of Web Development from the ground up, using the W3Schools site as a guide. I taught myself all I could using the Internet and my belief that you can learn anything if you put the effort in. I restarted from level 0, reteaching myself HTML, and moving forward till I was building full web applications (not quite full-stack, but as close as I could get without databases & containerization). After about 6 months of learning, and around 3 months of interviewing multiple times a week while still expanding my skills, I landed my first official Developer Position.
I like to believe that this was due to my self-education being high quality, but I cannot neglect to mention I took a couple university classes on programming logic at the same time. I had always struggled with programming logic and felt that it would take me longer to learn it myself than to take a class, so I used the resources available to me. I also did not take any courses over 100 level, and once I was confident in my ability, I continued to teach myself via forums and documentation. I want to be absolutely clear on one point: I do not believe that classes were necessary for this step. What I do mean, is that depending on your situation and who you are as a person, university can mean a quicker education while maintaining high standards of quality. I would add the stipulation however, that doing this can create developers that are less capable, as they may not learn the skills that I will be discussing in this next section.
Problem Solving
Problem Solving is something you hear in almost every job to varying degrees. This is not something they teach in university (at least from what I have heard from other degreed developers, and from my own experience). The irony is that problem solving is 90% of a developers job. Algorithms, which are what developers produce, are defined broadly as “a step-by-step procedure for solving a problem or accomplishing some end”. Essentially, we create programs to solve problems, and in order to create a program to solve a problem, we first must solve the problem ourselves. If you cannot do this, it does not matter how many languages you know, or how acquainted you are with X framework or Y API, you will find yourself unable to keep a development job, even if you happen to land one. Problem solving is something that can be learned, as with any skill, but it takes time and practice. This is what I meant when I said that I feel most degreed developers (or at least developers who learned via college) may be less capable. In my journey to learn programming, I had to solve the problem of “I was taught wrong, so I need to reteach myself correctly”. Because I solved that problem before I executed the solution, I feel I was able to avoid the lack of problem-solving skills that normally come from learning programming via college. This problem will normally set in because the mindset becomes less of “how do I solve problems” as a general question, and more of “how do I maximize my grade” as a specific question, or even worse, “how do I pass this with as little effort as possible”. I also only took entry level courses and learned the rest myself, which forced me to keep solving the problem of “I know too little, and what I know is too basic”. This process, I believe exemplifies the phrase “The work works on you more than you work on it”. I would not be able to do what I do without having put the effort in, and the effort is what I feel made me a developer, and what makes other non-degreed developers into successful professionals. In interviews for development positions, something often seen are skills assessments. These often require some knowledge of the languages that were in the description, but they don’t tend to require knowledge of the industry-standard APIs, and sometimes to pass them you may not even need to use the language. These are fundamentally puzzles, not tasks you are going to submit a pull request to. Solving the puzzle simply requires you to understand its solution, the path to said solution, and the ability to articulate it. If you can do this, very often you will get hired, even if you can’t quickly translate it to code, because that skill is easier to learn than the actual solving process. Its why Google and Facebook hire non-degreed developers often: Because they recognize that to reach those developers skill levels, they already had to solve many problems.
Projects
Another very important aspect of getting a job as a developer is how many personal projects you have completed, and not just quantity, but complexity of each project. You could have one massive project with immense complexity, or three median complexity projects, and potentially have the same outcome. What you don’t want is a ton of single page applications with one page of HTML CSS and JS respectively, or what is an even worse alternative – no projects done. This is not just an exercise in solving the problems you are electing to take on, but an exercise of creativity, as you are either creating the problems you need to solve, using a process to find them preemptively, or at the very least able to create something to solve someone else’s problem when it arises. This is another area where college classes may help but are not necessarily the best route. Some professors will assign projects that can be used to demonstrate capability, but the problem is twofold with using these on your resume.
First, if someone else in your class applies to the same job and interviews, they will see that you have the same project and may assume you both downloaded it from a repo somewhere, especially if it looks the same/has similar styling, essentially marking you plagiarizers despite the fact that your code will likely be very different.
Secondly, these projects may not use best practices and self-made solutions if the student is either just trying to pass the class, or if the professor gives the ‘correct’ code and the student changes theirs to reflect it.
It is typically best to use your own projects, that way the likelihood of repeats is low, and when it does happen it will probably have enough differences to not look the same. You also won’t have to ensure your code looks like your professors/classmates, in case they have theirs in a repo somewhere and your code could be flagged as plagiarized.
Before moving on, I would also like to mention that exercises in creativity frequently sound daunting, especially to people who have temperaments that lend to development, as we often see ourselves as “not having the creative touch”. Creativity is not a trait like is often said, but is a process and a skill that can be learned and practiced. There are a lot of books on how to develop, and very often it does mirror traditional problem-solving processes. The oxford dictionary defines creativity as “the use of skill and imagination to produce something new or to produce art”, and development as “the process of producing or creating something new or more advanced; a new or advanced product or idea”. These are similar definitions, so you could say that creativity and development are synonyms: Similar in nature, not exactly the same, but in some cases interchangeable. Using that thought process lends to one end, that if one is learnable, then the other must be as well. Sit on that if you need to, and consider if you aren’t creative, or if you just haven’t learned/developed an intentional process yet.
Interview Skills
Another important aspect to getting a job as a developer is one’s interview skills, which conveniently (sarcasm) is not taught at most universities. If you can’t tell the interviewer your skills, they can’t know you have them. Communication is very important in everything, but especially to sell your skills to a company. You, in essence, are a salesperson, and they – the company – is your client, not your future boss. You need to be able to tell your clients what you can do for them, how effectively, and what your services are worth in a concise and effective way. There are also many books on how to sell and communicate, and these skills are invaluable for getting a job as a developer. These are not things that you can necessarily put on your resume to give you a bump above the rest, but you may be able to use better language in your resume, or it can give you a boost in the first interview to get a second.
Some universities do have a program for mock interviews, but without stakes there is not much weight to them, and as far as I know there isn’t much data to show these definitively help in any way. These programs may help for some, but a better way to learn according to most professionals is to apply to a lot of jobs, regardless of if you want them – preferably ones you don’t want – and get experience interviewing that way. I don’t see any potential downsides to going to a university mock interview program, but don’t feel disadvantaged if that opportunity is not available to you.
This does tend to apply to all job interviews, not specifically development, so if you are considering development but end up not going for it, its still useful to learn.
Developer Type
The type/title of the position can also change the necessity of a degree, as title can mean a lot in the minimum qualifications, even if there is a position with the same responsibilities and a different title. Almost anything with ‘engineer’ in the title is going to either require a degree or more experience than is worth transferring for the title. A good example are titles like ‘software engineer’ vs ‘software developer’. They are functionally the same, but one has more pay than the other, and may have slightly more responsibility. In reality, if you are a developer, you fundamentally are an engineer, so you may be qualified but not have the shiny piece of paper. That is ok though, as you can still get plenty of great opportunities without it. Google is known for hiring non-degreed developers, and even if you take a lower paid position (which for developers should be in the 60-80k range) for a couple of years, then apply, isn’t a bad trade, since you’ll be paid instead of paying for a degree, and you’ll have a real shot at big money in the FAANG.
Another thing to keep in mind is that certain areas of focus are easier to break into than others. As an example, web development is easier to get into than software development or server administration. This can mean you can go and learn the basics to web, get two years’ experience, then transfer that experience to learning and applying for software positions that may have been closed to you before. It may seem small, but understanding where to break in quickest and moving your way around titles to gain experience may save you a lot of money and time, especially if you can avoid paying for university classes that you wouldn’t want to take anyway.
Where you Apply
The final point, and a rather straightforward one, is where you are applying. FAANG companies – as I mentioned prior to this section – very often will take non-degreed developers who have experience over degreed developers who don’t, and in some cases even over degreed developers with experience. This is because they know the degree doesn’t create the process that is required to do the job effectively. However, if you are applying for the same positions at small businesses or at institutions that don’t deal primarily with development, you may get rejected regardless of experience due to the lack of degree(s). This is not something you can control, but do some research into companies to understand where their priorities lie so you save yourself time and frustration at being rejected for not having the $50,000 piece of laminated cardstock.
Depending on where you apply though, there is something that can give a major leg up to those with degrees. That is a loophole some companies put in the small text of their applications, and that will essentially say “we include the time it took to complete your degree as relevant experience to the minimum requirement, with a maximum of X number of credits equaling to 1 year experience”. This can mean people who have 2 years of development experience and a degree, like in my case, can count it for 6 years’ experience at certain places. Most do not offer this, but some – especially universities – do tend to count this loophole.
TL;DR
In case you are just looking for a final conclusion, here it is. You don’t need a degree to be a good developer, and in fact in some ways relying on a degree for education can hinder you but can give you a boost up in immediate job hiring. However, you can also just get a job developing for a couple years, and then get the same job, if not better, with that experience. A Degree will take 2-4 years, and in that same time, and for no money, you can get a job by just doing some projects instead of paying for classes from a university.
Keep in mind, this is all my opinion as a developer who got his start without a degree and received his degree within a year of starting his job, so I don’t have the true non-degreed growth story that some other developers have. So my experience may be different than other developers, so definitely talk to some other developers if you can to get more pointed advice to your situation.
Leave a Reply