When I got my first programming job in 2016, everything seemed right with the world. 6 months before that, I had switched majors from biomedical engineering to computer science and taught myself some basic python before my first C++ programming class. I knew how to program, I was studying programming at a good university, and now I had a programming job. I was a professional software engineer. I had done it, or so I thought.
And then the imposter syndrome hit. My coworkers showed me their workflows and tools, and I understood none of it. I was assigned to write SQL queries for student scholarship calculations, but I had never heard of SQL or databases before. One coworker asked if I wanted to contribute to a web product she was building, and as she explained the API design and the business requirements, I nodded along helplessly, trying to seem intelligent. None of those words made any sense to me then. I felt like a child sitting at a table with adults, all speaking a language I was too young to comprehend. I was having imposter syndrome, and it wasn’t some phantom feeling. I was an imposter. It was my brain’s way of telling me that I was not ready yet and I needed to get better at my craft.
And so I did. Over the next 5 years, I took a “first principles” approach to programming. If I came across a technology I didn’t know, I took the time to learn about it from the ground up. If I was assigned a task I wasn’t quite capable of, I took the time to get upto speed as soon as I could. I asked for help from my coworkers and got some mentors. I stayed up late at night practicing new skills and learning new technologies. I read lots of programming books and lots of code. I spent years building web applications and even teaching some university students how to work with source control and build simple web servers and applications before I started really calling myself a web dev. I learned over time that if I didn’t want to feel like an imposter, I needed to have deep knowledge in my domain. And I strived for that ideal relentlessly.
Once I came into the startup world, I started to realize that I was surrounded by people who did not go through the same journey as I had. People who had written HTML a few times were calling themselves web developers. People who had deployed on AWS once or twice were calling themselves infrastructure engineers and demanding high salaries. People who had read articles on blockchain technology were calling themselves web3 engineers and starting crypto companies.
Over time I started to get really disillusioned with the tech industry. I was surrounded by people who I felt had no business being in this industry, and yet they were taking home large salaries and raising millions in VC money for their next “revolutionary product” (which turned out to be vaporware in almost every case). This time I felt like I was the adult in a room full of children who were roleplaying as software engineers and business owners. I was having reverse imposter syndrome. And that feeling has never quite gone away.
Over the past couple of years, I have once again fallen deeply in love with software and technology. I have discovered that there are a lot of programmers out there who have a true passion for software and programming. People who love computers and solving problems and building real software products which are more for helping others and less for collecting a VC paycheck. People who program because it’s fun, and people who strive for mastery in programming because it’s a worthwhile endeavor in itself.
Amidst a sea of imposters, there is an island of software engineering excellence. And that is where we should all strive to be.