Monday, April 18, 2016

Best Resources to Learn JavaScript



… was the phrase I googled many times when I was starting to learn how to code. Once I typed these words and hit enter, I got hundreds of results, each recommending different learning path to pursue. This was really intimidating for me because I had no idea as an absolute beginner which resources to choose.

…there were (and still are) so many choices and opinions on how to effectively learn JavaScript. 

Should I believe all of those who are writing articles about this topic on various sites and blogs?
Who are they anyway? ... experts, beginners or do they even know how to code? Should I believe unknown individuals who express their views in the forums?

Should I believe all those opinions claiming 'this is the right way to learn JavaScript' which can be found on a variety of sites offering paid online courses? Do these sites really want to help me to learn or they just want to sell their product?

What should I do?



I guess that obvious reply to all my concerns is: 'Just google it, dude.'

It's true that you can google all of these issues. But it will make your search for the right learning path only little bit easier. Again, you'll find tons of opinion and reviews. All of them written by the people with different backgrounds. So, it will be challenging to choose which opinion are the best for you.

In the end, you'll be back in the situation described at the beginning of this post - you don't know which resources to choose.
 
A couple of months ago, I was in this situation too. There were so many options and I had no idea where to begin...

If you are starting to learn programming, I bet you are dealing with similar questions as I did back then.

I am writing this post to help you find the right answers based on my own experience. Because my aim is not to overwhelm you with resources, as the whole internet does (!), I will only mention resources that I studied from and only those I consider as the best ones for beginners. Moreover, I will organize them in a order I deem they should be studied. If I had studied these resources in that order from the beginning, I am sure that my learning process would have been faster and more effective.

Probably you are now asking yourself a question: 'Why should I believe this guy?'



My answer is: 'Well, you don’t have to.' I just want to share with you one possible way of learning JavaScript which stems from my personal experience. I want to share with you resources that helped me (and are still helping) significantly on my way to become a web developer. I hope they will help you as well.

Just take it or leave it!

A I mentioned, choosing the right resources to learn from in the field of web development might be challenging, especially for an absolute beginner. I presume that you don’t want to invest significant sum of money (e.g. bootcamps), so I am going to talk only about books and online courses which are affordable.

The problem with books and online courses about web programming for beginners in general is that they are not written or made by beginners themselves (I know that this last sentence sounds weird, but just keep reading!). This simply means that authors of these books and courses have different perspective than someone who is only a beginner. In other words, they will almost always presume that you already have some knowledge about programming.

The problem is that every one of us knows different stuff than the others. I have experienced this myself a couple of times and it was kind of frustrating because I was not sure if the programming was so difficult or I was just dumb.  In fact I was only lacking some basic knowledge that the author presumed I had.

At the beginning, you just don’t know what you don’t know.



Because I don’t want you to have similar experience, I am sharing with you a list of JavaScript resources. They are organized in the order, I consider understandable if you are starting as an absolute beginner in web development.

  1. The Web Development Bootcamp (online course)

