Notes from discussions with javascript learners

For several weeks I have been meeting subscribers of The Great Sync to discuss their web development goals and struggles with learning javascript. These chats would mostly begin the same way, with each telling me how much they are learning, the number of projects completed or trying to complete, and their goals. The hard work is impressive, with teachers somehow carving out just half an hour in the evenings to do tutorials, or even those already in the industry willing to add extra hours in front of the screen to grow and improve.

To say I was inspired by each and every conversation is a massive understatement. I learnt so much.

My next question was always the same: “well, what’s stopping you?”. I often wondered why this session is even needed - each clearly demonstrated an aptitude for development. But we all have our demons. It’s what I call The Imp in The Great Sync - a devilish creature which rears its ugly head throughout our journey in tech. It goes by another name too: Imposter Syndrome.

These are some of the major pain points and struggles that were uncovered in the sessions, which I thought I would share for the benefit of all.

I don’t know what I should learn

In tech these days is there is SO many damn things to learn. You learn one thing and and three more things getting added to the list. And then it turns out that one thing you learnt, you didn’t actually finish and needs to stay on the list!

You lose a lot of time when you focus on the list. The Imp loves it.

The reality is there is no such thing as a list. Those 100 thousand bullet points you see on job applications are all smoke and mirrors. Recruiters don’t even know what 99% of those words mean. I once got asked if I can style a website purely in React.

But Kylo, surely there has to be a list??!!

There is, and it has only 3 things on it if you want to be a web developer. HTML, CSS, Javascript - what the internet is built on. That’s your speciality.

You never remove items off this list. You never master them. You will always be learning and adding to your knowledge.

Creating vanilla projects is super important. I always say your first application should be built in vanilla javascript. Global variables, clean functions, handling async events, looping through arrays - this is the world you want to live in.

And what about React, Tailwind, Regex, SQL, Next JS, Remix, Typescript, Jest, This, That, And This Too?

Solution driven list building

Rather than having a list of new things you need to learn, I encourage you to base your learning on one or two side projects. Create a list of problems, features or refactors you want to complete. And pick the appropriate technologies for each.

Problems can be things like:

  • I have a form, how do I validate user inputs? (Regex)
  • My CSS naming is unstructured and messy, how can I improve this? (Tailwind, Bootstrap)
  • My project accesses and modifies the DOM directly. What libraries help with this? (React)
  • I am storing all of my data in a single variable, or component. How can this ‘state’ be better managed? (State management libraries like Redux)
  • I want to test that my functions do what they are meant to do, and can handle edge cases (Jest)
  • When the user refreshes the page, the app starts from scratch. How can we save data without a database? (Browser storage)
  • Okay if a database is needed, how can I access REST APIs for a database without setting one up myself? (Cloud services eg Firebase)
  • Although it works, my code for making network requests is long and repetitive. How can I refactor this? (Async/Await, axios)
  • I don’t have control over the services which offer cloud databases and REST APIs, and want to try setup and manage my own (Node/Express JS, Mongodb or MYSQL)
  • Instead of having a separate server and frontend, what if you used a framework to combine the two? (Next Js, Remix)

Notice that you are not trying to master any of these technologies. They are simply a tool to solve specific problems. Courses and tutorials you take should be to move your project further along. Plus it gives you a lot to talk about in interviews.

Code with another human

Looking for opportunities to code with others is one of the most under-rated learning strategies theres is. Too often we focus only on our own projects, and building something you can proudly say ‘I did this all on my own’.

That’s great. You should have personal projects. But I highly recommend also finding ways to practise collaboration. These experiences teach you SO much. Working with someone else means gaining new perspectives, being challenged on some decisions, and best of all, you are forced to communicate your work.

It also really makes your portfolio standout, especially if you have no commercial experience.

And here’s the thing, it doesn’t mean finding a partner for a huge application that will become a startup and eventually earn you millions. Here are a few other ways to work with others:

  • Find a designer to create figma designs on a smaller project, and work together to achieve the right look and feel.
  • Code pair on leetcode / edabit / codewars challenge. This really pushes you out of your comfort zone. It can be super scary. But there is no better preparation for interviews, while simultaenously accelerating your learning
  • Teach others. Even if it’s raw html & css basics, there is so much to be gained from this. In the UK I used to volunteer as a coach at codebar. Look for similar opportunities near you.
  • Receive mentoring or coaching from a more experienced developer (The Great Sync might be able to help you here, stay tuned)
  • Attend networking events, but don’t just sit in the crowd and listen to talks. Often these events have open discussions, facilitated networking rooms, or workshops where you can actively partake and learn from others.
  • Find a friend or someone in a coding community to build a basic application together, using git workflows. I recommend keeping the scope of the project small to begin with - a ‘proof-of-concept’ app with very few features. This makes it easier to find partners without embarking on something that will take months of work.

Growing a knowledge tree

You might be wondering why I haven't even mentioned The Great Sync yet. Having systems and strategies for consolidating what you are learning is essential to grow your craft. The Great Sync is one of many ways of doing this.

Stay tuned for part 2!

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