Everyone has this perfect vision of what their portfolio should look like and often say things like, "Before I start applying for jobs, I am going to create a jaw-dropping portfolio." There are three typical outcomes of this mentality:
You do NOT need the perfect portfolio to get your first job. Instead, start with a GitHub landing/README page or a simple one-page website with links to GitHub. Shift your attention to "boring projects" and "fluency" - see below. Later, once you have more confidence, you can start working on an improved portfolio (notice I still don't say "perfect").
The point at which you start applying for jobs should NOT be the point at which you are ready to actually secure the job. It's challenging enough to remember everything you've learned in a stressful interview environment. Adding to that the desire and expectation of actually getting the job can be overwhelming.
After experiencing enough of these interviews, you'll notice your confidence slowly starting to grow. You'll no longer be failing in the first stage; perhaps you'll make it to the second or third. Now you can set the next target: apply to jobs with the intention of getting them.
Two targets, and two different mentalities entering the interview.
If it’s messy, it does not matter.
If it doesn’t make sense, it does not matter.
If it makes you feel confused and frustrated, it does not matter.
Write some code. And the next day, write some more.
Here are some things you can do:
Consistency is key.
Most of the learners I spoke to are self-taught. This often means it's just you and a laptop, sitting in an empty room. The problem here is that you are only practicing one side of being a developer: the coding part.
However, there is another fundamental skill that developers need: communication. Writing code quietly in a room is not going to help you with this. It is surprisingly difficult to put code into words (let alone abstracted mnemonic images like in The Great Sync).
Here are a few things you can do:
For example, one person mentioned that they wanted to build a virtual coffee barista, which is an awesome idea and would look impressive in a portfolio. But in my opinion, it should be the very last thing you spend time on.
Why work on a never-done-before idea when you are still struggling with basic loops?
Why start your "business idea" when the DOM methods still confuse you?
But your goal for now is to create that mental model, and you don't need virtual coffee baristas or Netflix clones.
Instead, the tried-and-tested "boring" projects are ideally suited. There is a wealth of online resources to help you complete each of them, and the patterns you learn while building these will be the same patterns you use to create more complex apps.
Here are some project ideas:
Most people, after finishing an exercise, project, or course chapter, simply move on to the next item on their list. Maybe they take some notes or save code snippets somewhere. However, very few actually go back and review what they learned or did in the days or weeks prior.
Instead of rushing through every exercise, slow down and schedule "review" time. This means carefully and thoughtfully revisiting your past work, all the while asking questions such as:
Usually, this line of thinking will lead to "redoing" the same exercise, or at least refactoring it to make improvements. It may slow you down, be frustrating at times, and make you feel like you're going in circles. However, this is where the real learning happens. If you skip this step, you are neglecting a habit that will take you far beyond the skills of an average developer.