@LevelUP You're right nothing is stopping you from taking SOMETHING SOMEONE ELSE DESIGNED and modifying it to suit your needs. It's what technicians and technologists do all the time. In software dev we call them "code monkeys" and they are known to say things like "google is my best friend" and "I can do that" then ask them to build something they grab a template and start coding away without so much as a wireframe mockup.
Funny you should mention AI. We recently began working on a AI driven monocular navigation system. There were no models we could deploy, just a lot of research papers, some of the content even I and my colleagues agree were really dense, and I read that kinda stuff for fun. How many 3 month self-taught people do you know can take research papers, slog through the math and train a model based on that paper then deploy it on custom hardware? These guys have better say in "AI policy" or "AI ethics" or "AI social interaction" or "AI inclusivity" not in hardcore, bleeding edge stuff.
I know very few people doing bleeding edge AI research, maybe FAANG? The rest of us are just trying to improve model efficiency to turning those papers into real models etc. and the majority of us just want someone who knows enough to determine why our customers leave our website etc. and still the turnover on those jobs is HIGH. -These things require more depth than modifying an opensource project. Anyone can do Dr. Adrian's PyImageSearch or fast.ai and get a project up and running with OpenCV and Keras or Caffe but how many of those people can do production code?
Engineering is a different mindset. You actually design the tools other people work with. In my line of work for example, board bring up and writing drivers are where I get the most contracts. A lot of people can hire in house persons to do high level stuff AFTER the initial framework has been laid out. And even then finding quality C/C++ engineers with deep hardware troubleshooting knowledge is very difficult. You won't believe my Microchip technology SAMD series on YT was the first in the world to cover bare metal SAMD programming and I've gotten contracts just for something simple as that! That was just some free time fun stuff I did to help Arduino hobbyists looking to do deeper, and professional engineers contacted me for help, like really to port to SAMD or from SAMD to STM32 and troubleshoot issues they were having etc. Some of these companies have some very complex stuff, but their in house devs struggle with bare metal board bring up and low level troubleshooting, also at really making C compact and efficient and squeezing GCC for every clock cycle. If you did a course in assembly language, comp architecture and compiler design you will sure be able to do stuff like that, took years to discover those skills and even I learnt a few things from my college courses.
You do have a point though, finding someone to develop "all the core features" of those apps FB, Netflix etc. in a couple of days is VERY difficult!! Do you have any idea how hard it is to handle all that user load!? The core of those apps is the distributed computing and graph topology aspect. Not to mention security and 99.999% uptime!!! Not to mention real time video streaming across multiple platforms Where is such a person in a few days you say!? Just planning that scale of a globally distributed app will take seasoned software architects a month or two.
Those are the core features of those apps. Distributivity. Redundancy. High Uptime. Soft Realtime Performance.
If you mean putting the latest hipster JS framework and some Python or JS backend together to provide the "look and feel" functionality of such an app sure, bring any software engineer a cup of coffee or two and in a few hours all that functionality will be duplicated.
If you want to go into IT support then do an IT degree. CS is NOT IT and CS is NOT software engineering. I did YouTube videos on those actually a few years back.
CS vs IT:
https://www.youtube.com/watch?v=HT45rQw3WWQ
CS vs SE:
https://www.youtube.com/watch?v=A3n0u1pdZ-I
You're right though a CS degree is the ME degree of tech, and (sorry sparkies) is more valuable than a hard EE degree these tdays in terms of employment availability. Very flexible, sure you can do support desk work (an AAS, A+, NET+, CCNA is a better fit for this BTW) or front end dev (do a bootcamp, you only need a degree cause these jobs have fierce competition, I can get a guy to do it for half the pay, takes quarter the time and 10 times the experience as you) but why limit yourself!? Go for gold! Be a 1%. The 99% do the grunt work, but the 1% developers, rockstars, snobs, however you call them are the ones that make Facebook or Netflix what is is.
@racheal83az ALL students have to study on the side. In college you may learn binary or AVL trees, come into the real world and you're thrown into a ROS stack, its full of behavior trees. The thing is you should be able to learn it fast.
A degree gives you the foundation you need to LEARN more you get a lot of breath not depth.
For example in college you do a course on Operating Systems. Lets say you get a job at a startup like lets say building wireless senor nodes for an IoT mesh (very common these days) you never touched an RTOS, but I give you a week or so to mess around with Contiki-NG, you should be able to understand what semaphores are, pre-emptive scheduling, mutual exclusions, deadlock etc. The next week you're learning about SPI, I2C and UART and setting your tools up. I expect you to be able to read the sepcification docs, a few whitepapers and understand the terminology. In your computer architecture class you did timing diagrams, these will help you understand how the protocols work.
Let's say a few months later we decide to switch to Wifi 6. I give you a whitepaper or two to read, if a little discrete math and calc stuff, some stuff abour TCP/IP etc. is in there I expect you to understand it.
Again we decide to downsize from a Cortex M4 to a Cortex M0+, maybe you did a class in C or assembly in college, you should be able to help porting functions, help with testing etc.
In 2 years you'll be niche in embedded real time systems. In college your foundational class on operating systems was build upon to the point you can look at a disassembler in Keil, change the Cortex M task to perform manual context switching using Systick and Pendsv heck you might be able to write a basic Kernel. All the other classes you did may not come into play, but it will help a lot compared to someone who did a bootcamp learning node.js.
Again CS/IT they are not the same. I would NOT expect an IT grad to do that. Embedded jobs ask for CS, EE, CE. An IT grad might be able to recommend a good IoT system for the office thermometers, but I won't expect them to be able to design one.
Just as I wont expect a CS grad to fire up Cisco IOS and configure my router. Sure a CS grad with CCNA could do that job, but the degree prepares you for the other jobs.
Don't underestimate the power of a CS degree that you actually learnt the material. You could work on some very interesting stuff.
The CS grad who has passion that got into embedded systems. 10 years later he's working at Tesla, Toyota or Meta or some Medical company designing gadgets that will be released to market in years, maybe top secret military equipment. He is working on things that will shape the world of tomorrow. He makes whatever he demands, and if he became a domain expert might have spun off, has his own company, doing consulting or building some weird gadget for some weird industry no one ever heard making a fortune. 10 more on top of that maybe he picked up a PhD and is doing research in academia or industry working on what he loves, the son of a gun maybe has a patent or two under his name.
The IT grad is in 10 years in ISM, maybe in charge of a company IT department, heck he may make more than the CS grad who was never chasing money depending on the company he is working for, he may read about some of the things the CS grad is working on. This discovery made, that gadget he wants to buy the CS grad worked on, that patent etc
The guy who got the tick the box degree, if he's ivy league who went on to Google to work, quit and did a startup, maybe he succeeded, maybe he didn't, you will be hearing about it in his course he's selling you though "Ex-google employee teaches coding". If he's not IVY League he may be stuck in a dead end job, maybe he made it to manager, maybe he washed out and left the industry.
Like I said don't underestimate your CS degree, it doesn't matter what school you went to. Sometimes its better to be a big fish in a little pond. Let's say you get into academia, some of the stuff you want to research may not be offered at an IVY, so you go to another school, publish excellent research and get funding to do what you love.
I guess what I'm saying is apply yourself! you will be surprised where genuine passion can take you! An interviewer can always tell the tick the box guys! nothing is wrong with being such a person, but you'll have more fun, have a more fulfilling career and be happier if you really absorb your material.
Again look at my industry, embededded systems. Look at Michel Barr of Barr group! The guy has his own coding standard that the industry follows. When it comes to embedded, the guy was called alongside NASA to testify in the Toyota acceleration issue, I mentioned earlier. He isn't ivy, but he loves what he does. Aim to be someone like that. Look also at Jack Ganssle, Jacob Beiningo etc. These are guys you probably never heard of but in this industry there names are like "albert einstein" or "micheal jackson".
No IVY league degree required. A degree in Math, EE, CS, CE is golden once you apply yourself. You can work to become a niche expert, go into academia or industry research don't limit yourself.