Hey Fellow Indie Hackers,
I have always been the business person in every endeavor I have taken on. Although, I have always had an interest in the actual development and deployment of projects.
Over the past few weeks, I have finally freed up some of my time again. I would like to take some of that time and teach myself to code.
Any resources and languages you would recommend I learn?
I was thinking of learning JavaScript on Codecademy. Thoughts?
Talk to @alchemist.
But for front end HTML, CSS ( Sass / Scss ) and Javascript more than enough.
HTML and CSS are easy to learn, learn the basics and thrn go to javascript.
I would recommend learning by building. That's how I did it back in 2018...
Edit:
Tony Alicea - Javascript, the wierd parts.
Amazing course. Look for it in YouTube, he has a 3h intro I think. Then he has the complete in udemy
I wouldn't rely too much on Codecademy. I tried it myself as a jr dev when learning JS and have since seen many others do the same with poor results. Basically, you're better off writing code on your own projects, even tiny ones, and seeing how things fit in context instead writing it on their web page!
JS is also really hard for a beginner. The above is great advice.A lot of people basically do just that through WordPress, which will let you do a lot with "no code", as it's branded these days. It gives a great entry point into learning HTML and CSS. From there, you can learn more JS and PHP and migrate easily into a full stack dev.
If your goal is to actually learn how to code (as opposed to work on a specific project now), I'd strongly recommend Ruby. It's extremely beginner friendly and optimized for dev happiness like no other language I've encountered. It doesn't take much before you can learn Rails, either, which is probably the most indie-friendly web dev stack.
This single free guide is enough, and it's an excellent primer: https://pine.fm/LearnToProgram/
After you've made a few things and have a feel for various programming concepts (e.g. variables, functions, classes, scope, modules, inheritance, lambdas etc), it will be much easier for you to jump into other less well-organized / beginner-friendly languages.
Whatever you do, don't get bogged down worrying about Docker, Webpack, or other tools common in larger companies. Learn how to code first, then worry more about the rest of the surrounding complexity if and when you need to. I highly recommend listening to @levelsio's IH podcast!
Fantastic! Thank you @Michael_Andreuzza
I struggled for a long time to learn to code, and it basically came down to motivation. It is hard to motivate yourself to code for the sake of it. What I found motivated me 100X was actually having something I wanted to build. If you wanted to learn how to do carpentry without a project in mind, it would be pretty hard. Whereas if you needed/wanted a kitchen table, then you have something to work towards. If you have something in mind already that's great. If not just think of some tool that you think you might use in your everyday life, even if nobody else will ever use it, and you'll eventually abandon it. You just need something real you want to build.
With something I wanted to build in mind I started thinking of what the simplest version of this thing I could build that would actually be usable. This was helpful because a lot of what blocked me from getting started in the past was being intimidated by all of the things I needed to learn. With a really simple vision for my product in mind it clarified for me what I needed to figure out first.
I would avoid learning frontend JS frameworks like React, Vue or Angular to start. I would stick to learning how to use some basic full stack web development framework. I personally learned Flask because it was simple. I built an full stack app with Flask, using simple templates with minimal Javascript/Jquery.
I would just build a simple CRUD application to start, and then figure out how you can spruce things up with a bit of Javascript here and there.
As for what languages/frameworks to choose, there are so many different options, and really anything is probably fine. I like Python as a language, and found Flask easier to figure out than Django for whatever reason. However, you could just as easily use Javascript and a framework like Express (which uses Node). Or you could try Ruby and the framework Rails. An obvious advantage of using Javascript and Express is that when you get into more advanced frontend stuff you already have some Javascript under your belt.
If you were interested in learning Flask by the way I would recommend the following:
https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world-legacy
https://www.youtube.com/user/TechGuyWeb/videos - lots of great Flask vids on here if you browse a bit
https://www.youtube.com/channel/UC-QDfvrRIDB6F0bIO4I4HkQ/videos - lots of great Flask vids on here too if you browse a bit
https://www.youtube.com/playlist?list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH - A full Flask tutorial
Basically what you want to figure out to start is how to handle all the basic CRUD HTTP operations using a web framework, and to save that to a database. In other words:
Once you figure out how to do this with a web framework you have a foundation you can build on.
IMO there is a lot of bad advice out there from experienced developers on where to focus when you're getting started. The reason a lot of it is bad advice is because they're giving you direction based on what they're struggling with now when they already have experience. So they're trying to optimize for helping you avoid some problem they encountered later on in their learning curve. They're trying to prevent you from writing shitty code, because they hate dealing with shitty code. When you here really strong opinions about "this language/framework is the best", I'd take that with a grain of salt.
My advice would be do whatever it takes to make it easier for you to reach the "this is fun" threshold. And the best thing you can do to reach that threshold is to reach a point where you can build stuff that people can actually use. This means that you will almost certainly start out writing shitty code. It will be code that makes experienced developers cringe, but your users won't see that. All they'll see is a product that works, and the satisfaction you get from having a product that works will be what gives you the motivation to keep learning, and getting better.
This was extremely helpful and a HUGE dose of information I needed to hear. Thank you for taking the time to write this up.
I have a few ideas of things I'd like to build, so I guess it comes down to messing around and learning to build up to my ultimate goal.
This may seem dumb, but where do I start building like a web app? Code Editor, etc.? If so, which one?
I personally use Atom, but VSCode is really popular. Send me a DM and I’ll be happy to chat about different things you might want to check out.
Fantastic! Thank you!
Try Visual Studio Code + Sublime Text 3
I would go with JS or Python as a first language. Codeacademy seems fine, there's also https://www.freecodecamp.org/.
Thank you :)
Codecademy is fine to get started. I currently mentor at a coding bootcamp and help people go from zero to jnr developer. If I could give my advice, start with frontend, and keep it simple. Learn HTML & CSS then some Javascript. Start with a small project - maybe a personal portfolio website or a landing page for a startup.
Learning to code is a fantastic skill, go for it!
I learnt on codecademy, it was super fun & easy - I highly recommend it!
Hey MPS! I’m in the progress of building out my first app and it’s been an amazing journey so far!
The power you get with modern day web technologies is beyond believe with React and Firebase you can build out most use cases and supercharge your business ideas!
The only course I recommend is freeCodeCamp Full Stack React Firebase. It is 12 hours long and make sure you understand each point he makes.
If you were to spend around 20 hours around it I’m sure you will be able to build out anything you have in mind in the future.
If you need the foundational knowledge of software development, make sure to check out both CS50 and CS50 beyond 2019. Amazing demos, intuitive and greatest learning resources from Harvard completely for free.
Take the #NoCode road! I've always programmed a bit, however am not an engineer.... The #NoCode movement has given me the tools to montize my business experience, while developing tech solutions with very basic coding knowledge and fantastic nocode tools.
i promise
Don't start with Rust. Never look at C++.
On a more serious note, I would recommend just start with a small project which motivates you and learn all else by doing.
Thank you!
Firstly - It's not crazy :) Learning to code is great fun and I've found it to provide leverage in all sorts of ways, even if you don't plan on becoming a full-time dev.
A few things that I've found useful when trying to learn.
Start with the basics. Lurking Hacker News can send you down all sorts of rabbit holes of shiny new tech, this is a trap.
Split time between consuming content and building. 6 hours of youtube is worth less than struggling to build a simple feature for 6 hours
Don't try and memorize stuff. I've seen people writing notes and using flashcards to try and remember methods and functions. IMHO this is a waste of time. Get use to thinking through problems, breaking them down and then if you need to look up the right command on MDN or Stack Overflow
Agree with other commentators on the power of building projects. I would suggest picking small projects that you can complete. Being able to finish something early on can be a huge motivator. It won't be your final goal but building out a bunch of small practice projects was personally very useful
Free code camp is great.
Pick the tech stack that fits with what you want to be able to build. Personally, this was HTML/CSS/Vaniall JS to start with and then picking up Node/Express & React later on.
Whatever you do don't start with a JS framework from day one. Attempting to learn React without having a decent understanding of JS/HTML/CSS will be painful
Hope this helps :)
This helps tremendously! Thank you so much!
I've tried several types of code tutors, with varied levels of success. What's been more useful than anything else is using code to make things I like and learning as I go.
I learned Python by making games in ren.py
I learned HTML and CSS by making visual poetry in Twine
I recently decided to learn Javascript so I made a project making fun of a transphobic question I'd heard before (you can play it if you want! https://grendeltwine.github.io/GenderGame/ )
It's a LOT of googling, alternates between lightning fast and glacially slow going, but it's zero pressure and a really natural way to learn. I'm forced to constantly choose if something is important enough to me to learn to push through the tricky bits, or if I'd rather learn a workaround. And at the end I have a final product I can show my friends, and I get a great sense of accomplishment - one that just finishing lessons never gave me.
TL;DR Try finding a small project you'd like to make and self-teach your way through it.
This may seem dumb, but where do I start building like a web app? Code Editor, etc.? If so, which one?
Not dumb at all! I had the same question. The answer depended on what I was doing - for HTML and CSS, Twine was the app. For Python, ren.py was - both of these are free game making apps, btw.
Javascript was tricker. I did some research and ended up downloading a program called brackets to use because it had a side-by-side window feature and a live preview to check what you're making. I'm sure there's other, more beginner-friendly options, but I liked it!
That makes me feel better! Thank you for sharing!
Thank you for this excellent advice!
I have a 30-day email course for newbies who want to learn how to code. You can sign up here... https://forms.gle/6mJUQ9rgdC1sVgAP8
I started it because I run careermove.io and most of my readers are interested in building their own products by themselves.
Thanks for sharing!
This comment has been voted down. Click to show.
Why did you get downvoted?
No-code is a legitimate way to quickly build an MVP to test your idea.
The OP wanted to learn how to code.
The parent suggestion was similar to telling a person who expressed a desire to learn how to read, "if your goal is to get through texts quick, try audio books!" There's value in getting through a given text, but the goal was to learn how to read!