void learnCoding(bool motivation) {
if (motivation) learnCoding(false);
}
With the forever-increasing popularity of becoming a software engineer/developer, getting $100k a year, and living the good life, people have been searching for ways to break into the tech industry. As consumers of the 21st century, we love products that are both cheap (dirt-cheap if possible) and of great quality (Louis Vuitton and Gucci-like). We thus try to solve this optimization problem:
Given resources e.g money/assets as an input of amount x
, we need to maximize the value we extract from it per dollar y
.
Everyone knows the traditional way to get into software engineering or related technical roles: get a CS degree + some technical experience through internships or personal projects, and then apply to these great tech companies. But the value of the CS degree is said to be limited and the CS degree also consumes too much time for the limited value it provides. In particular, people often bring up how most of the things we CS students learn will never really apply to our daily job or that very little of what we learned would be applicable.
As a computer science major at a great university, I could partly agree with this. Generally, you have to take a certain amount of general education courses, and often it's something you aren't interested in. Courses that satisfy your major requirements are not exempt from this fact either--I have to take an electrical engineering class but I'm not an EE/CECS major, and I'm not necessarily going into embedded systems in my job either. For the courses that are just pure computer science, some of them cover things like proofs and algorithms that I probably will never use in my job. Why then am I learning how to be a purist computer scientist instead of a software engineer? ... Oh wait.
At this point of our rant, we realize that the computer science major is not explicitly about creating software or being a software developer/engineer. Computer science is a broad field with the goal of understanding computation, automation, and information (ripped this from the first line of Wikipedia). Learning computer science is not just about learning how to build software, but rather it's about learning these things that constitute computers. By having technical and detailed knowledge of the concepts of computer science, a CS student is equipped with not only skills to understand computers but also various hard skills e.g problem-solving and creative thinking skills that are necessary to solve problems related to computers and various other problems in computer science. The CS degree thus provides you with the skills, frameworks, and knowledge regarding computer science, which is important if you want to pursue a career in software engineering/development.
This is why the majority of SWEs in this world have a CS degree because it provides the set of knowledge and skills that allows us to not only build software in scalable and efficient ways but also to understand problems when we need to debug production errors.
A common misconception within interested communities is to treat these two as the same role when they're not. Sure, engineers are developers since what we do day-in and day-out concerns developing software, but there's a difference that we can spot by just looking into the definition of the word engineer, that is: we also fix things to make it run quicker than ever before, and we are also conscious about the different pros and cons of what we've built, which consists of knowing the worst-case circumstances that can wreck the entire ship and sink it like when Jack bids farewell to Rose as the Titanic dives itself into the abyss of the ocean. In the same way construction companies hire civil engineers to make sure buildings are reliably stable and can withstand earthquakes, tech companies hire SWEs to be not only 99.9% sure that their products run smoothly and quickly, but also to be relatively sure it won't crash during high-traffic circumstances, and also even if it does crash, we can reboot things quickly and operations resume to normal in little time.
Some do, and some don't. For those that do, they often teach it very well--to the point their content covers all if not more than what's covered in 4 years of computer science. In that case, the 4-year CS degree does indeed fall short to this <1 year coding bootcamp certification. But I believe there's much more to being a CS student than the degree.
When you go to college, you shouldn't be paying only for that degree that you complete after 4 years of busting your ass off in exams, homework, and quizzes. If you do then you're really really missing out, because after all the degree is just a piece of paper with your name on it--rethinking what it is revealed that the value of this piece of paper is dependent not only the various skills you've gained as a student throughout your classes but also the value that you got outside of them. Student organizations and events are really only available to students, and it's a great way to get experience in various areas before you set foot in the tech industry. As the engineering VP at HackSC, I was able to create an engineering culture that almost resembles a tech startup: we build a good number of tech/web platforms and tools used by both us--the organizers--and the hackers participating in our annual hackathon. The engineering team head count is 10+ and managing this amount of engineers requires me to establish a great engineering culture/environment in order for us to succeed as a student org. Among our practices concerns using task management systems to keep track of our work, writing proper documentation whenever features are built, creating and maintaining development/code conventions, and employing proper and effective Git development workflows. As such, all of our engineers are basically getting experience working in a real technical environment similar to that in a real tech company. This sort of experience is hard to get if you're not a student and you're trying to get some experience before that first internship you want to get this summer.
I may miss a couple of points because after all I only know up to what I have researched about coding bootcamps. Nonetheless, even if there's a coding bootcamp experience that is better than that of a 4-years college, I still believe that being in college pursuing a computer science degree provides much more value to me as a prospective software engineer than if I have pursued alternative options.
That's it for this post! I hope you enjoyed the read.
vincent = 0