Web Developer Bootcamp


    • this course is for anyone who wants to learn about web development, regardless of previous experience
    • this course covers not only front-end technologies (HTML, CSS and JavaScript) in detail, its second part also covers back-end stuff(Node.js, Express.js, MongoDB, deploying) as well
    • what I love about this course is that the instructor explains all the important concepts in a very accessible way and offers exercises with solutions as well

  1. Jon Duckett – HTML & CSS (book)


    • if you feel that you need more HTML and CSS knowledge, I recommend this book as a companion to the mentioned course (however I don’t consider it necessary)
    • the layout of the book is visually appealing and the language is easy to understand 
    • this book is really targeted at beginners without a technical background, and it does an exceptional job in serving this audience

  1. Jon Duckett – JavaScript & jQuery (book)


    • this book is one of the best resources for understanding the basics of JavaScript language and serves well as a companion to the course
    • it is great for  the visual learners, as just about every remotely difficult concept is illustrated in detail with helpful notes
    • if you consider books with lot of text boring, you will love this book even more
    • all of the code examples found in the book are available online for you to follow along, and every line of code is explained in clear detail

  1. Free Code Camp (online course)


    • this course offers tons of exercises - it starts with HTML, CSS and JavaScript exercises separately and then it will take you through the range of projects where you combine all these languages together and create some cool and useful web apps
    • you will also deep dive into algorithms along the way
    • it offers front-end exercises and back-end as well
    • I encourage you to combine it with the already mentioned resources – remember the best way how to learn to code always means BUILDING PROJECTS

  1. Anthony Alicea - JavaScript: Understanding the Weird Parts (online course)


    • this course will take you further into the JavaScript realm
    • it explains what happens under the hood of the JS in a very beginner-friendly way
    • this course will cover advanced concepts such as objects and object literals, function expressions, prototypical inheritance, functional programming, scope chains, function constructors (plus new ES6 features), immediately invoked function expressions (IIFEs), call, apply, bind, and more
    • what you'll learn in this course will also improve your abilities in Javascript-based technologies such as Angular.js or React.js

  1. Kyle Simpson – You Don’t know JavaScript (book series)

 

    • these books serve as a great companion to the Weird Parts course since they also offer explanation of more advanced JS concepts
    • however, they cover advanced JS concepts in more depth and are thus more comprehensive than the Weird Parts course
    • plus they’re free!
    • 6 books in the series:
      • Up & Going:  By learning the basic building blocks of programming, as well as JavaScript’s core mechanisms, you’ll be prepared to dive into the other, more in-depth books in the series.
      • Scope & Closures: Covers closure primarily, which is one of the most important foundational topics of JavaScript.
      • this & Object Prototypes: Covers the mystery of how the this keyword works, and then tackles the misconception that JS has classes. Instead, JavaScript has prototype delegation, and we should embrace that rather than trying to fake class orientation.
      • Types & Grammar: Goes deep into coercion mechanism. I encourage you to dig into it and learn it, because coercion can help improve your code if you learn how to use it properly.
      • Async & Performance: Explains why callbacks for async programming are insufficient, then goes deep into promises and generators as much better async patterns. Also covers optimizing and benchmarking JS performance.
      • ES6 & Beyond: Covering all the changes to JS coming in ES6, as well as forward looking to beyond-ES6 evolution on the horizon.

The key to learn anything in programming and beyond is always to combine different resources



Don’t believe those who claim that a single book or a single course can teach you everything you need to know about web development! This would be a huge mistake because you will be tempted to follow only one single perspective which might not be the right one for you (or not the right one for anyone).


If you like this post, or if you have any suggestions or critique, feel free to write a comment below. I would greatly appreciate it.

Tuesday, April 12, 2016

My First Post: Why I Started to Code



In this post, I would like to briefly introduce myself and tell you why I decided to become a programmer.

My name is David and I love to learn new things and meet new people. A couple of years ago, I graduated from law school and start working as a lawyer. At the law school I did a lot of extracurricular activities since I was very interested in the law. I always thought (surprisingly) that I am going to be a successful lawyer one day. However, after a few years of working in the legal field, I have begun to have doubts about the direction of my career.


I felt that the legal job was not satisfying to me anymore.


So I decided to look into other fields which I found interesting. I checked some online course on sites such as Coursera, edX and Udemy. Because I love cooking, I enrolled in the Science & Cooking first. This course was great and I definitely recommend it for anyone who wants to learn science that lies behind the creation of delicious meals. However, this course was just a hobby for me.

When I was searching for other online courses, I came across many programming-related courses. First, I was likeHow can I possibly code? I said goodbye to sciences after finishing high school and I was happy for that.” Nevertheless, I bought one of the courses – The Web Developer Bootcamp - which was kind of a new at that time and was aimed (as the title suggests) on front-end as well as on back-end web development. 


This was the moment, when my journey to become a web developer began.



As I went through this course and experienced coding in HTML, CSS and in JavaScript, it was a brand new feeling for me. “Wow, I can now create something from nothing which can be even useful. Plus I don’t have to memorize tons of information to be able to do that.” It was primarily this creative process which is involved in programming that excited me the most. The added value of this particular course was also a Gitter room where I could chat with other students and get more coding tips.

When I finished the JavaScript part of the course, I was thinking that I am learning some really cool new stuff but I was thirsty for more practical exercises. And then I have discovered the Free Code Camp, the site which purpose is to teach you how to code by doing tons of exercises.

It seemed to me that The Web Developer Bootcamp and Free Code Camp were two puzzle pieces fitting together – theoretical background + tons of exercises.


These two courses became basis for my journey to become a web developer.
 

Web Developer Bootcamp


 
Free Code Camp

At the time of this writing, it has been already a couple of months since I have written my first HTML tag. As every self-taught programmer (at least I hope it is not just me!), I know how challenging learning to code can be. This is also one of the two reasons why I started this blog. Although, I am not an absolute beginner, I hope I can convey to all of you, through my future blog posts, an original perspective on how to successfully learn to code.

Via this blog I also want to share challenges I am going through every day from the beginning of my coding journey as well as projects I am working on and other programming-related topics.



To sum up, two reasons that lie behind the creation of this blog are:
sharing my experience, projects and ideas 
document my coding journey