Much as I love coding, being a junior developer has often felt horrible. For so much of it, the following questions (if not more) have been crowding my mind:
- What should I work on next from my big list of things to learn next?
- How much time can I devote to learning today? Will it be enough?
- Should I do some reading or trying coding something up instead?
- If I do code something, should it be something small for quick results or large for greater application?
- Should I take some time after making it to write something? If so, how much time?
- Where should I post what I write? On my personal site or a larger one?
- Have I been active enough on my different channels? If I get active will people notice how little I did before?
- After my current topic, which should I go to next? Something fundamental since I can't ignore it forever, or a new tool since I may be passed over if I don't know it?
Worst of all, there's the big question:
- Have I learned enough for my colleagues to value me?
Mostly these anxious questions are in my mind's background. But sometimes they jump into my awareness and I'm on the verge of a panic attack. Like there's a cliff I quickly need to scale and I don't have enough equipment (or the know-how to use what I already have).
Unsurprisingly, this can crush my love for my work.
So I stopped, took a deep breath, and looked at my perspectives. Once I was done, I'd thought of a few mantras to remember to help me learn while staying sane.
First off, I need to accept this will never end, and that's okay. This isn't exclusive to junior devs, as I well know. Part of coding is always having something new to learn.
"Have I learned everything?" is the wrong question, since the answer never changes. The right question is "Have I prioritized learning the right things?"
Despite there being so much junior devs need to learn, some are clearly more important. For example, the fundamentals always matter since they make everything else easier in the long-term. Plus learning the sexy new thing (like React) may be irrelevant, especially if your current job uses something else you'll use every day (like Ember). Otherwise, learning something that solves current issues on your workflow is always a good move.
Choose the things that'll have the most use as soon as possible and put the rest on a "To Learn" list. That list will never be empty, but as long as I clear the most important items, I'll still be okay.
There's an easy answer for the fear of sharing things on websites I have long periods of inactivity on. If that's a serious worry, I just need to keep them active in small ways on a regular basis. I shouldn't see sites like CodePen, Github, or even Dev.To itself as places to just post big projects or tutorials on rare occasions. Follow some people! React to what's shared! Comment on posts and code snippets! Even just click some unfamiliar things people shared so you start getting exposed to new ideas and practices.
I don't need to be constantly sharing high-quality work to show I'm involved. It's much easier to share my code instead of getting to know the others sharing it. Doing these little things may even be more valuable, as programmers with good networks and communication skills are harder to find - and companies want them more as a result.
This also applies to actual learning. It's better to learn a few good things each day than try to cram in tons during a weekly panic. Habitual learning is more likely to stick since there's more reinforcement and less chance of panic crowding out all the learning right after.
Third, and most importantly, through it all I can't forget to love what I do. I code since it challenges my mind while letting me be creative. Turning it into a stressful chore is the best way to make me walk away and regret it later in life. Finding ways to keep the fun is vital.
There's many ways to do this that vary with everyone, but my favorite is working my other interests into my side projects. I practiced CSS Grid by making Pens based on animes I enjoy, created a Node newsletter for anime wallpapers, and am now making an Ember app with the Pokemon API.
Each of those tasks turned into an exciting challenge with an enjoyable reward, not "something I just had to do for work." Find out what works for you ASAP.
Being a junior dev can be overwhelming and exhausting due to the sheer scope of how much more we feel we need to learn. This sometimes make me feel of little value to where I work, which can amplify Imposter Syndrome to frightening levels.
Perspective is the key to managing this. Prioritize learning wisely, break it into small actions, and don't lose the joy. It'll still be plenty of work, but it'll get easier. Learning will feel less like scaling a cliff all at once, and more like a long run up a steady slope - tough, but totally possible (especially with the right music!)