Free training courses are available through sites like CodeAcademy, CodeSchool, etc. These courses often focus on language-level syntax. Languages & topics like: Ruby, Java, Python, JavaScript, HTML, CSS, RegularExpressions, etc. At the end, you may even get a CERTIFICATE! (note the overemphasis) In this post, I’ll be sharing some insights on when and how to use these courses.
One Thing At A Time
"Will these free courses help me build real programs?" Yes and No. Let me explain.Courses like CodeAcademy, CodeSchool, even the ThinkPython book are excellent for learning syntax.
For example, if you don't know anything about the fundamentals & concepts of HTML (or CSS, or JavaScript, or Python, or whatever), it's a great way to get a taste of it. This will help grow your familiarity with the SYNTAX and usage of the coding language.
What they’re NOT good for is learning how all of the pieces of a system are built and fit together.
"Should I spend time learning about individual languages & tools through free online courses & books?" ABSOLUTELY. But here's how it works.
When you’re learning to code, it’s WAY too much for you to learn how all of the pieces interact, if you don’t yet know the pieces individually.
Don’t try to learn how systems of code fit together before you learn the basics of writing code in that language. Too many things will be unfamiliar at once. You’ll feel completely overwhelmed and unable to gain traction on any one of them.
A better approach of learning to code is modeled after one of the core unix design principles - do each part in little chunks, and then later on those little parts can be combined easily. Similar for learning to code - focus on learning a few coding languages first (eg: html/css/javascript/ruby), then you'll easily be able to fit them together later.
This enables you to focus on one thing at a time, and then use those simple pieces to build something grand - even if that grand thing is just your knowledge.
Applying that principle, your first goal should be to learn some coding languages and tools. After trying various approaches, I have found that a good online tutorial in a new language helps with initial familiarization. Then jumping into reading or documentation has much more context to apply to.
A well-written book for beginners in a language often does the same. This might look like going through an introductory book on the Python programming language (like Think Python), or on the Ruby programming language, or on the JavaScript programming language, etc. Later, when you see code in that language, you'll be able to more easily figure out what the code is intended to do.
Seeing the Value
Great. Now you know some syntax, but you don’t know how it fits together. No worries, now that you have the syntax, it’s just a matter of combining the parts to build out a comprehensive program. You can now focus on learning how things fit together.Most of the good bootcamps follow this general approach. That is, learn the various types of syntax & language concepts you will need to work with (for instance, HTML, CSS, JavaScript, SQL, etc). Then go through a capstone course that teaches you how to combine them into a real application.
So, if you’re frustrated that you’ve been learning a ton of languages through courses and books, but you don’t know how to use them to build something “real”, worry not. All your efforts have been well spent. You've been building up a foundation of code syntax awareness & familiarity. This will enable you to focus more fully on learning how to put it all together.
This is the approach I took to preparing myself for my bootcamps. It enabled me to not get bogged down on syntax-related issues. Instead, I was able to maximize my learning of the systems - the real value of the bootcamps. I stayed at the top of my class and learned a ton.
I'm immensely glad that I was well acquainted with languages & syntax before my bootcamp. Life was much harder for my peers who had to learn both the coding languages and the systems at the same time. Maximizing my bootcamp learnings & my competency made me that-much-more job ready.
So, don’t get discouraged. You’re not wasting your time learning syntax. Do those courses/trainings. Learn that syntax well. You’ll be glad you did.
Maximizing Learnings
When you go through online tutorial, go through a YouTube tutorial, go through a book, or otherwise, make sure you DO all of the coding that they are walking through (literally, type it). That's the most effective way to learn coding concepts. It slightly slows the tutorial, but drastically speeds up your comprehension & retention.If you just read or listen, you're unlikely to remember the content or be able to apply it. Half of learning coding is typing things out. Typing it out builds "muscle-memory". It works. Do it. If you don't, you'll just waste your time.
In the end, all that really matters is building your knowledge & experience towards competency (eventually, mastery), and being able to do useful stuff with those skills.
This is why I joked about getting a "certificate" at the end of a free online tutorial. A certificate doesn't prove you've actually learned or retained anything. I have never seen a company that gave any credibility to tutorial "certificates". Yet, also remember that no one cares where you learned your coding concepts - a tutorial or a graduate school capstone.
The key is to learn & retain as much as you possibly can. For that reason, I take notes on everything I learn. Yes, it means I write everything out twice. I write it first when doing the tutorial, then a second time to record the concept in my notes. Those notes have become a highly valuable personal coding "cheat-sheet" that continually grows.
I have ONE text document that I type all of my cheat-sheet notes into. This makes it super easy when I want to find something. I don't have multiple documents to look for stuff in. I simply do a "find" (search) in my notes document and can quickly find anything.
I create a section for each thing I learn - HTML, CSS, JavaScript, Java, Scala, SQL, MongoDB, Git, Bash/Shell, AngularJS, EmberJS, Ruby, Ruby on Rails, AWS CLI, Python, Spark, etc. I use that cheat-sheet constantly - both at work and on personal projects.
Finding Resources
Don't fall into the marketing trap of paying for courses thinking you'll get better learnings from a paid course than a free course. Cost is not an indication of value.In many cases, you can get the core principles by going through free courses. Once you finish some free courses, just look for other tutorials elsewhere to fill in the gaps. Plus, using a variety of learning approaches is often helpful. Books are great for this. YouTube tutorials can be great.
If you find that you're not enjoying a tutorial, don't worry! Tutorials are not a one-size-fits-all. So, find a different tutorial or learning resource. Find something that works for you. There are plenty to choose from out there.
While google searches are a great way to find free tutorials, below are some links to free tutorials you might find helpful:
CodeAcademy
Learn HTML (webpage structure)
Learn CSS (web styling)
JavaScript Intro (programming language, web interactions & applications)
Learn SQL (interacting with databases)
Web Development Courses (putting the pieces together)
Learn Ruby (programming language)
Learn Python (programming language)
Code School
Learn HTML/CSS (webpage structure & styling)
Learn Javascript (programming language, web interactions & applications)
Ruby & Ruby on Rails (programming language & web application framework)
Learn SQL & No-SQL (working with databases)
Learn GIT (version control used with building any program)
Learn iOS (iPhone programming language)
Learn Android (Android mobile phone programming language)
Learn R (programming language for big-data)
Learn Chrome DevTools (web development browser developer tools)
Learn Docker (packaging services & apps together; deployment tool)
W3 Schools (less interactive, more dry, more detail)
Learn about HTML (web page content/structuring)
Learn about CSS (web page styling)
Learn about JavaScript (programming language, web page dynamic interactions)
Learn about SQL (code for working with relational databases)
Learn about Bootstrap (framework for building/styling webpages)
Little MongoDB Book (learning mongodb)
Docker Tutorial (More Advanced)
Ruby on Rails (More Advanced, less interactive)
Learn Python Programming Language (Using Python 2)
Learn Python Programming Language (Uses Python 3 - recommended)
Comments
Post a Comment