So, you want to learn how to code? Here’s What You Need To Know to get started. This is basically a list of my favorite programming books, talks, podcasts, newsletters, websites, and general tips for learning more about programming. HMU if you have any additions you want to make to my list!
I love keeping my questions/answers public so others can learn and share from each other, feel free to drop a question on my GitHub AMA if you feel comfortable ๐
First, ask yourself “Why do I want to code?”
The field of programming is absolutely massive and there are so many different programming languages and things to do with it. Ask yourself, do I want to learn how to make websites? Am I interested in creating robots? Can constructing a neural network for machine learning be my thing? Do I just need to make my boss happy and learn how to make a SharePoint site? Each answer would lead to a different recommendation for learning and could affect which programming language(s) you should start learning.
If you are learning to code because you are looking to make a career change, then I might recommend that you start looking into one of those Coding Bootcamps. I was personally a technical instructor at a Bootcamp for several years in Honolulu, Hawaii and I know that they can be a great, albeit expensive, way to get into programming as a profession. However, if you don’t need something as intense because you are looking to make a website for your friend’s new band then a Bootcamp might be overdoing it.
Picking the perfect programming language for you
Okay, so now you know WHY you want to get into coding, but now you need to pick a programming language to learn. Which one is right for you? If you were to Google, “Best programming language,” you will likely stumble into a StackOverflow or Reddit flame war with people shouting very loud and confidently that their programming language is the best and everyone else’s sucks.
Here’s my take on this. The top three most used programming languages in the world are:
- Java is typically used at bigger or more “enterprise” type companies and projects. It’s going to be server and back-end heavy. It’s a safe pick, as Java has been around forever and it remains very stable.
- Python is a great general programming language, and coincidentally, it was also the first language that I taught myself. Python has been blowing up in the data science and machine learning spaces as well. So it’s great if you want to build a website or a AI that’s capable of taking over the world. It’s up to you!
- JavaScript is personally my favorite programming language and the one I usually recommend to people getting into programming. It’s the language of the web and today, with Node, you can build servers and the front-ends of websites with one language to rule them all. This is a big deal, because now, you only need to learn one language to build a complete website!
Try a couple of free online courses
First, let’s start with some of my personal FREE websites for learning to code. I would definitely start here if you are just starting to learn. You might find out that programming is not for you, and you haven’t dropped any serious coin.
Codecademy is the perfect place for aspiring coders to start learning. Interactive projects and quizzes let you get the hands-on experience you need to really grasp the concepts youโre being taught. There are separate courses for each topic: you might start out with Make a Website or Learn HTML & CSS, and progress to JavaScript, SQL, and more. Codecademy also provides forums for discussion, programming language glossaries, and blog posts and articles to help you as you learn.
If you donโt mind practicing solo, check out The Odin Project, a free option that pulls together some of the best open-source content for turning a coding newbie into a programmer.
FreeCodeCamp not only breaks down coding concepts into small chunks within your web browser, but it also pairs each concept with a relevant exercise that you have to solve before moving on to the next topic. This way, you canโt just skip ahead to the fun stuff; the site really forces you to debug your code as you learn.
Other great options:
- udemy.com, pluralsight.com, lynda.com to do free and paid ๐ด online code courses.
- egghead.io to learn the best JavaScript tools and frameworks from industry pros ๐.
- alligator.io to quickly understand seemingly-difficult frontend code concepts ๐ฎ.
- leanpub.com to easily write, publish and sell in-progress and completed eBooks ๐ and online courses.
Just start building something
My personal favorite way to learn something is just to jump in and try to build something. Start with something like a new personal blog or a Twitter clone and just start Googling until you figure it out. This has been my way of learning to code, but it’s not for everyone. I just struggle to stay awake while reading books or watching YouTube videos and I find that I haven’t fully grokked a subject till I’ve actually done something for myself.
Other ideas
- Try one of those kids toys that help kids learn to code – they look awesome! Something like:
- https://www.playpiper.com/products
- Build a Slack or Alexa bot
Feel free to check out my projects and blog, if you need some inspiration:
Communities
- Smashing Magazine – Useful front-end & UX tips, delivered once a week.
- Frontend Masters – Advance Your Skills with In-Depth, Modern Front-End Engineering Courses
- css-tricks – Learn everything about CSS . Period.
- javascript.com – Start learning about JavaScript .
Websites
Listed below are some of my favorite ways to stay up to date. I hope that you can use them as you start your journey into the world of programming. Best of luck!
- Mozilla Developer Network for frontend (Html, CSS, Js, etc.) code reference and learning ๐ค. This will be your code holy book ๐ and you should follow it religiously!
- web.dev to learn about web ๐ท fundamentals from Google Developers ๐จโ๐ป.
- v8.dev to learn about Googleโs open-source high-performance Javascript and WebAssembly engine ๐ฆธโโ๏ธ that empowers Chrome and NodeJS.
- css-tricks to learn everything about CSS ๐ป. Period.
- javascript.com to start learning about Javascript ๐ผ.
- freecodecamp.org to build frontend projects and collaborate with the community ๐จโ๐ซ.
- codecademy.com, udemy.com, pluralsight.com, lynda.com to do free and paid ๐ด online code courses.
- egghead.io to learn the best JavaScript tools and frameworks from industry pros ๐.
- alligator.io to quickly understand seemingly-difficult frontend code concepts ๐ฎ.
- leanpub.com to easily write, publish and sell in-progress and completed ebooks ๐ and online courses.
- frontendfront.com to stay updated with the latest web news, trends and conferences ๐ฃ happening all over the world ๐.
- medium.com to discover, read ๐ and write ๐ related articles.
- twitter.com, instagram.com to follow people you like, discover what they do ๐ and share your work.
- producthunt.com to discover and submit ๐ฏ new products.
- codepen.io to build, test ๐ง and discover frontend code.
- codesandbox.io to build โ๏ธ and share web applications using cutting edge technologies.
- github.com to host and review ๐ง code, manage projects and build software ๐ค alongside millions of developers.
- stackoverflow.com to get answers to your toughest coding questions ๐, share knowledge with your coworkers in private, and find your next dream job.
Newsletters
- Changelog – [Weekly]
- FullStack Bulletin – [Weekly]
- Tech Productivity Tips – [Weekly]
- SeeCFP – [Weekly]
- TechDotMN – [Weekly]
- JavaScript Weekly – [Weekly]
- Better Allies – [Weekly]
- Pointer.io – [Weekly]
- Node Weekly – [Weekly]
- Pony Foo – [Weekly]
- CSS Weekly – [Weekly]
- Codepen Spark – [Weekly]
- CSS Tricks – [Weekly]
- Codrops – [Weekly]
- Web Tools Weekly – [Weekly]
- OโReilly Newsletters – [Weekly]
- Javascript weekly – [Weekly]
- React Status – [Weekly]
- WDRL Newsletter – [Weekly]
- Responsive Design Weekly – [Weekly]
- Frontend Focus – [Weekly]
- Smashing Mag newsletter – [Weekly]
Podcasts
- The Changelog โ [Twice a Month] โ Interview
- Syntax – [Weekly] – Interview
- Hanselminutes – [Weekly] – Interview – Fresh Tech Talk from Fresh Faces
- Code Newbie โ [Weekly] โ Interview, Beginner
- JavaScript Jabber โ [Weekly] โ Interview
- IoT Podcast โ Internet of Things
- Software Engineering Daily – [5 episodes / week]
- Soft Skills Engineering Podcast – [Weekly]
- Front End Happy Hour โ [Twice a Month]
- Full Stack Radio – [Twice quarterly] – Interview
- The freeCodeCamp Podcast – [Weekly] – Interview
- The Stack Overflow – [Weekly] – Interview
Twitch
- Handmade_hero – 34.9K followers
- Noopkat – 28.5K followers
- Awesome Developer Streams Awesome
YouTube
- Computerphile – 1.88M subscribers
- Anna Lytical – 6.79K subscribers
- Scott Hanselman – 121K subscribers
- Fun Fun Function – 251K subscribers
- Microsoft Developer – 286K subscribers
- Michael Reeves – 5.92M subscribers
Conferences
- Open Source North – Minneapolis, MN
- HalfStack – London, United Kingdom
- JSConf – Multiple
- JSFoo – Bangalore, India
- VueConf US – Austin, USA
- OpenJS World – Austin, TX
- React Week – New York, New York
- CityJS – London, U.K.
- JSNation – Amsterdam, Netherlands
- DinosaurJS – Denver, CO
- ConFoo – Montreal, CA
Books
- Introduction to Algorithms by Cormen, Leiserson, Rivest & Stein
- Design Patterns by the Gang of Four
- The Art of Computer Programming by Donald Knuth
- Gรถdel, Escher, Bach by Douglas Hofstadter
- Hackers: Heroes of the Computer Revolution by Steven Levy (free ebook)
- JavaScript – The Good Parts by Douglas Crockford
- Zen and the Art of Motorcycle Maintenance by Robert M. Pirsig
- The Tao of Programming by Geoffrey James (free ebook)
- The Productive Programmer by Neil Ford
- Introduction to Functional Programming by Richard Bird
- Express.js Guide – Azat Mardanov (Leanpub)
- High Performance Browser Networking – Ilya Grigorik
Talks
(There is another great list of talks about JS to be found here)
You can check out my Top Tech Talks of all time here:
- Node.js in 20 Minutes [00:23:08] by Edmond Meinfelder
- Crockford on JavaScript by Douglas Crockford (it’s 10 hours long!)
- Really. JavaScript. [00:46:10] by Douglas Crockford
- Monads and Gonads [00:49:48] by Douglas Crockford
- Introduction to Node.js [00:58:18] by Ryan Dahl
- Is Node.js Better [00:41:43] by Brian Ford
- Creating A Scalable JavaScript Application Architecture [00:41:54] by Nicholas Zakas
- Large Scale JavaScript Application Architecture [00:50:40] by Dan Lynch
- Dissecting WebGL [01:11:04] by Justin Windle (you might want to take a look at the slides, you cannot really see them well)
- What the heck is the event loop anyway? [00:26:53] by Philip Roberts
- Functional programming patterns for the non-mathematician [00:29:58] by Brian Lonsdorf (beware; the pace is somewhat high)
- Hey Underscore, You’re Doing It Wrong! [00:36:31] by Brian Lonsdorf
- Immutability, interactivity & JavaScript [00:26:20] by David Nolen
- Classical Inheritance is Obsolete – How to Think in Prototypal OO [00:43:18] by Eric Elliott
- j2me.js – a multi-threaded Java VM in JavaScript [00:44:10] by Andreas Gal
- If you wish to learn ES6/2015 from scratch, you must first invent the universe [00:25:49] by Ashley Williams
- Constraint programming in the browser [00:28:15] by Adam Solove
- Benchmarking JavaScript [00:40:54] by Vyacheslav Egorov
- ECMAScript 6 & Web Components [00:36:11] by Brian LeRoux
- Improving Your Workflow With Code Transformation [00:30:18] by Sebastian McKenzie
- Go To There and Back Again [00:49:06] by Douglas Crockford
- The Birth & Death of JavaScript [00:28:44] by Gary Bernhardt
- Community.js [00:21:40] by Chris Williams
- An End to Negativity [00:27:26] by Chris Williams
- Life is Terrible: Let’s Talk About the Web [00:32:07] by James Mickens
- Virtual Machines, JavaScript and Assembler [00:25:57] by Scott Hanselmann
- Delivering the goods [00:23:25] by Paul Irish
- Parallax Performance [00:32:01] by Paul Irish
- React: Rethinking best practices [00:29:32] by Pete Hunt
- React: RESTful UI Rendering [00:36:15] by Pete Hunt
- Hacker Way: Rethinking Web App Development at Facebook [00:44:36] by Tom Occhino, Jing Chen & Pete Hunt (it starts pretty slow and marketingy, but gets much better over time)
- Reactive Programming Overview [00:09:18] by Jafar Husain (very concise and dense)
- Immutability: Putting The Dream Machine To Work [00:22:06] by David Nolen
- How I learned to Code by Making 180 websites in 180 days [00:22:03] by Jennifer De Walt
- How NOT to Measure Latency [00:42:59] by Gil Tene
- C10M – Defending The Internet At Scale [00:47:53] by Robert Graham
- Upgrading the Web [00:41:19] by Douglas Crockford
TikTok
- @JoeKarlsson
- @theekrystallee
- @shmemmmy
- @liz.kenyon
- @astro_alexandra
- @shanselman
- @misodope
- @ainlovescode
- @programm.r
- @jondouglas
- @theannalytical
- @jrswab
- @mongodb
Twitter (AKA My ‘Code Crushes’)
- @JoeKarlsson1
- @editingemily
- @anildash
- @alicegoldfuss
- @seldo
- @IanColdwater
- @cassidoo
- @mipsytipsy
- @jennschiffer
- @sarah_edo
- @wesbos
- @bendhalpern
- @kelseyhightower
- @dan_abramov
- @laurieontech
- @abbyfuller
- @shanselman
- @TatianaTMac
- @tlakomy
- @TartanLlama
- @gitforked
- @theannalytical
- @swyx
- @lara_hogan
- @ashleymcnamara
- @QuinnyPig
- @b0rk
- @malchata
- @changelog
- @jenlooper
- @codingchaos
- @ant_auth
- @_maiyerlee
- @KateKuehl
- @hopefulcyborg
- @etupper
- @addyosmani
- @defunkt
- @fat
- @jordwalke
- @mbostock
- @sindresorhus
- @goloroden
- @jeresig
- @rauschma
- @yakudoo
- @Mamboleoo
- @slicknet
- @rem
- @BrendanEich
- @thespite
- @mrdoob
- @tmrDevelops
- @keithclarkcouk
- @davidwalshblog
- @twholman
- @hakimel
- @tjholowaychuk
- @iamdevloper
- @PHP_CEO
- @50NerdsofGrey
- @SwiftOnSecurity
- @migueldeicaza
- @codinghorror
- @thepracticaldev
- @spolsky
- @jonskeet