It's time for another Q&A post. This week I have two interesting questions to answer.
Ray asks: How do you define an intermediate or senior developer? What do you have to do to get there?
Great question! Firstly, I'm a big believer in not talking about what I don't know – and I'm not a senior developer myself – so I don't know 100% what it takes. But I can share my observations and take a stab at a conclusion. Here goes!
Senior developers have been through it all. To use a war metaphor, they've been in the trenches. Time and time again, they've balanced stakeholders, constraints and time, to deliver a working solution to customers/clients and they've lived to tell the tale. They've mentored younger devs through the same process and they're respected by their team for their battle scars. It's a matter of many years of dedicated work (you can spend 10 years in IT and still be a junior developer).
However, I challenge you to think a little differently from Junior/Intermediate/Senior (despite the name of this series 🙃) and consider the Rainbow model, described quite nicely by Roger Nesbitt. He describes a developer who takes on an increasing amount of work and then helps people to do the same. In terms of the value you add to your company (and what you get paid), it increases as you go up the rainbow.
So that's it! Bigger tasks, more responsibility, trusted to lead others. All of these come with experience and experience comes with time. Good luck!
Ricky asks: I often find myself being overwhelmed and don't know how to improve. Although, I have learned a lot by self teaching myself. I have gotten into what I think is a bad habit. I begin to learn something like a framework or something new and become very interested and start a project. Then when I get stuck I do my research and get stuck not knowing what to do or how to continue that project. So I learn something new and begin a whole new project. It all just keeps going like a never ending for loop of unfinished projects. Would you happen to have any advice??
Great question. This one comes up a lot. I for one have had moments where I've done a fair bit of watching and reading about a topic and maybe even sketched out some code and then I just get stuck. There's something I'm missing and the pieces just aren't fitting together.
This is when I'd reach out to a colleague or a mentor. Usually I ask politely for 5-60 minutes of their time, and I prepare for this by noting down what I've done and the questions I have (some times this process AKA Rubber Duck Debugging solves the blocker for me). Hopefully their knowledge of the topic will let them connect the dots for me. An important point here is do the work before you ask for their help. I would consider it extremely disrespectful to ask a senior or anyone for their time, without first putting in your own time. Without doing that, you imply that their time is worth less than yours, and subsequently they're inferior to you. It's subtle, but showing that initiative goes a long way in terms of first getting their time, as well as getting enough time to clear things up.
What happens if you don't have a colleague or mentor? Well, hustle and reach out. Go to a local meetup on the topic and ask around, or join a slack group, or ask on Stack Overflow (if concise enough). Get out there and hunt, network for someone who can help you. Finally, as always, be grateful for that, pay it back somehow and pay it forward when you can. Good luck, Ricky!
I thank Ray and Ricky for their questions. If you have some, you can ask me, too!