Although self-learning is great, it does come with its pitfalls. Going through the posts of budding developers, it soon becomes apparent that two issues are becoming increasingly common: being stuck in tutorial hell and impostor syndrome. Being a teacher, I started thinking about combating this problem and that basically became the premise of my ebook Boost Your Confidence: Vanilla JS.
The ebook (presented in a course format) is currently in its alpha release. The main reason behind this early release is to gauge how helpful people find my approach. Below is the introductory section of the ebook which details what it covers. I hope it proves beneficial to all the self-learners!
Please click here to see the course sales page (free preview available)
For future updates, you can follow me on twitter: Link to twitter profile
Boost Your Confidence: Vanilla JS is targeted towards beginner JavaScript developers who find themselves stuck in tutorial hell or are going through what is called impostor syndrome. These two problems often go hand-in-hand and are becoming increasingly frequent.
It is fairly common these days to see someone post that even after following a detailed tutorial (or a number of them), when they finally tried to do something on their own, they simply couldn't; as a result they just looked for and followed more tutorials. But, for some reason, even after completing courses and following various tutorials, they find themselves stuck in the same loop. This is called being stuck in tutorial hell.
Also common is when someone can actually build stuff on their own but feel like they don't really understand all the details or are missing crucial bits of information. As a result they think that they should still study/learn more before they take a serious step in this direction like applying for jobs or start looking for freelance work. This is the impostor syndrome.
Both of the problems described above can be tracked down to one, or all, of these:
By following random tutorials information was not acquired in a structured manner. Structured learning gives the learner clarity and confidence in what knowledge has been acquired. This clarity also results in increased confidence in oneself. This is not to say that one feels like they've learned everything (that never happens), but rather that one becomes confident in what has been learned and what remains to be learned.
Repetition wasn't done. Short-term memory can be very tricky. One follows a tutorial, even when typing along, understands it and feels like the material has been learned. But if the material is not repeated in some way the short-term memory soon fades and the tutorial cycle begins again. To counter this, repetition must be done (like a lot) and should be done on your own. Repetition will finally commit the material to memory.
The traditional educational institute actually combats both of the above points. Courses have a structured syllabus and tests/quizzes are given as an incentive to repeat the material covered in the class. At the end of the day, it is really up to the student to utilize the presented opportunity to its fullest.
If we look at the responses to the people going through the problems described above, we see that the most common response they receive is something along the lines of just build stuff. While this is good advice, the problem is that a beginner needs at least some hand-holding to get started. Again, the traditional institute does this inadvertently by scheduling TA sessions and grading tests.
In this book, I've tried to address the above mentioned issues.
Firstly, each section starts with a knowledge base chapter which is supposed to give a concise but organized introduction to the section's topic. This should serve as a solid foundation before moving towards the problem set.
After the knowledge base, comes the problem set. This is where the reader is supposed to exercise problem solving and, just as importantly, apply the knowledge gained previously so that it actually sticks. To avoid the trap of tutorial hell, an extra step, called prompts, is introduced between providing the problem and its solution.
The idea is that initially the reader is presented with only the problem. The reader should attempt to solve the problem just from the statement. But in case some guidance is needed, or the reader gets stuck, prompts should serve as a set of hints to guide the reader in the proper direction. Hopefully this provides just enough support without giving the whole solution away.
In the end, the solution is also provided but this is mostly to verify the results. Additionally, there are usually more than one way to solve the same problem so hopefully the provided solution serves as an alternate. Reading other people's code is an excellent exercise in and of itself.
What is covered?
Broadly, this book covers two topics:
DOM manipulation
This section is presented in two parts. The first part deals with the tools that deal with selecting, searching, styling, and traversing the DOM nodes. The second part adds to that knowledge by going over event processing. This would include responding to user's clicks, typing, form validations, etc.
Dealing with APIs
This section deals with talking to 3rd party APIs. This would include sending requests to an API server, receiving and processing the data, dealing with asynchronous techniques, and the standard Fetch API.
The above two topics are the bread and butter of any JavaScript developer. They collectively represent the foundational knowledge that every JavaScript developer must possess.
Who is this book for?
This book is not an introduction to JavaScript. It assumes that the reader has at least an introductory knowledge of HTML, CSS, and JavaScript and is looking to build on that foundation through repetition and exercise. This book is for you if you know:
- how to create a basic HTML page
- what tags are in HTML and what are their attributes
- basic CSS
- how to select element(s) by tag name, id, classes
- styling selected element(s) using CSS properties (e.g.
width
,height
,color
,font-family
, etc.).
- basics of JavaScript
- variables (
var
,const
,let
) - basic data structures (Arrays, Objects)
- conditional statements (
if
,else
,switch
) - loops (
while
,do..while
,for
,for..of
,for..in
)
- variables (
Basically if you've completed an introductory course on HTML, CSS, and JavaScript then this book should serve as an excellent next step.