Forcing Yourself to Learn
Working in a fast-paced environment is always tricky for a junior developer.
I’ve noticed events usually flow this way:
- You join your new team/company. There are a number of new tools to learn and practices to pick up. You’re barely productive - you’re actually sucking up time with your questions about setting up, access requests, code walkthroughs and whatnot. Your team is more than happy to let you spend time learning new things and developing your skills.
- You are getting familiar with the code base and the lay of the land. You know your way around some of the tooling, you got to fix a bug or two, even shipped a small feature! Your teammates trust you a little bit more now, so maybe they utilise you to work on that non-BAU project they’ve been meaning to do for a while but never had the time. You might dip your toe in the icy lakes of the code review realm, but you’re quite intimidated, so you mostly just lurk from the shadows. You still have the time to set aside a couple of hours per week in watching tutorials or reading documentation.
- Things are starting to look good. That side project you were assigned was not half-bad. It actually brought some value to your team! Good for you! Your teammates start to think you are ready to join the grown ups, so they give you larger and more important tasks. You struggle, but you do alright. You might even experience first hand how harsh people can be during code reviews! At this point, if you get an hour of learning per week - you’re happy!
- Some of the more senior developers in the team might have left at this point. It’s your time to step up! You’ve made the transition from the person who asks questions to the person who answers them. You’re not an expert - but you know you way around. Your responsibilities grow - and with them your learning time shrinks even further.
- It feels like everything is urgent! How is it possible that every new feature request is a high priority, you ask yourself… Surely, if everything is high priority, then nothing really is, right?? “Too much pondering, too little coding” whispers that voice in the back of your head which never fails to remind you that you have a feature to deliver before an arbitrary deadline. People rely on you. Learning new stuff? Does spending 3 hours on an obscure library issue count?
- At this point, you’re mentoring some of the new junior developers, you’re regularly banging out features, people even trust you to lead some efforts. How cool is that! Yeah, you might spend a couple of extra hours in the office from time to time, but hey - you’re important now!
- You have a new voice at the back of your head - the one that reminds you that you promised yourself you’ll watch that Udemy course on NoSQL but you never had the time. Or that you should really try out this new technology you heard of - it might be very beneficial for the team! New feature requests keep coming though… Maybe one of the juniors can do it?
And we’ve come full circle. I am not trying to take away from the continuous, hands-on learning a junior developer does during this time. There are countless things we (hopefully) learn on the job that are instrumental to our career development:
- Working with others, mentoring, having discussions and voicing our opinions in a healthy way;
- Picking up patterns and practices from the more experienced developers;
- Gaining domain knowledge;
- Gaining technology and platform knowledge;
- Learning new ways of thinking;
- The list goes on and on.
All these things are essential. But they are half of the equation. Focused and deliberate learning is what is missing. Without it, it’s easy to get stuck in your comfort zone and stunt your growth.
I don’t think it matters what it is you are learning, as long as it expands your skill set or challenges you to think in a new way. I also believe you should not have to spend huge amounts of your own time for learning. Your employer should be forward-thinking enough to know that encouraging employee learning is the best investment in their workforce.
However, as we saw, it is very likely that you will reach a point where dedicating time to deliberate learning seems impossible.
But is it?
I have started to do something lately which has helped me to take the time and learn new things - sharing what I learn with my colleagues! However, in order to force myself to actually find the time to learn, I set up a knowledge sharing session before I’ve learned what I want to share! Once I’ve made that commitment to my team, there is no backing out! I have to find the time to learn and prepare for my presentation.
You might (rightfully) ask: “But isn’t this just going to stress me out even more?” Maybe! You won’t know until you try. What I do know, is that people can be very resourceful when it comes to time management, so you might surprise yourself.
Maybe some of the features you are working on are not that important - have you asked the product owner? Maybe once you are done with a task, you don’t immediately have to jump on the next one. Would this be so catastrophic?
Of course, a lot of people will genuinely not have the time and an approach like this will stress them out even further. If you feel like this is the case for you - you do you! Your mental and physical health is in your hands - you are the one who knows best what is right for you.
What this approach can give you is a fresh perspective. You might reevaluate whether things really are the way they seem to be. And, maybe, you will find that longed for learning time. Cherry on top - you will not only be creating value for yourself, you will be doing it for your teammates as well! Furthermore, teaching others is proven to be a hell of a way to reinforce what you’ve learned! The mentorship and presentational skills you will develop are not a bad side effect either.
So, if you are in the mood for challenging yourself, what are you waiting for?