Learning to Code March 26, 2020

Can I go from zero to code in 3 months?


Hi IHers

I have currently very limited (almost zero) coding skill, just some html and css but I have decided I'm going to learn to code Ruby on Rails in 3 months... why 3 months? Well I am working on a project based contract that is going to last 6 months more and seen how life and the global economy is turning with Coronavirus I think that it is time to add new skills to my belt.

Before anyone starts to complain :), of course, I'm aware that I'll not become a "senior developer" in 3 months that I'll have still a lot of work to do after that. So what is my goal? To be able to code my own small side projects... and who knows maybe to work as a developer some day.

These are the resources I'm planning to use:

  • CodeAcademy
  • The Odin Project
  • Udemy

Do you suggest any other source?

Would anyone like to mentor me?

  1. 4

    A lot of thorough comments. Clearly coding is an open environment :)

    I'm sure you'll read all of the posts, so here's my two cents from teaching over 300 starters:

    • Skip the interactive tutorials. They lead you to believe in false things and drain your motivation. Codecademy, freecodecamp <- not good.
    • uDemy has been far most the thing my students have recommended over and over again.
    • if you want to do excercises I'd suggest exercism.io
    • Overall just doing projects is the only real way to learn.
    • Get a mentor! Or a very active forum/chat. If you didn't choose Ruby, I'd offer myself :D
    • As far as stack goes, I would highly suggest Next.js (Javascript). I could write an eesay on why that's a good idea, but since you've decided, I wont go into it. Any stack is better than those interactive coding things :D
    1. 1

      What is your background about teaching 300+ starters?
      Why do you think freecodecamp lead you to believe in false things and drain your motivation? Can you elaborate please?

      1. 2

        I've taught 3 years in university and a bunch of different custom training sessions lasting from a few days to months.

        I don't understand the why fully, but here's my observation so far. The problem seems to boil down to the artificiality of things.

        First of all there is no project, there are rather tasks. You don't know where you're going or why. Programming should be about solving problems in your own way. Not doing things the IDE wants you. It is boring, you get the wrong idea about what programming is, you don't problem solve, not really. Programming is about exploring different paths, being creative. Imagine learning how to paint by using paint-by-numbers. I mean you get to know the brush and some colors, but you're not learning how to paint. In this sense videos or just hammering at it is even better. TLDR: you can't be creative in a fixed-path environment.

        Second the environemnt is fake, artificial. I'm not one of those tutors who thinks you should program in Assember language first, to understand the nitty giritty. But I do think to really learn something you actually need to use the real thing. See exercism.io for example. Yeah it's more complicated to get started, but you get to actually program in your environment. Also if there's an error, then you actually get a programming error - a logic flaw. Interactive environments usually have some kind of a "is your answer correct" solution that only checks for their correct answer rather than does the program actually work. I've seen frustrated students who simply are giving up, because logically the program would actually work, but the IDE wont let the checks pass. And I understand their frustration. Worse when the error is "there is an error in your syntax" when really there isn't.

        At least with video you're still getting real errors, real feedback, possibility to explore. Bonus with video is that a lot of the time it's a real project and a real programmer talking about real understanding.

        I can be wrong about any of this. Maybe they have changed a lot since I last saw (half a year ago). I love the ocncept of "just start and we will guide you". But I haven't seen anything so far that actually works (assuming exercism.io is too hard to get started with for a beginner).

    2. 1

      Great feedback Krister! RoR is for starting somewhere, I'll hopefully moving on to other languages, stacks and framework if I see that programming is my thing :)

  2. 3

    Having interviewed 70 developers without degrees the overwhelming patterns for success stories are:

    • make your own projects you are passionate about so you stay motivated
    • do something every day (or every week day)
    • join a community where you can share your progress
    1. 1

      Hey! I have followed many of your post and they have being a great inspiration :D thanks for your great work!

      Any community that you would recommend?

      1. 1

        Thanks Zano!

        Well, of course Indiehackers is great!

        Makerlog on Telegram is good as well and free.

        I have a community as well that you get invited to if you sign up to my mailing list

        Definitely be active on Twitter if you aren't already. There are lots of hashtags people follow like #100DaysOfCode

  3. 3

    I was in a similar position as you a few years ago. RoR is a great place to start. Some thoughts:

    -Somebody already said it, and it's worth repeating. Spend almost all of your time building projects, not doing short tutorials you can't apply immediately. I would suggest focusing on the basics of putting together a rails app: routes, ruby basics, MVC and Active Record.

    -For me, even after a coding Bootcamp, I only arrived at my RoR 'aha moment' doing The Ruby on Rails Tutorial by Michael Hart: https://www.railstutorial.org though I have no experience with The Odin Project.

    -You will mess up. You will spend hours on errors because you missed a letter here or there. You will constantly forget how to do the most basic things. And it will still be worth it 10x over. This is the way.

    Good luck!

    1. 3

      This point is important, otherwise you'll see your self in tutorial hell where you know a bunch of this little things but forget how to do them in real life.

      Grab a project, very small and figure out a way to get it done.

    2. 1

      Thanks for the advice!! :) I will have a look to that tutorial at same point.

  4. 3

    It all depends on your motivation and commitment to learning new things. 3 months are more than enough to learn the basics of Ruby and Rails.

    Remember, the best way to learn is not watching videos and reading tutorials only, but practice. The more you solve exercises, the quicker you learn.

    Good luck ✌️

    1. 1

      Thanks for the support! :)

  5. 2

    Don't get stuck in tutorial hell. Focus on developing lots of small projects that get more and more challenging. Learn what you need to complete a project rather than everything at once.

  6. 2

    This is exactly why we exist. To make things clear. It's completely free. No strings attached. We are a small community of engineers and developers mentors aspiring students.

    Drop a mail at [email protected]

    We would love to help.

    1. 1

      I sent you a mail :)

  7. 2

    https://www.w3schools.com/ this will teach you alot really easy built a good web dev base

    1. 1

      I'm added it to my list :)

  8. 2

    Learning to program is like learning a foreign language. You never stop learning. Eventually you become proficient, but even ten years from now you will still be studing ruby, html, etc. Go all out for three months and soak in as much as you can, but keep the mindset that you will always study and never stop.

    1. 1

      Totally agree... any field needs continuous learning :)

  9. 2

    Good for you @zano. Echoing what a lot of other folks are saying here, I'd stay away from Ruby on Rails. If your goal is just to build your own projects for yourself, then RoR is fine, but if you're looking to expand your skills to possibly land a job as a developer in the future, then I'd look to Java/Kotlin (Spring boot framework) or one of the Javascript Frameworks that folks have mentioned (Node, React, etc). As a senior dev, I can tell you I see tons of jobs for those skill sets and just about zero for RoR developers.
    As far as learning resources, I really like to pair my online content with a good old fashioned book. The reason is that with videos and websites, referring back to content you looked at last week can be tough. In a book, it helps to highlight and take notes on critical stuff and then you can easily refer back to those things later .

    1. 2

      I chose RoR for these reasons:

      • It seems easy to learn for a newbie
      • You can make something on your own without knowing too much
      • It makes easier to start somewhere and learn other languages later on

      So I agree with you, RoR should not be the final stop ;)

  10. 2

    If anyone say you can't, just cough on them (kidding, don't do it seriously).

    You can surely be a decent level developer in 3 months. Most important point to remember is don't get scared when you are stuck, even for the most senior developers it happens(juniors just panic, seniors know a secret called https://stackoverflow.com).

    1. 1

      Coughing is not so popular nowadays :P but I get your point :D

      Yes, I already understood that stackoverflow will become my best new friend

  11. 2

    I suggest https://www.freecodecamp.org/learn/ It is free, and if it helps, you can donate something. I would never invest in udemy or other paid platforms while you have free code camps and YouTube

    1. 1

      I bought a $11 course at Udemy, not expenses (based on where I live :) ). I can help me have a beginning well thread hopefully :)

  12. 2

    Hello Rails is a good starter.

  13. 2

    I think Ruby on Rails is a good choice as a beginner. Try to get a friend to help you out when you get stuck. It’s not the coding that’s hard as they “why ain’t this working” problems that may not be your fault but you need to diagnose yourself. Having an experiences Ruby person around would be helpful.

    The good thing about Ruby on Rails is the framework does a lot of magic for you so you can be productive with little experience. Start off with simple apps without JS to make a steeper learning curve. (Steep means learning faster)

    1. 1

      Planning to attend local Ruby meetups, I hope to get someone there to help out :) Thanks for your feedback! :)

  14. 2

    Speaking as a veteran coder, and a CTO/VP R&D of funded startups who's seen many developers in his days, it is totally possible. I have a few key pieces of advice for you:

    • CODE A LOT!!!!! (as suggested previously) - spend most of your time WRITING code and not learning about code.
    • READ A LOT - look for different and varying sources of inspiration - don't have "one guru"
    • Consider JS and not Ruby - NodeJS as a backend is definitely winning the battle (and job market) + you only need one language for both frontend and backend (with a big difference in coding skills for each, but still) - https://trends.google.com/trends/explore?date=today 5-y&geo=US&q=%2Fm%2F0505cl,%2Fm%2F0bbxf89
    • Find other coders to give you Code Reviews - every line of code you ever write should go through code review by another coder - one of the best ways to learn more and get better faster.
    • Contribute to Open Source - It's hard for a beginner, but worth the effort - start by contributing to documentation and move on to "good first issue" which are entry-level.

    PS If you'd like some advice, I'm doing free 30-min consults now, feel free to book one. https://calendly.com/jonathanoron

    1. 2

      Thanks for your feedback and offering your advice! I can maybe chat someday when I have got some more progress :)

      1. 1

        Good luck and let us know how it goes :)

    2. 2

      I disagree with JS. It’s a horror show of a language and ecosystem. It’s popular because we have to use it for the web. It has no competition!

      Ruby would be a more pleasant experience for a beginner. Java and c# would be good as well.

    3. 1

      I think suggesting Node is good advice if you're looking for a job, but horrible advice for an indie. Even with about 5 times the experience with Node I have with Rails, I'm far more productive with Rails.

      Ruby is a more beginner friendly language, too. In fact, learning Ruby to an intermediate level fairly quickly first, may lead to a shorter total path to excellence with JS than starting with the much quirkier, cruftier and less consistent JS as a beginner.

      1. 2

        That was my point choosing RoR :) to get a relative easy beginning so I don't get demotivated.

  15. 2

    It is possible to learn the basics and make some project in 3 months. It won’t be great quality but it might work. Then keep learning relentlessly the following 20+ years to really understand what you are doing.

  16. 2

    Yes, it's difficult, but very possible to go from basically zero to learning to code in 3 months. The way I learned was taking multiple Udemy courses, and then building my own projects alongside what was being taught in each course.

    Bonus points: learn git and Github. It's boring at first and you might not see the use of it until months later, but learning it now will have an outsized effect on your coding career. Good luck!

  17. 1

    Only reading this thread now. Pretty good advice all round. I started with Rails too. @zano so how did it go? It's been 3 months, would be interesting to read about your journey so far!

  18. 1

    Building projects is a great advice, but you need to learn the basics of the basics first, or you'll be lost very quickly.

    I would begin to read a book on Ruby on Rail and copy some code. Takes the one the community praise the most. It will give you some consistency. If you look at the web, you'll have different syntax and way of doing things, which can be a bit disturbing for a beginner.

    While doing that, begin a small side project. Small. Very small at the beginning. Use the book for the syntax, for understanding what you're doing, and use Internet for specific problem you have. Using a good book can give you some tech jargon to give to google, to find quickly solutions.

    Then, from your small side project, you can create something a bit bigger. Or you can do another small side project because the first is crap. Whatever. When you feel you have the basics you need, build and build and build.

    I wrote about that here if you want.

    A last things: whatever you think about JS, it's full of traps for a beginner. Don't begin with that.

  19. 1

    Hey -zano, I was once in your shoes. No CS degree or bootcamp, but I really wanted to make a bicycle touring app. I really learned a lot from Treehouse and Udemy. But like TaimoorAhmad said, it's the most helpful to have a project to work on.

    I first learned Rails, and now I have fully focued on the MERN stack - (the great thing about this is that once you learn JS, you can use it for frontend and backend with Node.js as opposed to wrapping your head around JS and RoR at the same time.) Plus this stack is seemingly more popular than Rails stacks these days.

    One example of a recent project I just worked on to solidify my MERN skills is the UnityButton. (https://www.unitybutton.com/) - just keep building!

  20. 1

    Of course you can, you could become a programmer in a matter of day's, even hours. Like most things in life, how good you are at programming is a spectrum. Becoming better at programming requires a lot of experience, there is no two ways about it.
    Despite this, the truth is, at the beginning of a project, most people do not know exactly how to create it. The path is revealed as you take things step by step. Sometimes you may take a step in the wrong direction, however, after you have made that step, you will realise it is the wrong direction, and change trajectory.

    As Steve Jobs said: "You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something – your gut, destiny, life, karma, whatever. Because believing that the dots will connect down the road will give you the confidence to follow your heart even when it leads you off the well worn path; and that will make all the difference."

  21. 1

    No, because it will take you a while to get to know the essentials, even some things may take 5-10 times to get the idea what's happening.

    If someone tells you that it is possible to learn to code in 3 months or less is trying to sell you something or they don't know what they are talking about.

    I would say that it will take you about 6-12 months to get to a point where you would say that you understand something and can code up some custom projects, even though there are a ton of courses with practical projects.

    After finishing the material you want to learn, make sure to make a bigger project, maybe your own website and blog just to be able to use the things you've learned over the few months of intense training.

    Don't forget that there are different types of courses, one type is the explaining for a specific concept / tool / language or technology and the other one is a complete long tutorial where the instructor is building a bigger app which will be similar to what you would build in real life.

    Constant learning is needed in his field, even if you think that you know something, you will get to a point where you don't know anything when trying to solve a simple problem that you've never encountered before.

    1. 1

      Thanks for your feedback! I would say that continuous learning is common to almost any field. 3 months for feeling that I can start and whole life to learn it well... it sounds like a good plan ;)

  22. 1

    Can I go from zero to code in 3 months?

    Yes. You'll definitely will learn a lot.

    Peter Norvig wrote this text on how "Teach your self to program in 10 years"


    So, yes, start, and see if programming it's for you. If you're comfortable sitting in front of a computer for hours trying to figure out things. You'll learn a lot and by all means don't forget to tell us how everything went in 3 months!

    1. 1

      Thanks for the article! I'll keep the community updated with the progress ;)

  23. 1

    As always everyone is suggesting frameworks they use, they find easy, instead of the ones that are fastest for newbies.

    Simplest and most popular stack in the world by a mile (and best documented) is LAMP:

    Linux = most popular around virtual hosting companies is Ubuntu. Learn its basic commands. There is a few dozen of them and it will allow you to work easily with your server. You can have good knowledge within 1 week.

    Apache = HTML/CSS/JavaScript - you can't really build websites without it. That will take 3-4 weeks.

    MySQL = you can just install PHPMyAdmin on a server and you are good to go. You will still need to know how to do PDO secure connection and a few basic rules. 1 week to learn is more than enough.

    PHP = the most popular language in the world. It's best documented and easy to start. It has bad press because it does not enforce certain schemes and the entry-level is really low, meaning there is a bulk of apps that are built by people that never really learned it.
    But it's easy and very forgiving. And there is no extra layer of complexity - it's very easy to build on. You need 1-2 months to get a hold of it and release a few simple apps.

    Yeah, this stack is "not cool", but it's tested, it's easy and within 3 months you can be at Junior Dev level. Almost 8 out of 10 websites use this stack. Largest platforms around the world use this stack.
    An additional bonus to this stack is that most of the things (at least partially) were done before since it's so popular. So you can find open-source code snippets all around the web and use them for your own projects lowering the entry-level.

    But again, this stack is not cool, and since every developer is a rockstar, it's completely ignored in those conversations with everyone trying to push their own, more niche/advanced stacks instead.

    I would personally start with Python (since it's enforcing you to learn to code in a clean, sane way), but if you have 3 months, there is not enough time.

    1. 1

      Popular is the wrong choice - most people are not smart and they cut corners, instead of applying some effort and hard work to achieve the real success. Real results require hard work, and there's no free dinner there. In psychology it's called negative consensus bias. You see the majority doing a mistake and you perceive the majority as overwhelmingly right instead of critically evaluating all the havocs and traps such a choice presents. Easy means wrong in Computer Science - there are no easy ways around problem, you have to solve the problem and not walk around it looking to cut corners.

      1. 1

        No, I don't. For the sake of conversation with a no-code person I simplified.
        And no, easy does not mean wrong in Computer Science. Crazy you even say that. I don't know where did you get that from. Easy can also mean smart.

        1. 1

          You're conflating easy with simple. In computer Science there are no subjective terms like easy-hard. There are simple solutions, and there complex solutions. Praying is easy, it does not mean praying is scientific and works. No such thing as easy or hard - in scientific discussion at least. If things were easy everyone would be a developer earning big money. If something is easy most of the time it's a scam. No free dinner in this life. It's what is called "too good to be true". The wrong thing to do is to decide based on what others do - it's negative consensus bias, a delusion. Every project has its unique needs, and picking up a language based on judgement popular-not popular, famous-not famous is very very bad.

    2. 1

      Thanks for your feedback! :) How is it going with Phassive by the way? (I'm a fan of your project in the shadow) ;)

    3. 1

      holy moly. I started with LAMP and regret it to this day. 3-4 weeks just to figure out the router? Why.. and PHP is not the most popular language in the world.. JS is.. sources?
      GitHub: https://githut.info/
      StackOverflow: https://insights.stackoverflow.com/survey/2019#technology
      8 out of 10 websites may be wordpress. doesn't mean anyone actually programs them. (also, source?)

      1. 1

        holy moly. I started with LAMP and regret it to this day. 3-4 weeks just to figure out the router?

        Blame it yourself or your teachers then. 3-4 weeks to figure out a router? Sounds like you got lost man.

        PHP is not the most popular language in the world.. JS is..

        PHP is the most popular serverside programming language. You can't compare it to the front end scripting language.
        There are hundreds of resources - just Google it.

        8 out of 10 websites mean that the technology was tested and it's used widely for a reason when others failed.

        1. 1

          This comment was deleted 6 months ago.

  24. 1

    Why Ruby on Rails and not Django? I'd say Ruby loses its momentum and is slowly fading, Python is here to stay. Without Rails there's no Ruby, while Python is strong at all fronts. I'm a developer with 20 years of experience and I think Rails has no future.

    1. 1

      It is common a decision paralisys when starting to program :) I had to choose something and RoR seems quite friendly for newbies. I thought Python as next in the list.

      1. 1

        What happens to Ruby is tightly bound to the owner of the Rails project, if there was no Rails with this scaffolding idea nobody would know what Ruby is, as everyone needs it fast, cheap and up. But Django gives you much more, enterprise-tested concepts (it give you more freedom, but also requires more responsibility, but much much more powerful compared to Rails), powerful admin panel and robust, secure, middleware-rich and highly configurable point to start with, huge selection of modules and strong community - it was developed for no-compromise quality and speed, and will last. Want a microservice? No problem, go Flask! I carefully observe the sentiments and I see Rails subsiding. Python has more human-friendly syntax and it's a not a problem to start, while Ruby was built around fancy Matzumoto's biases with far from trivial and far from reasonable syntax.

  25. 1

    You definitely should check Treehouse

    1. 1

      I prefer to start with free/cheap alternative to see if programming is for me :)

      1. 0

        And cheap is ALWAYS bad. Greedy pays twice.

  26. 1

    Yes you can !! I would also argue you can't go wrong with JS instead of Ruby if you want to build web apps.

    Take a good look at this for resources and mindset: https://why.degree/motivation/

    1. 1

      Good point. Thanks for your feedback :)

      1. 1

        I doubt JS will make you a good choice. JS is full of flaws, hard to debug, fails silently, lacks typing. Out of many many codebases I have worked with the majority of abandoned non-maintainable were in JS - you'll repeat same mistake if you'll go with JS. Better safe than sorry. Cheap means bad. What else? If you need to scale soon enough go with Go, Java, if you need an MVP and don't care too much about threading and CPU - go with Python (Django).

  27. 1

    Yes you can, but don't do the mistake of jumping from one language to another. See what are your needs and dig one language from it. Learn one, but well.

    Also, These days internet has a plethora of resources and for non-coders who are planning to build the next big tech startup, it is not necessary for you to learn how to code (its not the 80s), but having a basic understanding of code logic is good enough.
    Having said that, there was a NO CODE tools post recently on IH, with almost all the major tools/stack required for you to start up by @rosiesherry and the link to it is: https://www.indiehackers.com/post/100-no-code-resources-92b6559fe5?commentId=-M3ClZ2KcOP4aLeMgmuG Do check it out.

    "No need to reinvent the material to create the wheel, just create a better wheel"

    1. 1

      thanks for the link :) No Code is really cool and I really see the point, but basic programming would level me up for other possibilities too.

      1. 1


  28. 11

    This comment was deleted 5 months ago.

    1. 3

      100% agree.

      Also I liked jumping in the deep end. I would find boilerplates (empty projects, with structure decided and packages) and use them to build projects. I would learn the actual eco system and the best way to do it.

      I hate learning stuff to be told not to do it.

      1. 1

        I agree, it wanted to face small challenges/projects from the very beginning.

        Maybe a silly question (not so silly for a newbie). Where to find boilerplates? Github?

        1. 1

          example https://github.com/pydanny/cookiecutter-django

          google "github reactjs boilerplate" normally I will add words like docker, redux etc

    2. 1

      Thanks for the advice :)