When you need experience to gain experience
Acquiring new skills takes time. Quite a lot in some cases. How do you validate your skills in the tech industry? Do you really have to work with a tech stack for years to be hirable?
6 min read
October 2, 2020
Why such questions?
Which came first: the chicken or the egg?
Is it a thought exercise or simply a fun question to blend philosophy and science? I don't really care. As of late, some interrogations started to hang out in the back of my mind. I wanted to share a little bit!
How do you acquire new tech skills?
This is actually a variance of an interview question I was asked when I joined Fizzer. The question was something like "How do you master a technological stack". Back then, I replied that you need to have worked with it for a while. This way you get enough experience to master it. Seeing a wide array of problems and finding how to solve them is what gives you a better understanding of your stack.
To say that you master a stack is a pretty bold statement. And I would not dare to say that about myself. I have been working on the same product for two years as the sole developer. Yet, I'm far from perfect. I do make mistakes from time to time lots of the things I code are probably suboptimal. Since I'm working alone, I'm rarely challenged by others. I don't get a lot of opinions to help me refine my point of view. That's an issue. Code reviews are awesome. Try to get feedback on what you do!
Back to what brought me here. If two years of working full time on a single stack didn't achieve me some sort of mastery, what could? And more so, the main question I'm worrying myself with these days:
How can one gain experience with a stack if he needs some experience to be hired in that stack?
Interesting don't you think? If you didn't learn a skill through school (or a bootcamp) and aren't a junior hire anymore, how do you transition to a new stack? Let's say from Vue to React, Angular, etc.? It seems that to be hired in a new role one would need to have experience with that stack. Since I mentioned working with a stack is what makes you better at it... Things are getting tricky.
That's where mastering the basics is super important. I believe it's much more important to be skilled in let's say JavaScript than to know a lot about each JS framework. Lots of people do think the same. Yet, this might not always be visible in the recruitment process.
As I'm trying to progress in my career and improve myself, I'm looking for ways to gain new experience, demonstrate said experience and feel like I'm making progress.
How to gain experience
Couple hours before writing this I read this article by Kent C. Dodds. It brings interesting ideas about how to progress and become more experimented as a software engineer.
Two main takeaway:
You need to face issues, problems
Open source is a path toward gaining and demonstrating skills
That's interesting. No doubt, smooth seas never made a skilled sailor! But it can be hard to face real problems when you don't work on larger projects. I know I can't work on fake side-projects for too long before losing interest.
One solution for that can be to work on smaller things like the little library I talked about in my last post. Bite-sized projects make it much easier to complete and feel like you achieved something. You can still gain very valuable knowledge by working on those. Plus they help build a little portfolio!
Bringing value to someone or generating any kind of public output makes it much more rewarding.
Contributing to open-source projects can be scary. Tackling simple problems you encounter is a nice way to build confidence and give you traction in the community. That's an area where I definitely want to improve.
Learning in public
[...] generating any kind of public output makes it much more rewarding
As I wrote this sentence, I thought of Shawn Wang's Learn in public article. Go read it. Generating output, making stuff, having something to show. It makes you accountable, even if no one cares.
This blog post, might not need to be a blog post. I could have kept it in my head. But it's a way for me to learn in public. It helps me improve my writing skills. Putting things down helps me organize my thoughts and see more clearly where I'm heading. Being a better writer makes me a better communicator which makes me better at my job!
It gives me momentum. It makes me want to write tons of little projects, tons of little libraries. It makes me want to write other blog posts and keep learning!
Don't hide what you're doing. I did that for a while. Try to release ASAP. Try to iterate, it'll give you momentum. It'll get you to solve harder challenges, to write more blog posts, to gain more momentum. It's a virtuous circle.
About learning in the tech industry
Just want to note, that I feel like it's an industry where we are required to learn a lot outside of our job to stay relevant. Not everyone wants to spend dozens of extra hours outside of their job and it's perfectly normal. We need to normalize having hobbies and a healthy work-life balance!
I feel blessed that I'm very motivated right now and that I have the time to invest myself in this kind of hobby. But we might want to reflect on this as an industry. We are extremely well rewarded for our knowledge but 10x and rockstar dev lingo gives me headaches š.
Wishful thinking
Right now, I'm thinking I could write a Netlify CMS plugin to import images from Unsplash and resize/optimize them on the go. That would be super cool and it would make my blog writing workflow a little easier.
Can anyone tell me why tech articles all start with a seemingly irrelevant image š?
š I'll keep working on my website.
š I'll try to give a little doc to my latest (and first?) library... Releasing doc-less code is bad. Not releasing anything is worse!
š And I will keep learning with EpicReact.dev
Keep reading š
Another nice article on the topic Learn in public hack by SWYX