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.
1) Prioritize what to Learn Next
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.
2) Do Little Things to Stay Active
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.
3) Enjoy Your Work!
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!)
Top comments (26)
Awesome post, Max. I really appreciate articles like this since I'm just starting out my dev career.
Definitely agree with your first point. The slightly smaller question of "have I learned what I needed to do a good job?" swallows me whole, and it makes it really hard for me to focus on learning step by step. I've found it so helpful to prioritize, even if it's only a little, my learning.
Also, I've definitely felt many times that I'm not doing enough, whether it's learning or writing up tests or features, etc. It just seems like I never have enough time. I usually go a little crazy thinking about that until I realize that I'm human like everyone else, and that soothes me.
Thanks a lot for the write up!
Thanks, I'm very glad you liked the post! That question definitely does haunt me a lot too, especially if dealing with a tough obstacle and am wondering if I missed learning something that would have helped. But that also can help guide what I want to learn next - when I had issues with JS dependencies, that's when I knew to focus on CommonJS and ES6 Modules.
A lot of it is solved by learning to ask yourself the right questions about how much you should learn and what to prioritize next. It was a great takeaway from a book "The Five Elements of Effective Thinking," which I've found very useful in how I study coding. I highly recommend it for further reading!
Third point is paramount, having fun puts things in perspective.
Plus it reduces the risk of losing interest in larger projects partway through. That's an especially big risk with me as I'm learning Ember for my job, it's great but there's so many different conventions and syntax rules to learn along the way.
Absolutely.
Thank you for sharing! Starting out on that first job can be very intimidating. Thankfully we learn a lot and stick with it and overcome. As one who's getting more "seasoned" as a Dev, I'm grateful for the new devs and the perspective they bring.
One of the questions you posed at the start of the article stuck out to me: "Have I learned enough for my colleagues to value me?" I feel like this is a good question, but the way it's asked is dangerous. I know this was an example of an anxious question--I know I've asked it before--but I wanted to take a minute and share what I've learned and my perspective on this question.
The way this question is asked puts an unnecessary emphasis on what your colleagues think. Unfortunately it's impossible for you to read their minds and know what they're feeling. Because of this, you're left to guess and guessing someone's thoughts or feeling is really dangerous for the vast majority of people. We often paint a much worse picture than what reality is when we're left to read minds and this can really hurt ourselves unnecessarily.
So, I said this was a good question just asked in the wrong way. What would be a better way to ask this? Here are a few options:
Asking it like this turns the focus to you and asks it in a way that can be quantified (depending on the metrics gathered). Turning the focus onto you eliminates guesswork. The only mind you have to read is your own, which you're probably pretty good at by now. This also puts you in control of the outcomes. Instead of blaming others, you'll know if you're struggling and where you can improve.
So, if you find yourself asking a question like this one, try to phrase it in a way that you can control and that will give you a path forward that's more clear than guesswork.
Thanks again for your thoughts!
I felt exactly the same way for the longest time! I had a big list of projects and articles I wanted to tackle, and never getting through them caused me lots of needless work anxiety. Picking the ones based on priority and enjoyment really narrowed that list down. Like so much in life, it comes down to being willing to accept some trade-offs. We don't need to do it all at once.
Couldn't agree more, as a progressing junior trying to find more challenging work, this whole article spoke volumes! I've started taking the bite-size/codepen approach as well, makes it easier to learn things outside of work.
I'm glad you enjoyed it! The bite-size approach is probably what helped me the most, since it does the most to soothe the everyday worry that I'm not doing enough. Even if it's not making small pens myself, saving ones I'll find useful or giving feedback are all small parts of the learning process. They lay the foundation for our future learning after all.
You summed up everything I, and many others, feel on a daily basis.
I think a big take away is to focus on one particular technology at a time, learn new information in small digestible pieces, and the most important thing is to be consistent. We have a tendency to burn ourselves out and then go on a long hiatus because it becomes more of a burden.
I can't wait to share this post at work tomorrow. Thanks again Max!
Thank you so much! I agree burnout is a major thing to avoid. As tempted as I've been to learn so much at once, if you burn out then you're only being less productive long term.
I'm very flattered you'll share it with your coworkers tomorrow! I hope they all enjoy it as well :)
Hey Max! Thanks for sharing this.
I especially like #1. Feeling like there are a million things to learn is definitely something that hits home for me. Making a list, prioritizing it, and chipping away at it is a great approach.
I absolutely agree. A beauty and horror of programming is there's an infinite amount to learn. That means constantly choosing what not to learn, but it also helps us value and make better use of what we do learn.
It's like "The Life Changing Magic of Tidying Up" but for our brains - focus less on what to discard and more on what to keep!
Great post, Max. I think you provide an awesome insight into a lot of the questions all developers across the spectrum of experience ask themselves.
One thing I would add to your third point, and perhaps it is a point of its own. Is that it is normal to not enjoy your work every once and a while. It is normal to get frustrated and feel like you are not moving forward, but you should never harp on this feeling. In working with a lot of developers even the best ones can get down in the dumps for a bit. The great ones pick themselves back up and solve the problem.
I totally agree with that addition to the third point. Feeling that frustration with work at times is normal, but just feeling it without not judging our skills as a developer from it is important. It's actually come up a lot with my work in Ember lately. I regularly feel frustrated with learning the conventions, but I just feel it and let it pass as I eventually get the hang of it.
Thanks alot for this, For some time now, I have been battling with this.But thanks, I know what to do now.
My times of being a junior dev are over, still this helps me with my crippling anxiety 😀
I'm very glad you still found it helpful :)
I struggled so much because of the first point... So overwhelming sometimes. A mindset change and prioritize !!