Don't become an expert: invest instead
Moving into a mindset for long-term success as a software engineer
Think about the last video training library you saw. It likely had tags like “Beginner”, “Intermediate”, and “Expert.” While these labels can help you find resources that are at your level, I have always been bothered by them. Outside of video training libraries, I have seen people assert they are an “expert” just to get a job or a project. And then at the other end of the spectrum, I have seen people downplay their skills in the hopes you will buy into the technology they are selling.
This may seem innocuous on the surface. However, I assure you it is anything but. The moment you adopt “beginner”, “intermediate”, or “expert” as a part of your identity, you are trapped.
The implicit promise that is made when you adopt a specific framework or language is that if you just become an expert in this, you will have steady work in it for a good long time. While this sounds like you are taking an active role in your career, it is ultimately resignation.
Once you pick up the basics of a framework, you fill in the rest of the gaps by googling your way into becoming an “expert.” When it comes time to find a new job, you now have years of experience in this framework, but that might not land the role you really want.
I used to have the “become an expert” mindset. I spent many years trying to master PHP and a framework written in it. Then I found myself stuck: expertise in the framework just led to more work in that framework and nothing else. I wound up spending nearly a decade in it, which is an eternity in Internet years! I could have moved on more quickly if I had stopped to ask really important questions like these:
What problem is this framework trying to solve? Do I want to solve that problem?
What is this framework offering me now versus what it offered me originally?
Is there something else that can deliver value and quality more quickly?
Am I leading the work I’m doing or is this framework leading me?
Am I truly enjoying this or am I just comfortable with where I am now?
I might have ultimately been happier learning a different language, like Python. That would have allowed me to take on projects involving geographical information and spatial analysis, which I would have personally found interesting. However, I never did so because maintaining and expanding my current expertise was the top priority.
I eventually did move away from freelancing and into full-time jobs. At one of them, I picked up Ruby on Rails, because the project I was working on was based on it. After a while, I found myself in a familiar situation: I knew enough about Rails to be productive, but Rails was leading me more than I was leading the work. I wanted to move on to something new. So this time, instead of trying to double down on Rails expertise, I decided to try a new mindset.
I started a side project to do some experimentation. Through this project, I found myself evaluating different frontend frameworks. Once I tried a few of them, I finally settled on React. React was the #1 choice for frontend development at the time: it had great documentation and wide adoption.
After playing around with React more, I soon had a working project I was ready to share on LinkedIn. Posting this led to interviews for jobs where both Rails and React were being used together. Ultimately, I was offered Senior level engineering positions and accepted one of them.
Programming languages, frameworks, and methodologies are here to serve you, not the other way around. Take charge by coding like an investor! While it’s important to learn the stack used at your job, It’s also very easy to get stuck in the expertise trap. Don’t do that! Instead, invest time in learning tools that will yield a return.