Originally published on my blog at www.codebyamir.com
It was January 2016. I had been a sysadmin for 13 years. For a long time, it had been a tremendously rewarding and fulfilling role. But I had reached a point where I wanted to do something different. The on-call rotation and daily grind of IT operations support had taken its toll on me. Being the on-call person every other week sucks.
I had gone to college and earned a degree in Computer Science but never really used it.
I knew it was going be an uphill battle. There is little overlap between the skill sets of a sysadmin and a software developer. Sure, writing shell scripts was second nature to me. But that's a far cry from contributing code to a substantial software project.
I sought advice from friends, colleagues, and recruiters. Many suggested I should go into DevOps which was a step in the right direction, but still a different animal than a software engineer. I wanted to build web applications. Front-end, back-end, whatever I could get the opportunity to do. Others warned that I'd need to take a substantial pay cut and start at entry-level.
A local entrepeneur reached out to me via a Meetup group and told me about his B2B startup. He was looking for developers to finish his MVP web app written in PHP. I expressed interest and joined the team. I was working full-time and spending my evening hours developing for the startup. This was a good start. It felt great actually being paid to build applications.
I built enough confidence in myself to start applying to full-time developer positions. It quickly became obvious that no hiring manager saw me as a developer. The startup side project was nice, but I needed more development experience. At my day job, my programming skills put me on a project that involved developing integration software between applications to meet a compliance initiative. I wrote the software in Perl because that's what most of our automation stack was written in during that time.
I revamped my resume so it highlighted my development projects. To make myself more appealing in the job market, I also needed to sharpen my focus to a single language.
I reviewed the local job postings and saw a pretty large demand for Java. I learned the syntax and the libraries in the core JDK. I passed the Oracle Certified Java Associate exam. I read about dependency injection and learned the Spring Framework. I brushed up on best practices and read Clean Code by Uncle Bob. I signed up for Pluralsight and immersed myself in their courses.
Each night after work, I'd carve out an hour for learning. On weekends, it would be more. I started a blog and posted articles whenever I learned something worth sharing.
I applied to over 40 openings in 2016. I only landed 3 on-site interviews. That much rejection is a humbling experience. When I did get on-site interviews, it was evident I wasn't experienced enough. I was competing with developers who had been doing this full-time for several years.
But I kept learning and improving.
Fast forward to today, I now work at a Fortune 500 company as a back-end Java developer. It's fun, challenging, and interesting work.
The morale of the story: don't give up. Anyone can re-invent themselves if they're willing to dedicate the time and effort it takes to get there.