My degree is in Applied Math. I work as an Embedded Software Engineer, a job which I got by having a good portfolio of projects. I've had CS majors AND Electrical/Computer Engineering majors on Reddit tell me that I shouldn't pursue this dream job of mine and should just settle for Data Science. I've had people on Reddit tell me "I don't know anyone who works in embedded systems that doesn't have a relevant degree" or "I wouldn't hire you". These people are idiots. Don't give up on your dreams and FIND A WAY to make it happen.
@@KaiAbyss So the short answer is there are no shortcuts to Embedded Systems. And, the answer depends on whether you want to just build embedded systems vs. getting a job in this field. First of all, getting a job in embedded systems is very difficult if you don't have a degree in Computer engineering > Electrical Engineering > Computer science. And I structured the degree precedence this way because this is what companies generally prefer (they love CE majors, especially those that have embedded systems backgrounds). Regardless of which of these 3 degrees you get, take classes related to embedded systems if you can and build stuff! If you don't get one of these degrees, I honestly don't know how feasible it is for you to get hired without somehow landing an internship or job in embedded. I got very lucky with my opportunities because I did projects which helped me get an embedded systems internship (where the hiring manager was willing to hire me for the role) and once I had that internship and this portfolio on my resume, I still got A LOT of rejections but I also had a handful of interviews which I got because people were interested in the fact that I had an internship under my belt. I did well on most of the interviews and someone picked me up (who was willing to hire me). Let me stress this again that it was an uphill battle for me. I went on subreddits and asked for advice and I got criticism/hate by others for my unconventional path. If you want an easier route, just get the relevant degree and do projects. You can google online to see what skills/domains of knowledge embedded systems require but if you're starting with 0 knowledge and 0 experience, my best advice for you is to start with Arduino. Its going to hold your hand throughout the process but its a lot easier to learn embedded systems when you have that hand holding. Once you get proficiency with Arduino and whatever microcontroller your board utilizes, move onto more serious boards like STM, NXP, TI and learn those. Learn how to read documentation. Learn how to search for information on Google. Ask for help from more experienced embedded systems people when you're stuck. These are the general tips I can give you. If you just want to build embedded systems, you don't need to know all this stuff. Just pick Arduino or any board with good documentation and/or a large community of makers/DIY-ers and start building stuff. The best teacher is experience. You might not understand the theory just from reading about it but once you go through the process of building stuff and doing trial and error, you learn.
ClassyJohn, congrats and keep it going. I too also got my dream job as an Embedded S/W Engineer working with medical robotics right after I finished my degree in IT. Like you I got the job because I have a good portfolio of projects. If you have the potential, nothing can stop you! After working for a couple of years I'm now in the process of completing my master's CS.
I studied Electronics my own. Being enrolled in CS, whole system pushes us to only coding. Rest basic subjects of computer are just taught as formality, that what I hates. I like to see behind what is and how is like stuffs. And I am able to understand processor architecture and its significance.
@@JacobSorber just pitching a video idea, i found your page because I was looking for a video (for a student I mentor) about what are embedded systems (examples w/visuals) and what makes programming for them different than regular programming.
I had a non-CS undergrad degree (though a minor in CS) and after working in the computer industry for a year or so I decided that I really wanted to be a full time software developer and I did not have nearly enough programming experience to do that (I had 2 semesters of C++, assembly, and some various non-programming computer courses). I decided the best approach was to get a masters in CS, which basically enabled me to devote my time to CS exclusively. For my thesis research I worked with the Linux kernel which gave me all the programming experience I could ever want :) So, for those with an existing degree, consider getting a masters. You may have a pre-req or two to take (I spent my first semester doing that) but it was well worth it.
A degree in CS is needed because: - you'll learn lot of stuffs deeply - you'll be "forced to learn" instead of procrastinating - you'll acquire knowledge outside the bare programming (e.g.: math and general engineering) - you'll acquire the "forma mentis" to learn new complicated stuffs quickly Source: I dropped out of CS and subsequently found job in a different industry. Years later I'm not able to be a professional programmer anymore ¯\_(ツ)_/¯ My brain just can't handle it 😱 So, unless you have a really active mind, a strong passion and a positive financial situation, getting a degree is the easiest way to join the army of ones and zeroe's plumbers 👍
Graduated in CS at University of Karlsruhe, Germany. Nowadays it is called KIT, Karlsruhe Institute of Technology. Basically, in Germany the education is nearly free. But you need money for housing, food and transportation of course. Working in automotive industry for 15 years now as a "software developer". This job took a lot of life energy from me, because it is not really about programming. It's only about tight schedules, outsourcing, missing information from chip suppliers, integrating crappy software modules from third parties, crappy tools, keeping an eye on Indian programmers, agile methods bullshit, pushing tickets from team to team, always starting same things from new because new SoC is a couple of cents cheaper than the other one. Now that I don't care about the job any more (f##k you money is so relaxing), I went back to hobby learning/programming and found your channel. It is so refreshing to actually think about programming problems and concepts and learning stuff.
I never got my CS degree... and that was back in the 1980s... I still have to find myself justifying that years and years of experience make up for it now.... So, you may or may not need a CS degree to do a job.... but it certainly makes things SO much easier at a job interview.
Major EE, Minor CS late 70s / early 80s. Learned Algol and Fortran on a DEC System 10 mainframe and IBM 360 with first punch cards then moved up with the big dogs on 300 baud green text ASCII terminals. WOW! Hobby built Z80 S100 computers. Self taught BASIC on an Apple 2. Self taught C in the mid 1980s on X86 including of course PCs but also STD and Multibuss systems. Heavy with embedded programming, most specifically with electrical interfacing and signal processing, the EE background helped that. I will say that even though my C is self taught, I still relied on the basics taught in CS even in those early days. And although Fortran and Algol are now ancient, once you learn one language, you can learn any other. After all, it all complies down to machine code in the end so I find that various languages are more similar than they are different. I mean I look at Python today and can easily see it's built on top of good old C.
First view. First Like. First Comment😁. Studying Electrical and Electronic Engineering at Ashesi University in Ghana. But I still have a love for CS. I'm trying to build a curriculum for myself on the side for learning CS.
I'm currently doing my CS masters at George Mason University and I'm also currently working as a machine learning engineer. To add to professor Sorber's video, I personally think the most valuable things you can get with a university degree are the connections and the research opportunities; both of which can give you an extremely large advantage over others who are applying for the same job. There's a big difference between being qualified on paper, vs staying up until 5:00 AM in the lab trying to get your senior design project to work, driving home, sleeping for an hour, and then coming back to give a presentation that's worth half of your final grade and thereby also determines if you can graduate. These experiences can help you develop a level of trust with your peers and your professors (who are also leading experts in their field) that is very difficult to attain outside of university because it requires that pressure cooker environment where you must work together to get things done or fail; and to honest, universities are very good at creating that stressful pressure cooker environment that's necessary to creating these strong bonds that last a lifetime. Trust me when I say this, if you put in the work, participate in undergraduate research, and create strong bonds with your professors and your peers, you won't regret it.
My cs college edu was outdated af w terrible old teachers who didnt know anything. Wasted time n money. Learned everything on the job and on an additional 3 month private course. I wouldnt go uni if i were young cos your time and money can be spent much more effectively. 3 month intensive java course was impressive though
This is a dilemma that crosses my mind quite often. I'm currently enrolled in a CS degree, and the question often pops up of if my time effort and money is worth it. I've come to the conclusion that while I don't need a degree to get started on my career, a career alone isn't what I value most of all. My goals are not to make money, but to understand as much as I can about computer science, and use my accumulated Knowledge and Skills to improve the world and the industry. Eventually.
I dropped out of a Ph.D. program in an unrelated field. For the past couple of years, I taught myself C, C++, some Python and JavaScript. Consequently, I can attest that learning on your own is definitely possible. What I've come to realise, however, that a programming language on its own is not enough. One needs to know the fundamental principles behind the practice of programming, which can be acquired in great part through other related disciplines such as discrete mathematics, data structures, algorithms, object-oriented programming, design patterns, hardware system, etc. Of course, the scope and depth of your understanding of these subject matters depends on your aspiration. I agree with you Jacob that self-learning has its benefits, but it is not easy, and definitely not for everyone. Amongst other things, a university setting provides you with a strong curriculum that could guide you through your learning process. Equally important, it gives you the opportunity to engage with and learn from peers and mentors. Edit: Made the comment more general, which is more appropriate. cheers
Hey dude! I have a couple of my analysis of algorithms assignments around if you'd like to take a look at how that works. Its an extremely valuable skill in the field.
Just make sure you go to a *quality* University. I did things kind of backwards, being in industry before going to University and to be honest they were astonishing bad, I really can't criticise them enough. So many students leaving with frankly massive holes in their understanding.
Learned on my own, do pcb design in Eagle cad and c code on pic microcontrollers. Just n bit of C on Linux. From Lichtenburg, South Africa, about 180km from Gaborone. Thanks for the great videos! Just used the one on "select()"
if you're interested in compiled stuff, you need a degree. I'm self taught in C and C++ and evidently unemployable, despite applying for years. In related news, if anyone knows of a C or C++ place that'll hire people without degrees, hit me up.
Data structures and algorithms. Prof. Sober just gave you a clue. I love C so much I slept one sheet for over 3 years. Just had to know how to apply certain algorithms when it is most needed. At the moment, I have Prof. Sober and others I can't mention here which means I keep my respect for Prof. Sober intact in my cells. At the moment I am doing a city and guilds course in ref and aircon so I can get the job that will pay me the type of money I will need to learn C and hopefully Javascript. I like that I am stuck cause it keeps me hungry. I know I will something good with the c programming skills and will never give in to any disruption. Stay motivated, fam.
It's only one data point, but the guy I mentioned in the video (who had a music degree), was definitely doing some very sophisticated "compiled stuff" - like rewriting compiled binaries back before there were decent tools for it.
Not necessarily. If you know algorithms and data manipulation, then you'll be invaluable. Programming is essentially data manipulation in the most efficient, resourceful way.
I see the point in what you are saying and i agree with that, but i think this the case for software engineering. CS is a huge field and i can imagine one picking up SE skills quite easily, but i doubt that someone can go through discrete math, abstract algebra or math of advanced optimization on their own. Therefore mastering for example deep learning methods or algorithms for quantum computers might be extremely challenging without college.
That's a false premise. It is very easy to find quality resources for learning abstract math online, including University lectures. It's much harder to get hired for a job that directly requires these skills without a degree though.
Does it make sense for me to get a masters in software engineering in California if I am changing career from a non-CS degree without coding work experience but as a self taught programmer? Born in Africa and want to get out of here and live in the US. I really enjoy coding and computers.
I am from Peru but Im not going to college here. We dont have professors like u in my country. They are only good at teaching math theory. Most students dont speak english to find out through internet what they r missing with the bad curriculum they are offered in their colleges here.
i am in my 3rd year in university of strasbourg in france studying informatic, i´d like to focus on AI.. searching for the best master for it, but i see a lot of AI Management... i don´t think i want that, what i want is dev awesome AI. Do you have any advise for me ? I want to have an extremely profitable job, so i need Excellent skills, can you advise me master ? ^^
University is free in the US for US citizens, if you are a poor student, you receive financial aid. If you are not a poor student, then you can afford to pay. Why are some people complaining that higher education is expensive? If you get financial aid, then that should be enough to cover the expenses. And if you don't, then your family probably makes enough to pay for your education, am I right? Do you need a CS degree to get a good software engineering job? Not necessarily, but it does seem to help. You need serious technical skills and knowledge to be an engineer, to do your job, to pass the interview exam. However, if you don't have a degree, you might not get the best opportunities. Having the paper might open multiple doors that would be locked to you otherwise. So ideally you would need both sides, the paper, and knowledge. Without self-education you can't go very far.
It sounds like someone's been telling you fairy tales about the US. If only they were true. Loans aren't "free" and a lot of families make too much to qualify for need-based financial aid but not enough for $25-30k/student to feel like "free".
Where did you go to school? I'm interested to see where viewers are coming from?
University of Utah - BSEE, also have a Professional Engineering License
University of Mumbai
University of Hawaii-Manoa
Stony Brook University in New York
Washington state university
My degree is in Applied Math. I work as an Embedded Software Engineer, a job which I got by having a good portfolio of projects. I've had CS majors AND Electrical/Computer Engineering majors on Reddit tell me that I shouldn't pursue this dream job of mine and should just settle for Data Science. I've had people on Reddit tell me "I don't know anyone who works in embedded systems that doesn't have a relevant degree" or "I wouldn't hire you". These people are idiots. Don't give up on your dreams and FIND A WAY to make it happen.
Amen.
May I ask, what are some short tips you would give to someone wanting to do Embedded systems?
@@KaiAbyss So the short answer is there are no shortcuts to Embedded Systems. And, the answer depends on whether you want to just build embedded systems vs. getting a job in this field. First of all, getting a job in embedded systems is very difficult if you don't have a degree in Computer engineering > Electrical Engineering > Computer science. And I structured the degree precedence this way because this is what companies generally prefer (they love CE majors, especially those that have embedded systems backgrounds). Regardless of which of these 3 degrees you get, take classes related to embedded systems if you can and build stuff! If you don't get one of these degrees, I honestly don't know how feasible it is for you to get hired without somehow landing an internship or job in embedded. I got very lucky with my opportunities because I did projects which helped me get an embedded systems internship (where the hiring manager was willing to hire me for the role) and once I had that internship and this portfolio on my resume, I still got A LOT of rejections but I also had a handful of interviews which I got because people were interested in the fact that I had an internship under my belt. I did well on most of the interviews and someone picked me up (who was willing to hire me). Let me stress this again that it was an uphill battle for me. I went on subreddits and asked for advice and I got criticism/hate by others for my unconventional path. If you want an easier route, just get the relevant degree and do projects.
You can google online to see what skills/domains of knowledge embedded systems require but if you're starting with 0 knowledge and 0 experience, my best advice for you is to start with Arduino. Its going to hold your hand throughout the process but its a lot easier to learn embedded systems when you have that hand holding. Once you get proficiency with Arduino and whatever microcontroller your board utilizes, move onto more serious boards like STM, NXP, TI and learn those. Learn how to read documentation. Learn how to search for information on Google. Ask for help from more experienced embedded systems people when you're stuck. These are the general tips I can give you.
If you just want to build embedded systems, you don't need to know all this stuff. Just pick Arduino or any board with good documentation and/or a large community of makers/DIY-ers and start building stuff. The best teacher is experience. You might not understand the theory just from reading about it but once you go through the process of building stuff and doing trial and error, you learn.
ClassyJohn, congrats and keep it going. I too also got my dream job as an Embedded S/W Engineer working with medical robotics right after I finished my degree in IT. Like you I got the job because I have a good portfolio of projects. If you have the potential, nothing can stop you! After working for a couple of years I'm now in the process of completing my master's CS.
I studied Electronics my own. Being enrolled in CS, whole system pushes us to only coding. Rest basic subjects of computer are just taught as formality, that what I hates. I like to see behind what is and how is like stuffs. And I am able to understand processor architecture and its significance.
Lol love that you're calling out hygiene as a basic skill
I've met a lot of students and programmers. :)
@@JacobSorber just pitching a video idea, i found your page because I was looking for a video (for a student I mentor) about what are embedded systems (examples w/visuals) and what makes programming for them different than regular programming.
I had a non-CS undergrad degree (though a minor in CS) and after working in the computer industry for a year or so I decided that I really wanted to be a full time software developer and I did not have nearly enough programming experience to do that (I had 2 semesters of C++, assembly, and some various non-programming computer courses). I decided the best approach was to get a masters in CS, which basically enabled me to devote my time to CS exclusively. For my thesis research I worked with the Linux kernel which gave me all the programming experience I could ever want :)
So, for those with an existing degree, consider getting a masters. You may have a pre-req or two to take (I spent my first semester doing that) but it was well worth it.
A degree in CS is needed because:
- you'll learn lot of stuffs deeply
- you'll be "forced to learn" instead of procrastinating
- you'll acquire knowledge outside the bare programming (e.g.: math and general engineering)
- you'll acquire the "forma mentis" to learn new complicated stuffs quickly
Source: I dropped out of CS and subsequently found job in a different industry. Years later I'm not able to be a professional programmer anymore ¯\_(ツ)_/¯
My brain just can't handle it 😱
So, unless you have a really active mind, a strong passion and a positive financial situation, getting a degree is the easiest way to join the army of ones and zeroe's plumbers 👍
Graduated in CS at University of Karlsruhe, Germany. Nowadays it is called KIT, Karlsruhe Institute of Technology. Basically, in Germany the education is nearly free. But you need money for housing, food and transportation of course.
Working in automotive industry for 15 years now as a "software developer".
This job took a lot of life energy from me, because it is not really about programming. It's only about tight schedules, outsourcing, missing information from chip suppliers, integrating crappy software modules from third parties, crappy tools, keeping an eye on Indian programmers, agile methods bullshit, pushing tickets from team to team, always starting same things from new because new SoC is a couple of cents cheaper than the other one.
Now that I don't care about the job any more (f##k you money is so relaxing), I went back to hobby learning/programming and found your channel. It is so refreshing to actually think about programming problems and concepts and learning stuff.
I never got my CS degree... and that was back in the 1980s... I still have to find myself justifying that years and years of experience make up for it now.... So, you may or may not need a CS degree to do a job.... but it certainly makes things SO much easier at a job interview.
Major EE, Minor CS late 70s / early 80s. Learned Algol and Fortran on a DEC System 10 mainframe and IBM 360 with first punch cards then moved up with the big dogs on 300 baud green text ASCII terminals. WOW! Hobby built Z80 S100 computers. Self taught BASIC on an Apple 2. Self taught C in the mid 1980s on X86 including of course PCs but also STD and Multibuss systems. Heavy with embedded programming, most specifically with electrical interfacing and signal processing, the EE background helped that. I will say that even though my C is self taught, I still relied on the basics taught in CS even in those early days. And although Fortran and Algol are now ancient, once you learn one language, you can learn any other. After all, it all complies down to machine code in the end so I find that various languages are more similar than they are different. I mean I look at Python today and can easily see it's built on top of good old C.
This is the most unbiased video I have seen on this debate
First view. First Like. First Comment😁.
Studying Electrical and Electronic Engineering at Ashesi University in Ghana. But I still have a love for CS. I'm trying to build a curriculum for myself on the side for learning CS.
TH-cam is #1 university in the world! You can learn anything!
I'm currently doing my CS masters at George Mason University and I'm also currently working as a machine learning engineer.
To add to professor Sorber's video, I personally think the most valuable things you can get with a university degree are the connections and the research opportunities; both of which can give you an extremely large advantage over others who are applying for the same job. There's a big difference between being qualified on paper, vs staying up until 5:00 AM in the lab trying to get your senior design project to work, driving home, sleeping for an hour, and then coming back to give a presentation that's worth half of your final grade and thereby also determines if you can graduate. These experiences can help you develop a level of trust with your peers and your professors (who are also leading experts in their field) that is very difficult to attain outside of university because it requires that pressure cooker environment where you must work together to get things done or fail; and to honest, universities are very good at creating that stressful pressure cooker environment that's necessary to creating these strong bonds that last a lifetime. Trust me when I say this, if you put in the work, participate in undergraduate research, and create strong bonds with your professors and your peers, you won't regret it.
Graduated from Weber State University in CS. I love your videos! Thanks for making them!!!
I'm mathematics Student from Theran, Iran that fall in love with CS :)
My cs college edu was outdated af w terrible old teachers who didnt know anything. Wasted time n money. Learned everything on the job and on an additional 3 month private course. I wouldnt go uni if i were young cos your time and money can be spent much more effectively. 3 month intensive java course was impressive though
This is a dilemma that crosses my mind quite often. I'm currently enrolled in a CS degree, and the question often pops up of if my time effort and money is worth it.
I've come to the conclusion that while I don't need a degree to get started on my career, a career alone isn't what I value most of all.
My goals are not to make money, but to understand as much as I can about computer science, and use my accumulated Knowledge and Skills to improve the world and the industry. Eventually.
I dropped out of a Ph.D. program in an unrelated field. For the past couple of years, I taught myself C, C++, some Python and JavaScript. Consequently, I can attest that learning on your own is definitely possible. What I've come to realise, however, that a programming language on its own is not enough. One needs to know the fundamental principles behind the practice of programming, which can be acquired in great part through other related disciplines such as discrete mathematics, data structures, algorithms, object-oriented programming, design patterns, hardware system, etc. Of course, the scope and depth of your understanding of these subject matters depends on your aspiration.
I agree with you Jacob that self-learning has its benefits, but it is not easy, and definitely not for everyone. Amongst other things, a university setting provides you with a strong curriculum that could guide you through your learning process. Equally important, it gives you the opportunity to engage with and learn from peers and mentors.
Edit: Made the comment more general, which is more appropriate. cheers
Hey dude! I have a couple of my analysis of algorithms assignments around if you'd like to take a look at how that works. Its an extremely valuable skill in the field.
@@pianochannel100 That would be great, Ben. Thanks!
Nice music by the way! very reminiscent of Chopin.
I have taken academic break, to study Computers to the best level and build string foundation for computing industry, ready for all technologies now.
Just make sure you go to a *quality* University. I did things kind of backwards, being in industry before going to University and to be honest they were astonishing bad, I really can't criticise them enough. So many students leaving with frankly massive holes in their understanding.
Im not going to school for CS, i live it
Here's to Rod!
Learned on my own, do pcb design in Eagle cad and c code on pic microcontrollers. Just n bit of C on Linux. From Lichtenburg, South Africa, about 180km from Gaborone. Thanks for the great videos! Just used the one on "select()"
if you're interested in compiled stuff, you need a degree.
I'm self taught in C and C++ and evidently unemployable, despite applying for years.
In related news, if anyone knows of a C or C++ place that'll hire people without degrees, hit me up.
Data structures and algorithms. Prof. Sober just gave you a clue. I love C so much I slept one sheet for over 3 years. Just had to know how to apply certain algorithms when it is most needed. At the moment, I have Prof. Sober and others I can't mention here which means I keep my respect for Prof. Sober intact in my cells. At the moment I am doing a city and guilds course in ref and aircon so I can get the job that will pay me the type of money I will need to learn C and hopefully Javascript. I like that I am stuck cause it keeps me hungry. I know I will something good with the c programming skills and will never give in to any disruption. Stay motivated, fam.
It's only one data point, but the guy I mentioned in the video (who had a music degree), was definitely doing some very sophisticated "compiled stuff" - like rewriting compiled binaries back before there were decent tools for it.
Not necessarily. If you know algorithms and data manipulation, then you'll be invaluable. Programming is essentially data manipulation in the most efficient, resourceful way.
I have done 0 formal training in computers.
Go Tigers!
Professional Software Engineer - program embedded systems, middleware, Android app
I see the point in what you are saying and i agree with that, but i think this the case for software engineering. CS is a huge field and i can imagine one picking up SE skills quite easily, but i doubt that someone can go through discrete math, abstract algebra or math of advanced optimization on their own. Therefore mastering for example deep learning methods or algorithms for quantum computers might be extremely challenging without college.
Good point. Some topics may be easier to pick up on your own than others.
That's a false premise. It is very easy to find quality resources for learning abstract math online, including University lectures. It's much harder to get hired for a job that directly requires these skills without a degree though.
Does it make sense for me to get a masters in software engineering in California if I am changing career from a non-CS degree without coding work experience but as a self taught programmer? Born in Africa and want to get out of here and live in the US. I really enjoy coding and computers.
CE&CS Major at University of Arkansas USA
can you please explain the implementation of EPOLL or Kqueue in linux
how many years did your degree took ?
Iran
Almost CS graduated
The "BUT" caught me
Ukraine, Kyiv Polytechnical Institute. Automation of industrial installations, not CS in fact)
I am from Peru but Im not going to college here. We dont have professors like u in my country. They are only good at teaching math theory. Most students dont speak english to find out through internet what they r missing with the bad curriculum they are offered in their colleges here.
I am a CS student in the most popular university in my country, but I'm quitting college to learn on my own, is it a stupid decision?
i am in my 3rd year in university of strasbourg in france studying informatic, i´d like to focus on AI.. searching for the best master for it, but i see a lot of AI Management... i don´t think i want that, what i want is dev awesome AI. Do you have any advise for me ? I want to have an extremely profitable job, so i need Excellent skills, can you advise me master ? ^^
Csulb cs
It would be interesting to follow this up with a discussion of certificates and what things outside of a degree are valuable to a career
Indeed.
University is free in the US for US citizens, if you are a poor student, you receive financial aid. If you are not a poor student, then you can afford to pay. Why are some people complaining that higher education is expensive? If you get financial aid, then that should be enough to cover the expenses. And if you don't, then your family probably makes enough to pay for your education, am I right?
Do you need a CS degree to get a good software engineering job? Not necessarily, but it does seem to help. You need serious technical skills and knowledge to be an engineer, to do your job, to pass the interview exam. However, if you don't have a degree, you might not get the best opportunities. Having the paper might open multiple doors that would be locked to you otherwise. So ideally you would need both sides, the paper, and knowledge. Without self-education you can't go very far.
@Coffee Mike It depends on individual circumstances.
It sounds like someone's been telling you fairy tales about the US. If only they were true. Loans aren't "free" and a lot of families make too much to qualify for need-based financial aid but not enough for $25-30k/student to feel like "free".
this is such an ignorant point of view...