Comments

You Don’t Need a College Degree to be a Software Developer!

Let me tell you this straight: don’t waste your time and money for a college/university degree in computer science (or a related major) if your goal is to become a “software developer”.

Before I tell you my reasons, I strongly recommend you to watch these two videos and see why the most successful people in the world believe college is useless and in fact a scam.

 

I spent eight years of my life at two different universities, one in Iran, where I got my Bachelor of Science in Software Engineering, and the other in Australia, where I got my Master of Science in Network Systems.

So, as someone who is academically educated, I believe that universities are a waste of time/money if you want to work as a software engineer. You would achieve your goal with a fraction of the time and money if you take online coding courses.

You pay for what you don’t need

In my Software Engineering program, I had to take a lot of subjects that had zero connection with software engineering: calculus, 3D math, physics, religious studies, Persian literature, population and family planning (yes, funny, right?), history of Islam etc. I had absolutely zero interest in these subjects, yet I had to take them and pay for them.

Out of 40-50 subjects, only a handful was useful and changed my thinking, including:

  • Programming fundamentals with Pascal
  • Advanced programming with C
  • Assembly language
  • Data structures and algorithms

If you take online courses, “you” can choose the topics “you” are interested in.  You’re not forced to pay for what you don’t need.

You waste your money on books

As part of taking those unnecessary subjects, I had to pay for thick, heavy books full of nonsense. They filled my space and I had to carry them every time I moved. If we were not forced to buy those books, fewer trees had to be cut. We could save our planet and keep our air clean.

In contrast, with online courses, we don’t destroy our planet. We don’t accumulate stuff that we don’t need.

You put yourself in debt

Unless you’re lucky and can pay for your university education, you’ll have to get a loan of $50k to $100k. That means you’ll be in debt for several years and pay interest on top of the money you paid for the subjects that didn’t matter. All that causes you unnecessary stress. You won’t be able to buy the car or house you want because you’re still in debt.

Online courses cost a fraction of what you spend on a university program. These days you can buy individual courses or subscriptions that cost you only $10 – $30 a month.

If you pay $30/month, within a year, you’ll have all the necessary skills to get a job. That will cost you only $360. Compare that with a university program that costs you $50,000, takes four years to complete and doesn’t teach you the right skills.

You waste your time with outdated subjects

University programs are often 20 years behind what is happening in the software industry these days. Unless you learn things on your own, once you graduate you’ll have difficulty finding a job because you won’t learn the necessary skills that employers are looking for.

Online courses are based on what is happening in the industry right now, not 30 years ago. They don’t have all that fossil theory that you don’t need.

You waste a lot of time in transportation

Unless you leave close to your university, you’ll end up wasting a lot of time in transportation or finding parking. Not only do you waste your time, you also waste other people’s time by creating unnecessary traffic. You also pollute the air we breathe.

With online courses, you can watch them anytime, anywhere.

You don’t get quality teaching

I don’t want to generalize, but quite often, people teaching at the university are either Ph.D. students who do this on a casual basis to make pocket money or full-time academic people who have been on campus forever. Neither of this group of people has enough practical experience in the industry.

Want to hear something funny? Have you heard of ASCII? If not, it stands for American Standard Code for Information Interchange. It’s basically a table that maps characters to numbers that can be stored in the computer’s memory. I had a lecturer who used to pronounce this as ASCI TWO. He thought II was the number two!

I had another lecturer who used to call himself Dr. Rahman. He didn’t even have a Ph.D. He was just a Ph.D student. And I knew that he paid someone to do his project for his Master’s degree. Imagine someone like that being your lecturer. You spend all that money to learn from people like that?

Of course, I’m not saying every university lecturer is like that. I’m sure there are many skilled lecturers out there, but they are often the minority.

With online courses, “you” choose the instructors that you like. The good news is that for anything you want to learn, there are tons of courses out there. You don’t like one instructor? You think he talks too much? Or is boring? Or is unqualified and lacks industry experience? Fine. Pick another online course. Most of these courses have previews so you can watch the first 10-60 minutes to get a feeling for that instructor.

When is university education good and necessary?

University education is not always bad. It depends on what you want to do. If your goal is to become a researcher or a university lecturer, then, indeed you need a degree and the higher your degree the better. But being a computer science researcher has absolutely nothing to do with being a software developer.

Researchers focus on one small topic and spend several months or years, collecting and analyzing data to come up with conclusions. They are not software developers. They don’t know how to build web or mobile apps or do it properly. Even if they do, they’ve learned it as a hobby. It’s not part of their day-to-day job.

The question is: what do you want to be? A software developer or a researcher?

What about getting a software development job?

Fortunately, a lot of companies have realized that having a university degree does not make one a programmer, just like having a driver’s license doesn’t make one a good and safe driver. It’s just a piece of paper and it means nothing.

Self-taught developers are way more common than you think. I’ve also seen a lot of developers who do have a university degree but in a different field than computer science or software engineering.

Your degree and scores do not matter. Read my post You can’t be a developer to learn why.

None of the companies that I’ve worked at ever asked me about my university degrees. I don’t think I was lucky. I think this has been realized and accepted at most companies out there. And if where you want to work, they value a piece of paper more than your brain, you don’t want to work there. Trust me.

Having said that, you and I need to educate those people and companies. Please share this post to enlighten this minority group of people who still think having a degree in software engineering is essential to hire someone.

What’s your story? Drop in the comment box below.

