From checklist to craftsman - what JavaScript learners are missing

If you feel like there is something fundamentally missing in your web development journey, causing frustration or fear, read on. It's not an uncommon story.

I have worked with hundreds of students who have battled with JavaScript, and I have personally fought those same battles. Below is a generalized description of the journey we undertake to learn JavaScript and become a web developer, which might be similar or completely different to what you have experienced. I would love to hear your perspective at the end of this article.

This does not begin with the transition from HTML/CSS to JavaScript. I have a separate blog post titled “Why JavaScript is difficult for a visual learner,” which describes how tricky that transition can be.

Instead, I am entering a bit further down the path at the point where your focus starts to shift from learning syntax and fundamentals to the frameworks and libraries you are told “you need to know” to get a job in the industry. For many, this happens during a bootcamp, but it might also be from online courses.

The Checkbox stage

For a frontend developer, that list might include React, Next.js, Styled Components, Tailwind, React Router, Vue.js, etc. For backend, that might include Express.js, Koa.js, AWS, Prisma, Mongoose etc. And then there are all the other important things you need to know, like git, TypeScript, regex, browser APIs, etc. I call this the “Checkbox” stage. Web development appears to be a long list of checkboxes that you must work your way through.

Eventually, once enough of these boxes have been checked (and ignoring the fact that you have probably forgotten most of it - but it's fine, it's all in your notebook, right?), you then shift your attention to building projects with these tools so you can get an awesome portfolio together and start applying for jobs. Now is when the real struggle begins. Using a combination of guided tutorials, Medium blog posts, Chat GPT copy-pastes, and sheer determination, you somehow manage to pull something together.

Despite the struggle, you’re proud of what you have achieved. You’re using modern frameworks, you’re running commands, and deploying the entire thing on your own. Hell, you’re basically a developer.

Except there’s a voice deep down inside that says you’re not. You don’t know what you’re doing.

The heavy weight of expectation

And here’s where an underlying problem starts to emerge.

It’s not that you have dipped your toes in all these libraries and built things with the help of other resources. In fact, from a learning strategy point of view, jumping ahead can be extremely effective.

The problem is your expectation. It’s the words you are telling yourself. They often start with “I should”:

  1. I should know enough by now, but I have forgotten everything.
  2. I should be able to build projects, but I don’t know where to start.
  3. I should be starting to apply for jobs.
  4. I should be good at JavaScript; it’s been months — or even years.

This is the sheer frustration so many of us feel on the journey to becoming a developer. I certainly felt it. Everything gets compounded when you start comparing yourself to others on social media, when you scan through GitHub trying to find something to contribute but feeling like you can’t do anything, or when you try to redesign your basic portfolio to something eye-popping and discover you can’t even do that.

There are 3 common outcomes of this:

  1. You attempt job applications. Even if you do get accepted into the first stage (which you might because of all those checkboxes), you don’t get very far. You lose even more confidence and get discouraged. You blame your lack of fundamentals, so you circle back into theory.
  2. You try to build projects on your own and find it near impossible without a guided tutorial. You lose even more confidence and get discouraged. You blame your lack of fundamentals, so you circle back into theory.
  3. You give up 😭

The Wandering Tutorials Stage

Assuming you haven’t gone for option 3, you’re back in the land of theory. What does that look like?

I call this the ‘Wandering Tutorials’ stage. It’s a period of seeking out tutorials and courses, half completing them, some never even starting, constantly searching for something but never knowing quite what.

I recently held a mentoring session, and the student held up his notebook absolutely crammed with notes on all the various things he has been learning and trying to remember. His confidence is dwindling because the more he learns, the more anxious he feels about forgetting things.

Eventually, practice exercises seem to be going nowhere, and inevitably, you end up back in the Checkbox stage, learning specific tools and libraries that appear in job ads. This feels like progress — you’re learning what you need to get a job. But unfortunately, that voice deep down has not gone away. You. Still. Don’t. Know. What. You. Are. Doing.

This isn’t just Imposter Syndrome. It’s deeper than that. There is something fundamentally missing, and its absence is becoming a bigger and bigger problem.

An illustration of someone doing a tutorial, surrounded by headings for different tools: React, Typescript, Next Js, Git, CSS in JS, Redux, AWS, SSR

The Thing that Is Missing

This all began with a mindset of “I should”. It’s a heavy expectation that you have turned yourself into a developer. This is mostly the result of the rhetoric from boot camps with big promises like “12 weeks to full-stack developer” or social media posts with titles like “How I got a 100k developer salary in 6 months”.

It forces you to compare yourself and put a ton of pressure on yourself. Worst of all, it makes you miss the most critical stage in your learning:

I call this stage ‘Playtime Problem Solving’. It’s a space for you and you alone, where you can start experimenting with what you have learned, recognizing small patterns, and appreciating code as an art form , a craft— rather than as a means to an end.

If you miss this step, coding will always just be a list of things to learn. And you will never practice the core skill of problem-solving.

From Checklist to Craftsmanship

In this stage, you might do things like:

  • create dreadfully basic projects to practice concepts
  • Redo exercises,
  • analyse and refactor code over and over again
  • add features to basic projects, and get stuck.
  • Write blog posts on things you have learned

This is the stage The Syncer Program, my course on visual JavaScript, is all about. It’s the moment coding gets exciting, because it becomes your craft.

The Syncer Program banner, launching on 20th February

Once you start to do this, to allow yourself to freely attempt to build projects on your own without expectation and judgment, you start to solve problems on your own. The more problems you solve, the more confidence you build.

And that’s the missing ingredient: confidence. It’s the counter voice to “You don’t know what you’re doing” that fights back with “I might not know everything. But I can figure it out”.

That line, in a nutshell, sums up what it means to be a professional developer.

Unfortunately, it does not come from an endless amount of theory and tutorials. And it rarely emerges from a boot camp designed to get you a job.

It’s a less glamorous stretch in your journey, but it's the one that leads to the creation of a mental model.

If you are a subscriber of The Great Sync, you will soon receive A Road Map to Building a JavaScript Mental Model, which explains exactly what you need to do to replace the “I should…” in your inner voice with “I can…”.

© 2023 Code Imagined - The Great Sync. All Rights ReservedView the Terms & ConditionsView the Privacy Policy