Do Developers Need Computer Science Degrees?
Tags: career, beginners
Published: 2019-08-13 01:53:17

Roughly two years ago, I got my first job as I entered my senior year of high school. It was an internship at a tech startup that had an office in my city, and though it was unpaid at first, I was elated about the opportunity.

I have had an interest in programming for several years, but my concrete coding career did not begin until a few months into this internship when I had my first opportunity to create an automation for an ongoing sales initiative, which was subsequently when I started earning a paycheck along with my work.

This was nothing short of a dream for a high school student with an interest in programming. I was learning and doing what I loved in a modern, fast-paced, but still relaxed startup environment. I can confidently say I had the coolest job out of all my friends.

As my final year of high school dragged on, the *“senioritis”* began to set in and I became increasingly disinterested in formal education. My parents would encourage me to stick to it and finish strong, reminding me that school was to come before work. But no matter how much effort they put forth, I was beyond the point of no return in the mindset I had manufactured.

I was saturated in *“hustle culture”* online, specifically on Instagram, and had found inspiration in a few highly talented, and possibly lucky individuals that preached an anti-school agenda, and were wealthy enough to back up their claims. I thought, “I’m getting paid to do what I love, so why should I waste my time on school? Shouldn’t classes be second to what’s really going to boost my career?”
This disinterest slowly festered into a resentment over the course of my first year of college, which I was reluctant to enter, let alone finish. I took mostly common prerequisites, as well as a handful of computer science classes, and by the end of the academic year was fully convinced I had wasted my time on all of them.

Very few new concepts were learned in the computer science classes I attended, mostly due to my previous experience in the subject, but those that were I never applied at work, so I discredited them. And of course I was beyond frustrated about taking history and chemistry classes, because I knew for certain I would never use that content again.

Not only was I skeptical about school, but also about the necessity of a degree to find success in the field. I had been told constantly that the lack of a degree would make it difficult to find jobs, and would decrease my future salary prospects significantly. But when I looked over job postings in my area of interest, I rarely saw the explicit requirement for a degree, just sufficient experience. The only postings that had this educational requirement were from larger, older companies for which I did not want to work in the first place.

All of this came together to the point where I was genuinely considering dropping out to pursue a full time job and be on my merry way.

But recently, I took on a leadership role in the development of an open-source Python web framework called Gato. Though I had written a few Python libraries before, those were relatively high level, and every other project I had done relied heavily upon a framework or library. It was my first experience in lower-level programming, and was primarily what caused my perspective to shift.

This project introduced me to a whole new set of skills, concepts, and patterns, some of which I had only ever learned about in my computer science classes. Not only was I now encountering content that I previously brushed off as useless, I was also realizing that I needed to study and understand Python and web technologies such as HTTP on a much deeper level than ever before in order to execute the goals of the project successfully.

Currently, I am still developing web apps and services that use frameworks and libraries at work, and writing a framework and other supporting libraries in my free time. I am experiencing two different areas of programming, and building two distinct skillsets. The techniques and knowledge I apply at work are not applied to any notable extent in my independent endeavors, and vice versa.

However, if we examine the landscape of programming and web technologies as it stood 15–20 years ago, this claim would not stand. Web frameworks, which are designed to make web development quicker and easier, like Django, Ruby on Rails, and Laravel, have not been around for very long as they all saw their beginnings in the early 2000s, with many others that are popular today following suit soon after.

It must be established that technology and industry, as in companies controlling labor and product, do not move at the same pace, industry being the slower of the two. While these frameworks are still somewhat young according to industry standards, they have been relevant as accepted technologies in the community long enough to have cultivated entirely new labor pools.

This disconnect is the primary reason I saw the job postings I did, and serves as the main source of fuel for this dilemma. Older companies adapt slower to changes in technology than new companies with less overhead and risk that tend to adopt new tools much faster. Because of this, older companies not only are yet to catch up with skill trends, but mainly have more significant demand for programmers who are capable of handling older stacks. And on the other side of the coin, newer companies are more aware of emerging technologies and labor pools that do not require the traditional computer science degree. If I were to continue doing what I was doing for work, I can confidently say I would have gotten by just fine without a degree, as I was becoming increasingly knowledgeable and skilled in that field due to the abundance of resources that were available online.

Much alike to the state of the industry is the state of education. Older colleges and universities have proven to be slow to catch up to certain technological trends, and thus no new web-development-focused tracks have been established and standardized, as the traditional undergraduate computer science degree is designed for engineers. And this is why new non-traditional technical institutions have gained popularity in recent years, as they offer courses relevant to modern technologies and labor demand.

Now, let me clarify my use of titles before I continue. And while the titles may be loosely interchangeable, allow me the parity for demonstration’s sake. In this context, a developer is one who uses frameworks and libraries to build apps, whereas an engineer is one who writes those frameworks and libraries.

Considering industry and education lag, rapid technological development, and community adaptation moving at a rate to match that development speed, it can be concluded that **developers do not need computer science degrees, but engineers surely do**.

Scores of others just like me are struggling with this dilemma of whether or not to pursue further education as programmers, and that can significantly impede the progress of these programmers, and by association organizations that are in need of their skills. The combination of corporate hesitation, toxic hustle culture, and general lack of clarity and direction when it comes to these decisions has cultivated this issue and it must be addressed.

None is lesser than the other — it is necessary that developers and engineers continue to work together to put the entire stack together and push the progression of technology, and in the same way, it is necessary that the entire community works together to make issues like this become known such that all might succeed.