Learning to Code November 5, 2020

Should I start with Harvard's CS50 or Udemy's HTML, CSS, Javascript courses?



I want to learn to code with the intention of becoming an indie hacker.

I'm not a technical person, have minimal coding experience, my math is at 4th grade level.

I have tried Andrei Neagoie's "The Complete Web Developer: Zero to Mastery" Udemy course, but it was too fast-paced for me.

Should I start with:

a) Harvard CS50. I assume it would give me a better understanding of basic concepts, but I might struggle with motivation since most of it is not directly relevant to my product idea.

b) Jonas Schmedtmann's HTML, CSS, and Javascript Udemy courses. I assume this would provide less understanding of basic concepts, but would probably be easier to complete since I want to develop a web app. Hopefully, I could resume Andrei Neagoie's course after that.

What would you do if you were me?

P.S. I have no interest in becoming a professional web developer, I just want to be able to build my own products.

  1. 4

    If your goal is to build a product then go for Udemy courses. They would give you an overview of the tools you need to use to build your apps.

    CS50 does teach you how to code, but it will also dive into more CS stuff which are not relevant to your goal.

    When I started my journey to learn how to code I enjoyed Colt Steele courses. Andrew Mead is another excellent tutor. As a side note JavaScript, HTML, CSS would be the better option if you are time constrained because they would allow you to build the front and also the back end of your application.

    Best of luck

    1. 1

      I haven't heard of Andrew Mead before, thank you for recommendation!

  2. 3

    I would suggest you to start with an idea, what to you want to build? Do you have something in mind?
    Only learning the fundamentals without something in head to build, for me it's pretty hard.
    You could start with the frontend and then add the functionality.

    What I can suggest to get some documentation:

    or just play around with bootstrap: https://getbootstrap.com/docs/4.5/examples/ for the frontend part.

    I had the best experience with:

    and if you like videos: https://laracasts.com/

    1. 2

      Thank you for advice!

      1. 2

        I second their advice to start with an idea. Something very simple you want to build, and try building that. It's one of the best ways to learn.

  3. 3

    I have an online course aimed at beginners teach HTML , CSS, JS. Including a bonus lecture building a personal site.


    Give me a shout on Twitter if you need any help at all.

    1. 1

      I'll check out the course website!

    1. 1

      Why Udemy?

      Why not CS50?

  4. 2

    I'm self-taught and have risen to engineering management at PlayStation, so I have strong feelings about this.

    You do not need the theory side of computer science, such as using Big-O notation to work through the most efficient algorithm to determine the first 10,000 prime numbers, to build apps.

    That said, I personally believe in picking up a tiny bit of computer science before diving straight into app building. A good 'intro to CS' course from a major university (such as Harvard CS50, or MIT 6.00 (https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/) teaches you how to think like a programmer which is super helpful when you need to get through a big project, such as:

    • breaking down a project into small steps
    • figure out a method for fixing bugs, not just despairing and throwing things at the wall to see what sticks

    Hopefully, the majority of what you actually build will be dictated by 'HTML, CSS and JavaScript,' but I fear that in 2020 that set of concepts is being replaced by front-end frameworks. Like CS, it could end up being a bit of theory that's quickly overshadowed by whatever means you learn to really build your own app.

    That said, you can do it. Learn some basics, then break your project down into tiny chunks and Google your way to victory. Give yourself time and patience. Don't set a deadline, just set a goal and knock out each piece one by one.

    1. 2

      Thank you for your advice.

      I'm considering Harvard's CS50 precisely because I want to learn how to think like a programmer, so your perspective was helpful.

      Do you know any other resources that would help with that?

      1. 2

        I would check into a few such courses (certainly someone has written content about these courses out there?) and check the syllabi for interesting readings. (pro tip: That hack can get you to the knowledge of basically any degree you can imagine.)

        The MIT one I linked above included a free PDF of a book titled something like "How to Think Like a Computer Scientist" which I found enormously helpful. After that book and less than half the lectures, I felt I had what I needed.

        1. 1

          I will check out that book, thank you!

    1. 1

      Thank you for the recommendation!

  5. 2

    I would go with codecademy as it is the most practical way of learning code. What I mean by this is that it gets you to the "actual coding" the fastest, so no need to download anything beforehand you just step right in.


    I know that a lot of people here have also suggested using free tools, but I would go for the pro version with codecademy if you want to learn it once and for all as it gives you the "reps" you need to feel confident when its all over.

    1. 1

      Thank you for the recommendation!

  6. 2

    Suggest https://www.freecodecamp.org/

    Not only is it free, but it’s self-paced, practical, and there’s a huge support network for when you get stuck. You learn by doing, not watching lectures.

    CS50 is great, but definitely leans academic—you don’t need to know sorting algorithms to build projects.

    There’s good udemy courses out there, but the challenge with courses is that sometimes you learn knowledge but not how to actually build.

    You want to build projects, and the best way to do that is to use something that’s semi-structured but is focused on building projects.

    1. 1

      Thank you for the recommendation!

  7. 2

    Why don't you try no-code platform?

    1. 1

      I want to have the freedom to build whatever I want.

      No-code seems like a limited approach to me.

  8. 2

    I'd use laracasts. It's the best coding educational deal I've seen on the internet, the instructor is top notch and it's more applicable to someone wanting to learn purely for indiehacking.

    It includes tutorials PHP, JS, CSS, Git, VIM, dev tooling and more.

    1. 1

      I heard good things about Laracasts, thank you for reminding me about it!

  9. 2

    I'd wholeheartedly recommend you The Odin Project: https://www.theodinproject.com

    It will teach you all the basics, plus some nodejs and ruby on rails, so you'll be able to ship a project on your own without needed anyone else.

    1. 1

      I heard good things about it, thank you for the recommendation!

  10. 2


    You want to learn programming? CS50

    You want to know enough code to create a product? Udemy

    1. 1

      I'm concerned that without programming fundamentals I will struggle with building apps.

      I think one of the reasons why Andrei Neagoie's course was too fast-paced for me was because I don't know how to think like a coder.

  11. 2

    Why not both of them ?
    Well, I want to be honest with you. HTML, CSS and JS are not enough for coding! But these are good basics to start. I suggest you to begin with free courses on Youtube.

    1. 1

      Maybe you are right, maybe I should just do both.

  12. 2

    As someone who has done a Coursera course from a university (Duke, I think) and a Udemy course, I would strongly recommend that you to pick a good Udemy course if you want to start building your own products.

    While I cannot comment on the specific courses as I haven't taken them, Udemy courses offer a more hands-on, fast-paced learning. The only thing you need to ensure is that if the course is for 10 hours, you need to put in an additional 20-40 hours of practice to be able to build products on your own.

    The return on time invested in a Udemy course is far greater than that of a University course.

    In my case, I've been able to build all of Ricotta (backend, APIs, front-end integration, cloud hosting) and some of Trudl thanks to a Udemy course from Brad Traversy.

    If your concern is "skipping computer science fundamentals will lead to problems down the road", I don't think it's going to be a problem and you will be able to build a lot of products if you keep practicing. Also, you can always learn about specific computer science concepts by just Googling them and reading up about them later on.

    1. 1

      The return on time invested in a Udemy course is far greater than that of a University course.

      I thought so, hence the hesitation regarding CS50, but then I'm worried that starting with Udemy will speed up the learning process in the short run, but slow it down in the long run.

      But maybe you are right and I can learn by simply building products. Especially since I'm not interested in a career as a programmer.

  13. 2

    Just so you know expect to spend 500 to 1000 hours to become proficient enough to build a product.

    So 10h a week for a year would be a good start. Doable but be prepared this is a long haul destination!

    Freecodecamp is a good place to start.

    1. 1

      I have to say that I question the 500-1000 hours number. I wonder how much of that is just people getting stuck in the tutorial hell?

      Of course I can't be sure that I'll avoid it :D

      1. 2

        It's going to depend on a lot of things:

        • What you want to build. If you are building a simple Rails CRUD app with no client side Javascript, you will be able to do this in fewer hours. I would aim for this if your driving goal is bringing in money rather than learning tech.

        • Taking the short or the long road. You mentioned tutorial hell, and yes depending on what courses or advice you get you might be sent "off track" but with no experience you won't know what you don't know. You might end up going down the React/Redux rabbit hole when you (from a business point of view) don't need to, although from an "it's interesting" point of view you might like to.

        • Aptitude - it takes some people longer to figure this out than others. Programming "talent" is hard to predict - some "non technical" people do really well while some very mathematically minded people can't code for shit. With no practical experience yet you probably don't know which camp you fall into.

        I would therefore assume 500-1000 hours and if you can do it in less that's a bonus, but if you are not prepared for that level of effort I would suggest to not learn to code. If you can learn to code and create commercial quality products in 100 hours, then however you did that would itself be a multi-million dollar idea - so patent and sell that method!

        You might be able to produce some code after 100 hours, but it likely won't be production-ready. If you want to make a SaaS definitely not. If you are making a tool to run on a desktop PC, then maybe (as there is no maintenance and devops work to do). If you are making a wordpress plugin in PHP you might be OK as well. But you need to do the other 900 hours one way or another - it might be through bug fixing the shit out of the service you launched!

        1. 1

          You are right, I need to be prepared to invest 500-1000 hours, otherwise there's not much point in starting.

          I'm thinking about learning Python + HTML, CSS, Javascript + UX design. Do you think that's enough for building web apps?

          Also what do you think I should avoid that is not necessary for building web apps? You mentioned React, what else?

          My aim is to build apps and make money, I have zero interest in a career as a web developer, so I don't care about fashionable technologies etc.

          1. 2

            That’s sounds like a good plan. Depending on your app you could get away with minimal Javascript, use bootstrap for most of you’re css needs and mainly learn python/flask. The UX wouldn’t be valuable. It all depends what you are building though. Something like indiehackers for example could be built this way. But maybe not highly interactive tool which would require a lot of JS and frameworks.

  14. 2

    CS50 will give you confidence like nothing else. I started learning html and php on my own 15 years ago, but since I had no formal education, I always felt like I wasn’t really a programmer. I did CS50 a couple years back (well into my career) and it gave me that thing I had always missed.

    1. 1

      Do you feel that it would have been easier to learn to code had you started with CS50?

      Not so much in terms of confidence but in terms of learning to think like a coder?

      1. 2

        I learned very basic coding things just doing CS50. Stuff that I had never seen mentioned in all the web courses I did. Fundamental knowledge like how Arrays are stored in memory, how programming actually works on the machine that runs it, etc. I think if I had started with CS50 I would've had a much easier time with everything else. Kind of like an upfront investment that pays off forever.

        1. 1

          This is very helpful, thank you!

  15. 2

    I did Jonas courses a couple of years ago when I first started coding (all of them), but I think this one is more practical for learning JavaScript by Andrew Mead (and he is also a native speaker) https://www.udemy.com/course/modern-javascript/. For learning CSS/HTML Jonas courses I think are decent, but I wouldn't waste much time on HTML/CSS though because things what you want to do in CSS are easily googleable with tons of stackoverflow answers. I would learn best practices for using CSS/HTML (like BEM for naming your CSS classes, separating CSS files etc.) and Jonas does a really good job at teaching that in his advanced CSS course, the basic HTML/CSS course he has doesn't teach that and things are honestly messy there.

    1. 1

      What would you say is the key difference between Andrew Mead's Javascript course and Jonas' Javascript course?

      1. 1

        I think Andrew Mead's courses are more faster paced and more energetic (probably the main difference then), looks like Jonas did a huge update on his JavaScript course recently so I can't really comment on his new content anymore, but before that some stuff was definitely a little bit outdated.

  16. 2

    I leared anything in udemy and bought all jonas'courses. He is best lecture, teach basic to advance theory, best practices, learn how to solve problems...

    One vote of me for jonas 🥰

    1. 1

      Glad to hear you liked Jonas!

      I already have three of his courses so I will definitely try them!

  17. 2

    Since you've posted in "Learning to Code", I'm assuming you've discarded the no-code development route for this answer:

    CS50x was my first ever computer science course about 8 years ago, and I remember it very fondly. However, if you're looking to build webapps/apps/etc and those kind of things I truly believe the fundamentals are great, but the web development scene has changed a lot in the last 4 years alone.

    I also think that CS50x taught PHP on the later lectures after you've been introduced to Comp Sci fundamentals through C.

    I'm not sure why this hasn't been mentioned, but have you looked into: https://www.freecodecamp.org/? I've been trying to get more into Javascript and I love the structure they've laid out.

    I also found this project when I was lurking indiehackers which you might find useful: https://techmastery.io/.

    I suppose the answer depends on how much time you have, but I empathize since I keep wanting to learn more despite being a CS degree and a couple of these MOOCs in. (I really enjoyed the MITx courses too btw, once you gain more confidence).

    1. 1

      Do you feel like CS50 helped you to learn to think like a coder? That's the main reason I'm interested in it.

      Or is it too academic for someone who has pretty much zero coding experience besides some dabbling here and there?

      1. 2

        I'm confident it will help you think of the fundamentals more intuitively. I took it with no prior background and really liked it. I do think it gives you the bases, but a lot of the valuable learning comes from sturggling with the problem sets (when I did it they had video help sessions though). I would honestly do both at whatever pace you feel comfortable with if I was in your position.

  18. 2

    freeCodeCamp.org and Codecademy.com are the best resources so far I see personally.

    1. 1

      Thank you for the recommendations!

  19. 2

    In my experience, you can learn the fundamentals (types, data structures, operators, etc.) by taking a beginner level course in Javascript. The trick is to look for a course that is geared for someone with no programming experience. Codecademy has some good courses, I think (at least, they used to).

    But, if you want to know those fundamentals before going into JS, I don't see why you shouldn't take the Harvard course. There are other similar ones on Coursera.

    1. 1

      Do you think it's better to know the fundamentals before getting into Javascript or to learn them on the go while learning Javascript?

      I wonder if CS50 is an overkill for someone who has no interest in a career as a coder or a wise investment that will help me learn faster later on.

      1. 1

        At the end of the day, I think it just comes down to how you want to spend your time. It will definitely make it easier to learn Javascript (or any language) if you take CS50 first. It'll just take longer. But, it's not necessary. Lots of people learn about types, data structures, operators, hexadecimal values, etc. from a beginner course for a particular language.

        I think the trickier thing to learn about that doesn't get covered well in language specific courses is memory management. But I'm not sure that gets covered in CS50.

        If you have no interest in a career as a coder and are just trying to get yourself to the point where you can prototype your ideas quickly, you'll be fine without CS50. You can always go back and take it later if you feel like you're really missing something.

  20. 2

    I use Udemy to learn everything. I’m not sure how it would work for learning your first programming language but for an experienced programmer who wants to learn a new language nothing beats Udemy.


    I used this course to learn web development. It covers HTML, CSS, JS, Node, and Mongo so you get the full stack.

    1. 1

      I heard of that course, I assume it's similar to the one I tried, which was too fast-paced for me.

      The reason I'm worried about starting with Udemy is because I suspect that skipping computer science fundamentals will lead to problems down the road.

      1. 2

        It was a good pace for me and I never learned HTML, CSS, or Javascript ever in the past. It’s a 40+ hours course last I checked and covers lots of computer science subjects along the way.

        1. 1

          Do you feel like it gave you a good foundation for HTML, CSS, and Javascript?

          With Andrei Neagoie's course I felt that he was rushing through subjects without going in-depth, but this may be simply because I couldn't keep up.

          1. 2

            It worked for me. I took that course a few years ago when all I had was 2 years of formal Java education. I learned client side as well as server side fundamentals as he keeps it at a very high level. Even though it’s a 60 hour course, most of it is going through broad topics instead of focusing on minuscule details that just stress you out.

            1. 1

              I'll consider taking Colt Steele's course in the future. Thank you!

  21. 2

    Jonas, no doubt for quickly learning. ( html n saas )

    1. 1

      Won't skipping the computer science fundamentals lead to problems down the road?

      1. 2

        In new version of js course, He taugh many thingn included fundermantal of programming.

  22. 1

    From my perspective I would say to use udemy or udacity to get you started on programming and website design. and I would focus on learning something like fire base that you don't need to spend that much time doing the backend to get your website up and running fairly quickly

    1. 1

      I appreciate the offer but I don't even know what Django is :D

      I want to start with HTML, CSS, and Javascript.

  23. 1

    CS50 also fast paced, fun to watch but it covers a topic in 1-2 hours. I doubt it's enough for html css js python flask sql etc. Which all are minimum requirements for a web app actually. It's better with reading assignments and problem sets. Which requires 2x the time maybe more.

    I don't know the other course and don't know what kind of "product" you are referring. So only html, css and javascript might not be enough. Additionally only the javascript is an actual programming language, amongst three.

    1. 1

      So what would you start with?

      1. 1

        If the whole goal is building your own product, you can check what you need first. And find a way to achieve it. I don't want to discourage you from learning programming however there are many nocode tools and integrations out there to maybe help you out.

        If those are non sufficient then maybe looking at different backend language first and see which one is more understandable for you. Which is still relevant today. Such as Python is quite easy to read and write. There are dozens of sources you can learn. Ruby on Rails a bit opinionated, following Model View Controller paradigm so it's also beginner friendly. Javascript quite popular but I still no interest in it.

        For example this guy builds popular apps' clone each in under 3 hours, and with enough functionality for an MVP. Doesn't teach the language however I can see how easy to implement authentication, crud applications with Rails. https://www.youtube.com/c/DavidBattersby/playlists

        Or this guy covers actionable topics on Python.


        I wouldn't start with a HTML, CSS course. I can always find a free template or buy one and just change the inner content to have a full site. Also there are visual editors for it now. It's nice to be familiar with those but I doubt they are necessary at first.

        CS50 offers fundamental knowledge, as I said you shall spend more time to fully grasp its content, thus I'd start with it if my only choices are these two.

Recommended Posts