<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elliott M.</title>
    <description>The latest articles on DEV Community by Elliott M. (@glotchimo).</description>
    <link>https://dev.to/glotchimo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F120227%2F421cd85f-7793-4486-89a6-801b517bf654.jpg</url>
      <title>DEV Community: Elliott M.</title>
      <link>https://dev.to/glotchimo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/glotchimo"/>
    <language>en</language>
    <item>
      <title>CS Degrees Aren't Worthless</title>
      <dc:creator>Elliott M.</dc:creator>
      <pubDate>Mon, 20 Jul 2020 19:23:27 +0000</pubDate>
      <link>https://dev.to/glotchimo/cs-degrees-aren-t-worthless-1k3o</link>
      <guid>https://dev.to/glotchimo/cs-degrees-aren-t-worthless-1k3o</guid>
      <description>&lt;p&gt;I’ve been in the software development space for several years now, and have seen a consistent message from a whole lot of people: you don’t need a computer science degree. And it’s true — you don’t need one… but you should definitely get one if you can, and I’m gonna argue that side of the coin in this article.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: I wrote an article previously discussing the question of whether or not developer’s need computer science degrees, and I’m going to make some amendments to my original position in this piece.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Base context
&lt;/h1&gt;

&lt;p&gt;The typical argument behind not getting a CS degree is that &lt;strong&gt;you can learn all that you need to online&lt;/strong&gt;. And that’s true — you can, for the most part. The nice thing about computer science is that a whole bunch of it has taken place on the internet, because of the internet. From documentation to specifications to textbooks to video courses, you can find virtually everything you need to be a really good software developer online, and most of it’s free!&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;just because the resources are available does not mean they’re utilized&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Due to the shift in skill sets that we’ve seen over the past two decades with the rise in popularity frameworks like React, Django, Tensorflow, et cetera, a divide has formed between low-level knowledge and high-level knowledge. You can get a job as a React developer without the slightest knowledge of algorithms or data structures, whereas 20-odd years ago, you needed to know a lot more about how the technology worked on a lower level in order to build advanced websites. With that divide, a whole new profession has emerged: online course instructors.&lt;/p&gt;

&lt;p&gt;Before I begin, I must make it clear that &lt;strong&gt;I have nothing against online course instructors or their content&lt;/strong&gt;. The content they create is helpful and should be utilized.&lt;/p&gt;

&lt;h1&gt;
  
  
  A hypothetical
&lt;/h1&gt;

&lt;p&gt;I’m going to introduce a character for us: Udemy Pat, a web developer who loves React, so much that Pat started created courses on Udemy to help other people learn how to use Pat’s favorite front-end framework.&lt;/p&gt;

&lt;p&gt;Pat spent countless hours preparing content for these courses, but it paid off — lots of people signed up! Sadly, they all signed up when it was on sale for $14 as opposed to the original $250… Oh well. Regardless, Pat taught the growing audience in the ways of React, and they all went out to create fast and stylish SPAs with their new skills.&lt;/p&gt;

&lt;p&gt;But — oh no! Pat forgot to teach the students about object-oriented design patterns and the countless dangers of undesigned software! And 50% of the students were professionals switching industries to learn how to write code, and the other 50% were novice programmers with no formal training or education!&lt;/p&gt;

&lt;p&gt;So 257 course attendees went out and built their SPAs favoring class inheritance over object composition, tightly coupling classes with fragile bases, creating inflexible hierarchies and duplication upon duplication. Their projects died off within a few months of being created because client desires and specifications changed, and their projects were unable to change efficiently without breaking.&lt;/p&gt;

&lt;p&gt;Well Pat had no idea — Pat went to the local state university and got a computer science degree for relatively cheap, and was already familiar with all those concepts… So why were all the students so unprepared?&lt;/p&gt;

&lt;p&gt;Because despite the wealth of knowledge and information detailing design patterns and other core software engineering concepts, the dominant narrative was that spread by the majority of socially influential developers on platforms like Instagram and Twitter: screw school! You don’t need a CS degree! Take my React course instead…&lt;/p&gt;

&lt;h1&gt;
  
  
  An example from experience
&lt;/h1&gt;

&lt;p&gt;Now I admit, I used to be in this camp. Before I started my formal education, I thought school was a joke and all I needed to do was learn on the go and I’d be set. And in all honesty, with a heavy heart, I admit I wasn’t completely wrong. A lot of companies hire developers with no formal training or education, and they do what all of Pat’s students did: they create inflexible, inefficient, poorly-designed software, because they don’t know important theory, because it sounds lame and they know a guy who makes a ton of money even though he dropped out of college.&lt;/p&gt;

&lt;p&gt;But then I took my first official above-100-level computer science course in college, CS220: Object-Oriented Programming in C++ and learned a ton about how to design OO programs. And then I looked back at old code I’d written when I was thrashing school for being a dumb waste of time. And then I shuddered and sought forgiveness for my foolishness. And then I refactored all of my old code because I couldn’t bear the thought of code that bad being attached to my name.&lt;/p&gt;

&lt;p&gt;Here’s my point: &lt;strong&gt;you don’t need a CS degree in order to get a job, but getting one will allow you to do a better job&lt;/strong&gt;. I realized that traditional CS courses that detail theoretical topics like design patterns, data structures, and algorithms aren’t 100% necessary in building a functioning app, but having knowledge of those things will make an app 100% better.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pros and cons
&lt;/h1&gt;