Hi! My name is Mosh Hamedani. I’m a software engineer with two decades of experience and I’ve taught over three million people how to code or how to become professional software engineers through my YouTube channel and online courses. It’s my mission to make software engineering accessible to everyone.

64 responses to “You Don’t Need a College Degree to be a Software Developer!”

  1. Thank you Mosh your classes have been more valuable to me compared to most of my university classes.

    The reason I am still completing college is to avoid degree based pay caps and make life long connections.

  2. Del W. says:

    I couldn’t agree more Mosh, so much time wasted on things you will never use in your lives. Who cares about the Louisiana Purchase, its not going change the future or help a person in their career.

  3. James Bishop says:

    Spot on, Mosh. I have purchased several of your courses on Udemy. It is obvious you know what you’re talking about. I’ve learned a lot from your courses and I often refer back to them. When I am stuck on something and near going crazy, I say to myself….WWMD: WhatWouldMoshDo….Thank you and have a good day man.

    James Bishop

  4. Nick says:

    I like your stuff Mosh, but this is a pretty biased and quite frankly, short-sighted opinion. The real truth is – there are many paths to becoming a software developer. And a university is a perfectly fine choice to get you there. The science topics you stressed as unimportant are actually very important to computer science and software – it all depends on where your interests are. I like to tell people that the worst developer I ever met was self-taught (no formal schooling). And the best developer I ever met was also self-taught.

    The point is – everyone has a different path. I have met too many developers who were self-taught and produced horrible code. It’s part of the reason why the HTML, CSS and JS market is saturated with front-end devs. I have also met college-graduated devs who produced poor code. You need to apply yourself no matter what and choose the best way of learning for you. A degree usually isn’t necessary now-a-days, but keep-in-mind that most people will not come out of a 6-month program with junior developer skills. There’s a reason a Computer Science program takes 2-3 years. It takes a long time to become a good developer! So if you want to learn through online courses, don’t stop after the first one. Keep applying yourself – you’ll be doing it for the rest of your life, like any good developer.

    If you take nothing else from your college education, at least let it open your mind to new ways of learning. It should be an enriching experience. That will probably change from school-to-school. Make sure you pick a school that is known for its Computer Science program, if that’s something you’re interested in. Otherwise you will probably get an instructor who is not passionate and not interested in being there, like Mosh said.

    • wot says:

      Thank you this comment.

    • seanjon says:

      a degree doesnt make you a developer. I took computer science and learn tech that was 20+ years old from old men. After, I still had no idea how to work with relevant tech these days like creating a mobile app or working with React. I probably came away from the CS degree with knowledge of what a class and object is, etc. But leaving school ready to be a developer, not at all. Waste of time and money.

  5. Anthony says:

    I disagree. Being a great software developer iis about more than just writing code. It usually involves solving real world problems, which involve knowing other subjects like maths, physics, finance, geology etc, so that is where it is an advantage having a university education.

  6. Steve Gould says:

    Very true.I never went to college but I learned how to program at high-school. Years ago a company took me on essentially as a labourer, opening computer boxes, setting the PCs up and packing them away again for shipping. This was in London in the late 1990’s and they were initially paying me eight pounds an hour! When they found out I could program they had me set up their first website and I did various internal things like auto-generating their agent’s ‘self-billed invoices’ with SAGE. Within two years I was on 35k p/a and was the second highest paid employee in the company. Now, since I’m semi-retired I’ve let mobile development pass me by and igrnored some of the popular frameworks like Angular and React, so, (in anticipation of Brexit making my pension worthless next year), I’ve been using Moshe’s courses to help me catch up. I find his courses surpass all others because he delivers the stuff you need efficiently and economically, but also skips stuff you don’t need.

  7. Lyle says:

    I agree, but more than half the time you won’t even make it in the pile of possible candidates for hire without a bachelor’s degree. Now with on-line filtering, one check box checked can remove you from a list of possible hires ☹

  8. kamaraadki says:

    What about validation? Validation via a degree is a investment. Some recruiters don’t understand that a PHP certificate is more valueble then a single university module about programming. Just programming a CRUD even with Bootstrap was oke.

    The key is to get hired.
    A degree is validation. So they know. I to work smarter. Not easy for me. I express myself better writing, code, but phone interviews is not working for me. Lacking the time to think.

    Working at the moment on a sprint your ASP.net app.
    one desktop C# and SQL app and 14 desktop C# apps to ditch the coding to obtain a traineeship.

    Recruiter i’m able to build 10 C# desktop apps. Two fullstack web- and desktop apps ASP .net webapp.

    repo’s with core skills about SQL; dml, ddl, ,triggers, procedures,
    To be short. I’ts the core off course 1, 2, 3 combined why do i waste my time for testing and not for obtaining seat and start in 2019 with a improved coding skills to make it work? ?

  9. kamaraadki says:

    A post about. How to get hired. With good oral and written skills when there is time to think about the reaction.

  10. John says:

    This is all fine and good, but i can tell you the first filter applied to every applicant where I work usually is if you have a degree. No degree, you go in the pile they look at after they look through every other persons applicant who does have a Bachelors/Masters. I don’t agree with it, but when you get hundreds of applicants for 1 job you have to have some way to filter who is more likely to have the skillset your looking for so that you aren’t spending a month reading resumes when you need someone hired last week.

    • I agree with the current state John. This is what we need to influence. What we essentially need a reliable evaluation service, that evaluates people on the skills and personality.

      If such a reliable service can be built separately from universities, students will get flexility

  11. Abraham says:

    Hey Mosh,
    I totally agree. I learned software development through reading and taking online courses (including most of your courses). After a year of reading and learning I got a well paying job with a nice salary. I recommended this path to a couple of friends and they all landed great jobs.

  12. Karen says:

    Mosh, I disagree about a lot of this. I feel that a college degree is important, though it’s possible to self teach, there is some background that you get with a computer science curriculum that is important to being a software engineer. I feel this background has helped me to be successful as a software engineer. It has given me the ability to be adaptive because I have a stronger background. Also, a computer science degree doesn’t necessarily have to cost that much. My first degree was an AS in Computer Science at a community college. The instructors were incredible and most of them were still in the field so I had up to date instruction. I then went to an online school for a BS and those instructors were still in the field also, and it was also a state college and not that expensive.

    Even though I have a degree, I do agree that you have to keep up with languages, and that’s what I’ve used your courses and others to update my skills. But I do feel the background I have allows me to more quickly learn new skills .

    Also, I have found when looking for a software engineering job, the majority of them require at least a bachelor’s degree. So I really don’t feel like my degree was a waste of time. While with my associates I was able to get an IT job with some programming, it was only after I got my BS that I got a job as a full time software developer.

    Thanks,

    Karen

  13. Greg Arney says:

    My university experience was not so negative. I got my Bachelor’s degree in Computer Science from a state university in the US about 20 years ago. Of course, college was much less expensive back then. I was able to work my way through college as a computer and networking technician, so I had no debt when I finished my degree. (It took me 6 years to get my 4-year degree that way, but at least I had no debt.) Taking classes at a community college for the first two years helped quite a bit. I found that the quality of instruction was at least as good, and the cost was about 30% of what I would have paid at a university. I think if I added up the tuition and books, my whole college degree probably cost me about $15,000.

    I’ll grant that several of the courses I was required to take had no direct bearing on Computer Science, but I feel like I got something useful out of most of them. For example, to satisfy an English requirement, I took a “Survey of World Literature” class which turned out to be fascinating. It was one of my favorite classes. The “Intro to Philosophy” class I took got me thinking about many interesting concepts I had never considered. Even the required English 101 and 102 classes, which I hated at the time, have proven useful. Without them my written communication skills would not be very good, and that would impact my job performance. The “Technical Writing” course has proven invaluable when I have needed to write documentation. Physics was fascinating, though not useful for writing software. Calculus has not helped me at all since I finished college, but I’m still glad I was exposed to those ideas. I suppose my point is that all those unrelated classes had benefits outside my chosen career path. I think the experience was worthwhile.

    Now, though, with the cost of college being so high, I’m not sure I would be willing to spend the money on a college degree. A broad education is nice to have, but maybe it isn’t worth the price, especially since I would still have to take online courses to get the specific skills that employers are looking for.

    Software Development is a rapidly changing field. It requires a commitment to lifelong learning. College is just a starting point. If you can get your degree without going into debt, great! It’s probably worth doing. Just don’t assume that college is going to give you everything you need to be a Software Developer for the rest of your life.

    If you can’t get your degree without going into debt, then online courses can give you the tools you need for a Software Developer job. I would encourage you to expand your learning beyond just the online courses that are necessary for your job, though.

    Finding an online instructor who not only knows the subject but understands how to teach it can be a difficult process. Teaching is harder than it looks. Some instructors have a natural ability to teach concepts in the right order so that they are easy to understand. They can create examples that are complex enough to fully illustrate the concept without causing confusion by straying into other concepts. It might sound like an easy thing to do, but it isn’t. I’ve tried to teach things to other people, and I have to admit I’m not good at it. Sequencing the concepts is very difficult for me.

    I’ve taken online courses from quite a few instructors, and most of them have trouble with these things. Mosh is an exception. He doesn’t just know the material, he really knows how to teach. That’s a rare talent. His classes have helped me immensely, and I expect I’ll take many more of his classes in the future.

    Thanks, Mosh!

  14. Victor says:

    I agree you do not need a college degree to be a good software developer, however, I think it is not just all about how to code.

    I mean, you need to acquire some other skills, like being able to communicate in an effective way for being able to negotiate a compensation or for being able to talk about a technical matter to the business people. Even we should be able to communicate effectively with our teammates in order to make great software.

    I have heard the software engineering is a social field and I agree that. And we know, the social skills are acquired easier if we interact with people face to face, therefore, the university could be the place to get all those other skills required to be a successful software developer.

    On the other hand, I know you don’t like too much the math field. However, I think we can be better software developers if we know math. For example, nowadays functional programming is becoming more and more relevant in the software industry. And you know the roots of functional programming are math, category theory.

    In order to get a job in one of the bigger software companies in the world as a software engineer, it is required to solve programming tests, where the companies evaluate mainly the efficient use of the computer resources, and this is done through the proper selection of the data structures and the application of the proper algorithms. My hypothesis is that a developer with math skills could do it better/faster than a developer with a lack of skill in maths. Well, a developer with a great experience and practice in all those puzzles can also do it great.

    ——-
    Mosh, I’m taking your Angular course, it is very nice.
    Thanks for your work.

  15. Aaron Schlosser says:

    I have not read all the other comments, but I would have to disagree with this on some levels. Yes, you can have a great career as a software developer without a formal degree. However, many companies/corporations, will not even consider an applicant without one. I.e. having a degree will open more doors, but isn’t a necessity. I don’t think it’s wise to sway anyone from a degree program if that’s the path they choose, and it’s never a bad investment, especially in technology. I personally have gone the 4 year degree route, and I have a career I love, and make great money in, but it wouldn’t have been a possibility without my education.

  16. jef brunet says:

    I agree with your post , tired of loose my time , health and money . online formation is a best way to reach our objectives . we learn just we need and thats a good choice . and if one day you need to increase yours skills , just learn online .
    Rock’n’Code

  17. M C says:

    Interesting idea. I’m from the UK and unfortunately the reality is that most jobs are asking for a degree even though it can be done by a 16 year old.

    The reality here is that a junior developer has greatly reduced prospects without some kind of related degree. Sure, after a decade of work experience it’s fine, but then enter the paradoxical cycle; how does one get a decade of work experience if no one hires them anyway.

  18. Jaime Aguilar says:

    Great posting Mosh. I agree completely with you. Software development and everything related to computer technology is way far for what it was 20 years ago. Back in those years were totally different. There were not that many options to study computer science or anything related to this field. There were training schools, some courses given by community or private schools teaching some basic languages and techniques but not all options as we see now.

    Unfortunately, there are still companies outside US that requires to have a colleague degree minimum as part of the requirements to get a job. They may hire you without a degree or probably you are still studying but is sad to find out they don’t pay what you know. The salary is based on your degree. Of course not all companies are like this, there are exceptions but is a minority.

    I like your courses and the concept of “learn” what you like and what is required outside in the market. New Era that everyone needs to adapt.

  19. Bruno Bertomeu says:

    My thoughts exactly. I dropped out of a master’s degree in computer sciences because it was too theoretical and academic, I didn’t like it anymore. Then I lost about 10 years doing something else. If only I could go back in time and send this article to myself…

  20. Bruce Lowry says:

    I totally agree with your premise that a college or university degree can be a waste of time and money for many professions, especially software development. Most colleges simply cannot adjust their programs to provide curriculums that provide real value and learning experience that benefit both students and future employers. Typical college courses are 3 semester hours, 3 hours/week for 15 weeks or about 45 classroom hours. I do not think learning a computer language like C# is best learned over a 4-month drip.

    To be honest, I am 60 years old, have a business degree in Data Processing and Analysis from the University of Texas – a brand new degree plan first offered in 1981. In 1981, we did not have the Internet, Udemy, Google or iPhone, so your best options to learn programming were via a college degree or on-the-job training. It was hard to get an entry level position in the 1980’s in software development because most of the employers (with computers) were huge – IBM, NASA, Texaco, Government, Insurance, etc. Back then many large companies had a HR policy requiring a 4yr college degree. But even if you did get a software degree of some type, what you actually learned in college was not even equivalent to someone with 6 months of on-job-training.

    So, most of my programming in college consisted of punching card decks and submitting a batch program to a mainframe computer. I did have one advanced COBOL course that utilized a Data-Point mini-computer – but access was limited and terribly slow. Back then learning was stifled due to resources and the system.

    In high school I was fascinated with computers, but did not have access.

    In the 1977 I was inspired by creation of the commodore PET and the Radio Shack TRS80 computers. I even wrote a college paper for one of my computer classes predicting that someday personal computers would begin to replace Main Frames – I was ridiculed by my classmates and received a B- on my paper.

    Remember that the IBM PC did not exist until 1981, and it still took a few more years before the Intel PC revolution took off with companies like Compaq, Columbia (who?) and Dell started driving down the entry level price of PC’s. I bought my first PC in 1983 with 6mhz processor with two floppy drives – no hard disk. I could not afford the luxury of a $1500 option for a 10MB hard drive after spending $3500 on the 2 floppy PC.

    Today students have $200 laptops, easily accessible Internet Access, and tons of free or cheap training courses and overwhelming resources.

    To me, the most important dividends of a college education may come from living away from mom & dad, learning to put up with bullshit professors, living in a less sheltered and more diverse environment.

    My suggestion is to learn a highly sought-after language like c#, maybe write a few simple programs for free or free-lance paid jobs, then find your first job and start building your skill sets. Some technical training schools might be better option than college, but be careful about who you choose.

    So thanks Mosh for the great content you provide in your computer training courses.

  21. driftin says:

    What do you think of doing a coding bootcamp versus taking courses online? I’m taking the latter route right now, but I wonder if a bootcamp would add extra value?

    • Greg Arney says:

      Driftin, I think boot camps can be very helpful, even though they’re expensive. I went through one for .NET Framework and C# about 15 years ago. The best thing about it was that it didn’t allow me to be distracted. It was a pure learning environment and it gave me the basics in a week. If I hadn’t gone to that boot camp, I probably would never have had the self-discipline to make myself sit down and learn a new language.

  22. I cant agree more to this. I have been trying to do that same with young students. Coaching them free of cost, and those who realized are doing wonders

    Happy to see someone who shares my perspective

  23. Chris says:

    I am on the fence about this. I don’t agree nor disagree. In the UK, having a degree is validation into getting a job. A lot of companies won’t even give you the time of day if you don’t have a degree in a relevant subject that is at least a grade 2:1 or above, but at the same time, I know one or two devs who are doing well for themselves and don’t have a degree – so they have obviously managed to fit in somewhere that doesn’t require this validation. I learned a lot at university, I won’t deny that, but like you, I also wasted a lot of time on dated subjects with bad lecturers. It’s a very subjective experience. University is what you make of it, as is spending time doing courses online at home. I graduated with a 1st and won an award too. I was able to get hired within 4 weeks of graduating, so university was useful for me, personally. They both have their pros and cons, one is just £50,000 more than expensive than the other xD

  24. Hi Mosh
    I agree. I’ve been in software development for more than 20 years. (my university degree is on tourism and hotel management.)
    I’m a good self learner and I’ve learned everything from books, e-lessons, meetups or on the job. In today’s world everything changes in almost every 6 months. developers have to be very dynamic on adding new technologies onto their stack. Spending 4 years or more is really a waste of time.

    You have talent on teaching. Even I know the subject I watch your lessons in order to be sure that I don’t miss anything.

    • Mosh says:

      You’re absolutely right about things changing rapidly in the software industry, and that’s why universities are always decades behind! There is this common misconception that they teach you “the fundamentals” that help you learn new things quickly. It’s complete BS. All those fundamentals they teach are theories that even lecturers don’t understand. Students just memorize a bunch of formulas and principles to pass the tests without really understanding them. Those “fundamentals” were applicable for someone back in the 70s who wanted to write a new DBMS or operating system. These days, things are very different. We are at a higher level of abstraction. You don’t need to understand programming with 0 and 1 to build a web or mobile app. You need to understand front-end and back-end development. You need to know the new programming languages, paradigms, security, performance and scalability best practices, different kind of databases, etc. None of these are taught properly at universities. They just fill people’s brain with a bunch of outdated stuff advertised as “fundamentals that teach you how to think”. It’s just a system to get money from people without giving them anything valuable. As I said in my post, you pay for what you don’t need and they brainwash you to make you feel good about it.

  25. I agree with a lot of what you are saying that you learn outdated things from teacher who did not make it out in the real world. But I do not agree on your statement: “…a lot of subjects that had zero connection with software engineering: calculus, 3D math, physics…” That is not true. How can you understand and use RSA encryption without math? How can you make a 3D Graphics Engine without math and physics? I do like Udemy, pluralsight etc.

    • Mosh says:

      Not every developer works at a company that makes 3D graphics engines! No need to learn that. In fact, at least 90% of people who study all that math in computer science program, never use that. The time and money they spend studying all that math could be spent learning about things that actually do matter. They can learn about different types of databases (NoSQL and relational), message queues, distributed caches, leading front-end frameworks, functional and object-oriented programming, and the list goes on and on. These are the proper fundamental things they need to learn that helps them quickly learn new languages and frameworks. All that calculus and 3D math have no impact. It’s just a waste of time!

  26. Miroslav Hristov says:

    Hi Mosh,

    Totally agree and very true especially for Bulgaria!

    Thanks,
    Miro Hristov

  27. Dariusz says:

    Hi Mosh,

    I see one issue with this blog post, you are generalizing your experience to all of the world.
    I think that in fact to become prominent software developer you need both: a university degree and keeping up
    to date with latest technologies (thus constantly learning).

    For me a university was not waste of time:
    – there are concepts in CS that are from 60 and 70,80 etc. – those are still up to date and in
    fact people in industry are still trying to solve those problems or invent already known solution,
    – it it shows employers you’re able to commit to a long-term goal and succeed,
    – a degree gives you a running start, by the time you graduate, you’ve (hopefully) written a fair
    amount of code in various languages and environments to solve many types of problems,
    – you can work in the industry and study at the same time.

    Second in most of Europe countries you don’t have to pay for going to university.

    In 40 years, I expect Java, .NET and C# to be nothing more than a grievous pile of legacy code on obsolete operating systems (and
    who knows maybe a JavaScript).

    But the fundamental computer science concepts will be just as lively as they were when Shannon, von Neumann, Knuth, Dijkstra, Hoare,
    and the others dug them out of the grounds of formal logic and math…over 40 years ago.

    Btw. I self learned programming back in 80’s when I was 10 years old and nobody in my small village in Eastern Europe was interested
    in programming. My first programming language was assembler, then there was C++, Java, Python (and some others), I’ve also had experience
    with various databases on various scale and technologies.

    University didn’t teach me programming but gave me solid understanding of CS concepts and problem solving skills.

    There are jobs in industry that don’t require a CS degree and there are very good self learned software developers out there without CS degree (but
    with degree from other technical field).

    BR,
    Dariusz

  28. Jack says:

    Hi Mosh,

    I got a degree in Economics and worked in banking for only two years before ditching it and becoming a developer. After taking a few programming courses and reading a few books, I got a job in programming and never looked back.

    I wasted 4 years and a LOT of money obtaining a useless degree.

    I completely agree with your post here.

    Jack

  29. Z says:

    Quite frankly, I dont agree. A college is not there to teach you only about the technical stuff but you learn the non technical things as well. In addition to this, to be a good software developer you need to know more than just “code”. You need to understand networking, and software engineering principles, software architecture principles and a bunch of other concepts that you will just have a very tough time learning on your own or online through youtube or other means. Furthermore, a lot of universities, even community colleges, will more often than not, have information systems in place that they will let you inspect and maybe even play around with and maintain, including doing exploratory projects. I had the same mindset as you when I was younger but not anymore. I think college is a great tool and not just something to get yourself in debt with as you plainly put it.

    • Mosh says:

      Those non-coding skills you’re talking about, what makes you think people can’t learn those on their own by reading the same books that are taught at universities? You’ve never seen a book about software engineering, software architecture, etc outside of your university? Sure, some people prefer to learn in a real physical classroom. Nothing wrong with that. But that piece of paper that you get when you graduate should not be the way to validate you for your skills. That means nothing. I’ve seen people with several pieces of paper (PhD, Microsoft certificates, etc) who cannot build a simple app.

      • Karen says:

        Some people do better in a classroom setting and need more than just reading a book. I agree that people also need the skills, but having a degree is in itself an accomplishment, Education is never a waste of time.

  30. Ken says:

    Mosh,
    You are absolutely right, except… most people get a lot more out of college than specific targeted job skills. You may not fully appreciate all the “intangibles” from your college experience that shaped you as a person (probably for the better). Also, as others have noted, some employers won’t even look at you unless you have a degree, as irrelevant as that may be for the job. My music degrees didn’t do anything for my software engineer career, but they still move my resume into the “has degree” pile. And, despite many years of experience, I still don’t have a “related degree” which can be a hurdle.

  31. imhere says:

    I completely agree, sadly in some regions you’re usually asked for a degree otherwise you have no chance. I wanna work as a developer overseas now, and i’m already starting with remote work, having a degree has done nothing but open boring bad paying IT jobs.

  32. Jim says:

    That’s right knowledge from Uni in my job is worth nothing, but 5 years on Uni that was for my and many of my friends the best time in our young life. So totally disagree

  33. The degree that I (eventually) completed has little to do with my actual work but a LOT to do with making it past the H.R. filters in order to get the interview that led to the job where I do my work.

    When an on-line job posting leads to a company receiving thousands of résumés, one of the simplest things H.R. software can use to filter the flood is the presence or absence of a degree.

    Some of the jobs I’ve had have come through a personal connection. The connection counted far more than the formal education I didn’t (but now do) have.

    When you’re in the position of making what sales people call “cold calls”, having the stupid piece of paper can help get your foot in the door.Somewhat oddly, some of those ‘unrelated’ classes have actually given bits of useful information that have been helpful in my work.

    • Mosh says:

      You’re right. But my mission is to change that fossil thinking. A piece of paper does not translate into skills. One could cheat and pay others to do their projects. People need to be assessed for their skills properly, not be judged by a piece of paper.

  34. Yep, it’s true. I have a college degree (Biochemistry) but I’ve been a software developer for the last 20 years, working entirely from books and online learning. I wish resources like Udemy existed back when I was just starting out. And I hire developers, too, and I don’t require a college degree.
    While you don’t need a college degree to get marketable developer skills, one thing that IS in short supply is strong communication skills. If all you can do is write code, you are in competition with a world full of developers. But if you can talk to customers, understand their needs, translate those needs into a software design, and communicate it to other developers — well, that’s a skill set that will never be outsourced.

    • Dave Hunt says:

      100% agree. My formal degree is in Electrical Engineering, but most of my education in software development has been self taught since starting in 1982 on a TRS-80. Having grown up during the beginning of the computer boom there were very few courses to take anyway. Now, I am in a niche (manufacturing automation) where my degree gives me the credentials I need to GET the job and my self taught computer skills allow me to DO the job. But, the one thing that makes companies pay that extra 25-50% is the ability to communicate. It doesn’t matter how good I am at coding if most of the people I work for don’t even know what they’re looking at (i.e. a bunch of meaningless letters on the screen). It’s my ability to meet with the customer, understand their needs, reflect it back in the written word, stay in touch through the project with updates, produce user manuals and finally guide them through the implementation; this is what makes one invaluable.
      With that said, as programmers we have a responsibility to “code correctly”. While my degree in engineering does help me to think in a systematic and modular way which is in itself conducive to programming, it is not necessary to be a good programmer. But, no one should just learn how to code without taking the time to learn how to do it “right”, or better. Fortunately, there are plenty of resources out there for the self taught individual to learn how to do it better. I just want to emphasize that any self taught path NEEDS to include this. Just because you know how to turn a screwdriver doesn’t mean you can safely repair your car. The same respect needs to be given to software development. Especially since in the future your code could be DRIVING the car. 😉

  35. AZM Software says:

    College open doors for me and Introduced me to the field of Software Engineering.
    I do not think that my High School education that I had (which I liked a lot) has introduced me
    to the field of Information Technology.
    Nor my work experience, I was trying hard after high school to get an IT job but I did not know how.

    After college (a BS in Computer Science, and some graduate courses and Internship), I was able to navigate my way through to land a position, or at least, make educated guesses on what might work.

    I totally Agree with some of the points in the article, such as some of the courses might be outdated, or transportation costs. Nowadays, many universities offer online classes, and Hybrid classes (partially online).
    Also Costs, I hope they figure out a solution for that as well. Also the importance of self education and taking initiatives, which are the most important for any Software Engineer.
    The other “Unrelated courses” are also Important I think for Communication Skills and social skills that might be necessary for work life.

    Thanks for the great article 🙂

  36. Mosh, your points might be valid except that without degree most companies might not even consider interviewing you, if you don’t mention your degree in a resume. You most probably were never asked about your degree since it was in your resume, and interviewers didn’t think that you might have been be lying about it, to ask for a proof.

  37. Bryan says:

    Mosh, I agree to an extent. I am a self taught developer and I have found myself back in school now because you can only get so far without a degree. Like so many have said, applying for a job online is specifically filtered to get the exact candidate base they are looking for. They check the box requiring a masters or bachelors in software engineering, IT or computer science and that immediately disqualifies all self-taught developers without a degree, no matter what talent you have. I think decisions should be more portfolio based, similar to an artist. Employers should be more concerned with what people can do rather than funding academia.

  38. Soheil says:

    I agree. A university degree does not guarantee success in life.
    This post reminds me of a quote I’ve heard recently and I found it so true especially about computer programming these days.

    “Formal education will make you a living; self-education will make you a fortune.”

    ― Jim Rohn

  39. ednicgv says:

    I’m a Systems Engineer in my country (Venezuela) I’ve learned everything I needed to be a programmer, I have no experience and abruptly had to move to the US and here it’s way too different than there; I had to start over a career (B.S Information Technology) I’m halfway, and I feel I’m just paying for a piece of paper that says I have a certain degree, because education here it’s not worth it. If someone would have told me 3 years ago that it’s better have certifications or courses, I hadn’t go back to college . I’m totally agree with everything you wrote.
    P.S: I’m currently on your Xamarin course and I love it !

  40. Pratheek says:

    Thank you so much for this post Mosh!
    You put forward the points that make my thinking clearer. I always believed in the same but never had so much insight to it. Now it makes better sense with the rationale you’ve given in this post!

  41. Göran says:

    You have some points, but I think most of what you are saying is only valid if you compare going to a crappy university with taking good quality online courses. There are good universities out there that teach relevant courses (I admit I was lucky to have one in close to where I live). You should have at least some limited freedom to pick and choose what courses you take, while still getting the degree you are after.

    One thing you will not experience with online courses is software engineering projects together with other students. Doing group projects with other people, preferably for some real-life customer/company, was some of the best courses I had when I did my studies.
    You will get this experience one way or the other once you get a foot in the industry, but doing this at the university you also get to reflect upon and discuss the issues that are encountered.

    Online courses are great to learn new things regardless of previous education or experience. But a university degree is always a good foundation to have, so I wouldn’t dismiss it so easily.

  42. Cai Cruz says:

    Thank you, Mosh. I agree 100%. I haven’t been around the industry for very long. In fact, I am very knew to this. I only have 2 years experience as a full stack web dev, I have no degree and I am already working as a contractor at the Miami-Dade government. All glory to God. I am a self-taught developer and I definitely have learn so much from your C# and MVC courses. I really thank you for your hard work.

    I do, however, have a few concerns. My managers at the county want to hire me permanently. They believe I have a good combination of tech skills and interpersonal skills, yet they have found a big wall in the HR department; politics or something… Because I never finished my degree. Also, my very first job that I had as a IT support/developer paid me VERY little because I did not have that magical piece of paper. I only took it to write some experience in my resume.

    Also, we can’t deny that education is nothing more than a business. Whether the university is public or private it doesn’t matter; someone is getting paid and I really do not see that system going anywhere anytime in the near future. I really hope companies start seeing that developers are valuable because of their abilities to understand business needs and their capabilities to write software solutions for those needs, but at least in my case most recruiters always start asking me if I have a degree. As soon as I say no, I can notice their tone of voice change when they say “Oh, I see…”

    I think it would be great if you made a blog post on how to successfully get jobs, earn good money, network and market yourself as a developer without a degree.

    Great info as usual, Mosh!

  43. Three One says:

    Mosh is 100% correct. I was a pizza delivery driver for many years and was going nowhere in my life. Over the course of a year I taught myself HTML & CSS at home. Once I knew the fundamentals I did a few hundred dollars of freelance work. After that I built a site for free for a photographer. People liked the site and it got a lot of traffic. I used that as my portfolio and was hired as a full time developer. That was many years ago. If you want to work in software build something good. That’s all it takes for employers to see your ability.

    Right now I’m taking Mosh’s Node.js course. It’s awesome!

  44. Ezcapizm says:

    Very pointed conversation Mr. Mosh, what you have written, I believe, encapsulates many thoughts into what college/university is really becoming.. for most avenues of educational development and higher knowledge, a forward thinking article if not current.

  45. I do agree to some extent. It is however the universitys responsibility to design a program to fit the topic, and if you as a student choose to attend it, it’s your own choice. It has also become somewhat of a mess in the academic world due to the fact that many people wants to work with programming, and thus many universities offer training and education in the field. But a lot of them lack competent staff, and have to fill the programs with other courses that might not be relevant to the topic (as your uni in Iran).

    It’s a matter of choice really, choose a university carefully. It’s a lifelong investment of time and money, both in yourself and your career. Choosing the right university is important. Most countries even offer exchange-programs for students.

    And you are not a Software Engineer just because you took a class for 30 hours on Udemy, there’s a difference in a developer and a engineer. We should really defend university degrees rather than bashing them, improve rather than destroy. Yes, many universities have problems with quality, but far from all are bad. And it is up to you as a student to take your education seriously, not just blatantly sit there and expect skill and knowledge to mysteriously appear in your head.

    Find you your learning profile out, and find a model that works for you. Don’t expect others to just upload skill into your head. 😀
    And please, don’t call yourself and engineer if you don’t hold the actual title…it’s kind of disrespectful towards those who put effort, money and time into learning the technology, both practical and theoretical.

    Off-topic, I love Mosh classes. They are of very high quality and he offers skilled teaching, his classes will most definately be of use if you are attending a university and are looking to be a real engineer. I am too a university educated programmer, but I still take his classes to learn new things in my field. Never stop teaching Mosh!

  46. Brian says:

    I totally agree with Mosh here. I’ve said the exact same things. I’ve been in IT since the mid 90’s. In college, I attempted CS, but the lack of real world back then annoyed me so I changed my major. I got back into CS on my own, self study. Since then I’ve worked at a lot of big name companies (yahoo, eHarmony, warner bros., universal music group) and most do not care if you have a degree or not. They want to know if you have the knowledge and/or experience to step in and be a good contributor.

    I’ve worked with developers who were formally trained at a University (BS, and some PHD’s), as well as self taught. One thing I’ve noticed over the years is that people who are formally trained (specifically PHD’s) do hold some great depth of knowledge. However, in real world practicalities, I’ve found most formally trained developers wash out at fast moving companies. There’s a reason for it:

    If you are on a two week iteration cycle, where things move quickly and fast… some will thrive… those who are inspired, or have the hunger – and most of these types of people are self-taught. Those who say, “i need to go to a school. In the school I will be told how to do things. Those steps and procedures will be applied at my job…” tend to not work well in fast moving environments.

    MY wife thinks like this. I have friends who think like this. Their mentality is for “someone out there” to fix their problem of knowledge. They need to go “find the teacher at University,” and then when they get the diploma they’ll get a job. For some jobs it’s absolutely necessary. For software dev… not at all. For security… not at all. For Software Quality Assurance, not at all.

    I’ve worked with formally trained people who sit and think, rethink, architect, re-architect, rethink… and a month later they are 2 iterations behind with nothing to show for it. Web development is not rocket science. If you were getting a job at software development that is literally rocket science, then a good depth in the foundation of CS is probably the way to go….

    Yet having said that, I work with a guy right now, who’s one of the best developers I’ve ever met. He was hired to be a front end dev… but he had a background in C++, which we used to create binaries for desktop software. He’s also worked in Java, Spring, and has a really good head on best practices, design patterns, etc. He’s all 100% self taught. He actually leads and pushes quality in formally trained CS folks. This is typical for my experience with people. If you have the hunger, you could go to college, but you’ll prob. get bored. Your hunger will drive you faster than the programs available.

    Too many times I see formally trained people who are slow to response, weak to step up and just do the clock in/clock out mentality. Passion isn’t something taught. If you have the passion IMO you prob. are not going to drop 100k on college courses that will be behind technology 2 years, and move at a snail’s pace.

  47. They did not ask you for a degree because they already know you have a degree.Again no degree means no visa.Govt doesn’t understand about github & portfolio.For them no degree means no entry.Almost all the major employers ask for bachelor degrees/associate degrees to get first job.For you to prove that they don’t ask for degrees,all you have to do is give links of job ads from major employers who are happy with github profile in exchange of college degree & years of experience.Lots of employers do say that degrees don’t matter,but skills do.But their hiring tactics don’t reflect that attitude.It’s most likely a gimmick to stay in news.
    Employers use these tactics for the following reasons:
    1)Govt projects demand employees must have college degree as proof of competence.
    2)They have invested lots of money on buying shares of college loan firms.So,by asking for degrees,they are ensuring that there are sufficient takers of college loans.It’s more than a trillion dollar industry.If they start employing without degrees,this free money will run dry.They don’t want that.This applies mostly to Big Companies.They will hire a few genius wizkids who have no degree.But that’s a tiny minority.

    In my view,the entire 4 year syllabus of computer science,can be self learnt.This can be done very fast within a year for motivated individuals.Colleges don’t give that option so that they can mint more money on residential,tution & other charges.
    Competency based hiring is yet to take over the industry.

  48. Alex says:

    I had no idea that Mosh could have been so savage 🙂
    But I think he missed the whole notion that after attending a college and living in a campus for an extended time, you will become member of a community, you’ll join a network that affect you intellectually and culturally. you became friend with a group of people that share the same goal in their career, and if you’re lucky they are way more smart than you, and you get benefit tremendously from this friendship over the years.
    Of course it’s not true for every single case….

  49. Johnny_Five says:

    I went to a top 10 University and I learned very little in the way of coding “real apps”. The only thing I learned was theory. That’s it. What a waste. Meanwhile, my brother-in-law got experience during the 6 years that it took to get my degree (Computer Engineering is a 6 year program at my school). Anyways, I’ve learned WAY more since graduating, watching lectures on Udemy and making REAL projects. I highly support this article.

  50. Tom says:

    Hey Mosh,
    I am from Germany. Here we do not have to pay for studying.
    Therefore I feel your argumentation is much much weaker for Germans.
    I fully agree that selfasigned online courses are more valueable based on content.
    But even there I have to admit the basic knowledge I learned in study helps me in these courses.
    I recently talked to a data scientist within my working team and he thinks in Data Science you need at least a master degree if not a PhD.
    Do you think that there are topics such as Data Science in which you need to study?

  51. Rebecca Hammond says:

    Great article Mosh. As someone struggling to decide whether I should take my companies offer to pay for a software engineering degree, it’s comforting to hear a well educated person such as yourself has come to the same conclusion I did when I was studying electrical engineering – this is a giant waste of my time.
    How do you feel about programming certifications? Is it worth the time and effort to take the certification exams? My one worry is how my coding skills will appear on a resume without a degree to back them.

Leave a Reply

Connect with Me
  • Categories
  • Popular Posts