&lt;p&gt;Let’s make this a little more visual — how about a pros and cons list for a formal education in computer science?&lt;/p&gt;

&lt;h3&gt;
  
  
  Pro: you will learn and reinforce skills that will make you a better team members, system designer, and engineer.
&lt;/h3&gt;

&lt;p&gt;Knowing design patterns not only gives you a big tool kit of ready-to-use, tried-and-true solutions to problems, but it also gives you a shared vocabulary with your team that enables you to spend more time in design and less time in implementation detail. And on top of that, if a system is designed better, and you have a deeper understanding of that design, you can build it better.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pro: you will exercise certain problem solving muscles more than you would otherwise.
&lt;/h3&gt;

&lt;p&gt;Computer science course content includes a lot of puzzles and problem solving, and it’s not because instructors don’t want you to implement “real-life” solutions, it’s so that you learn how to think creatively on an abstract level with familiar concepts before you dive into the real world with its fast-paced, high-complexity nature. Most online courses won’t push your brain beyond its limit so it can actually learn and grow, and learning properly takes some guidance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pro: you will open up more opportunities if you have some level of formal education.
&lt;/h3&gt;

&lt;p&gt;Whether it’s a full-fledged degree, a series of classes, or a certification of some sort, having those on your resume will make you stand out when compared to (new character) Charlie who took 10 of Pat’s Udemy courses but only knows how to build 10 different types of blogs and ecommerce websites with React. It’ll also give you an edge when it comes to technical interviews — those often feature difficult, abstract questions that require a lot of low-level and theoretical knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Con: college is expensive.
&lt;/h3&gt;

&lt;p&gt;Yes, for the most part, it is very expensive. But, there are a lot of ways to get around that barrier to entry.&lt;/p&gt;

&lt;p&gt;Method 1: Community college transfer! I took this route — I attended a local community college to get my first two years out of the way, then transferred to a local state university to finish my degree, and it saved me tens of thousands of dollars, and I didn’t even get any scholarship money. You don’t need to be at a four-year university for four years, and you don’t need to go out of state. Take the cheap route.&lt;/p&gt;

&lt;p&gt;Method 2: Online courses! Top schools like MIT, Stanford, and Harvard all offer free computer science courses that you can take or watch online. Check out this article for a huge list of those courses.&lt;/p&gt;

&lt;p&gt;With those most prominent pros and cons out of the way, I’m going to address some common excuses that I see when it comes to a college education.&lt;/p&gt;

&lt;h3&gt;
  
  
  Excuse: it’s a waste of time.
&lt;/h3&gt;

&lt;p&gt;It’s only a waste of time if you choose to waste that time. I know countless people who dug into their classes and sank their teeth into the content and came out the other end having a wealth of knowledge beyond the majority of their peers, and now they enjoy solving difficult problems with innovative technology at cool companies for a huge amount of money.&lt;/p&gt;

&lt;p&gt;Make the most of what’s in front of you. That’s just a general life lesson, doesn’t just apply to computer science.&lt;/p&gt;

&lt;h3&gt;
  
  
  Excuse: academic CS is so far behind the industry.
&lt;/h3&gt;

&lt;p&gt;While that’s true in a lot of ways, it doesn’t change the fact that it teaches timeless lessons and practices that have been used by countless engineers and have impacted technology in ways most can’t even understand. Just because your university uses Java 6 and an old build of Eclipse doesn’t mean that you aren’t learning valuable information about how to build software.&lt;/p&gt;

&lt;p&gt;Plus, you can rely on the internet for all that juicy cutting-edge stuff.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Finally, I’m going to address those who hold fast to the anti-school narrative. If you believe with all your heart, despite the points I’ve proposed, that formal education is still not worth it, at the very least &lt;strong&gt;encourage people to dig deeper than the framework layer and do their own independent study, and warn people about what can happen if you don’t take things like system design seriously&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is an injustice to steer novice developers into a life of bad design, poor practice, and digital suffering, not only because they will produce low-quality work, but also because the things they create might impact other people, from future maintainers to users who suffer due to bad design, whether it be security issues, accessibility issues, or even worse issues in things like cars or airplanes.&lt;/p&gt;

&lt;p&gt;In summary, there is more to software development than the functionality of a product; how it works behind the scenes matters, and it’s important that developers learn how to build things that work well, and that’s something that formal education offers in a meticulously structured manner.&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>career</category>
    </item>
    <item>
      <title>Do Developers Need Computer Science Degrees?</title>
      <dc:creator>Elliott M.</dc:creator>
      <pubDate>Tue, 13 Aug 2019 01:53:17 +0000</pubDate>
      <link>https://dev.to/glotchimo/do-developers-need-computer-science-degrees-17e1</link>
      <guid>https://dev.to/glotchimo/do-developers-need-computer-science-degrees-17e1</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;As my final year of high school dragged on, the &lt;em&gt;“senioritis”&lt;/em&gt; 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.&lt;/p&gt;

&lt;p&gt;I was saturated in &lt;em&gt;“hustle culture”&lt;/em&gt; 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?”&lt;br&gt;
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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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 &lt;strong&gt;developers do not need computer science degrees, but engineers surely do&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
