I was recently emailed by a new friend asking for some tips on how to break into software engineering. I love emails like this for two reasons: I really want to help everybody be successful in this industry, and I think we need more people from “non-traditional” educational backgrounds to enrich the industry. Since I had some scarce free time, and I ended up writing them a novel of a reply, I wanted to share my tips with anybody else for whom they might be useful!
My new friend, let’s call them Sarah hasn’t been working in the tech industry, but has lots of experience in managing a business and working directly with people. They asked (paraphrased):
I am looking to break into a programming job, I’ve done lots of Perl and Python scripting for automating mundane tasks at work before and in my hobbies. There’s still a lot I still need to learn, but what suggestions would you have to start re-orienting my career?
Below is my advice almost verbatim.
My advice would be to look down one of three avenues for breaking into the software industry given your background and current level of experience:
- QA/Test Automation
- Data Scientist / Analyst
- Infrastructure (“DevOps”, which used to have a real meaning)
I have worked with a number of folks that have broken into Engineering by way of QA from let’s call them non-traditional software engineering backgrounds. The benefit of folks like you is that you have good people skills, high levels of user empathy, and haven’t spent the last decade in the narrow user-experience silo that most developers have. In many of these positions people will find themselves writing integration, Selenium, or Appium tests which are commonly Python, and might match well with some of your existing experience and desires. I have seen this job position also described as “Software Development Engineer in Test” (SDET). From the QA organization, it’s easier to train up on an existing code-base, and the motivated individual can start fixing bugs, rather than just filing them, beginning a transition into a more traditional Developer role.
Data Scientist / Analyst or even a “Machine Learning Engineer” are all really people that don’t typically have a software engineering background, but are good at smashing scripts around to get the answers they want from data. Knowing SQL well enough is usually a pre-requisite, but that’s something I am sure is within your reach. These positions are poorly defined and the interestingness of each company may vary widely. Sometimes they’re in the Engineering org, sometimes they report under CFO or COO types, so it’s kind of a crapshoot if your ultimate goal is to transition into a classic Developer position. That ambiguity can also be to your benefit because if the Finance org is interviewing you, your bar is going to likely be more focused on communication and people skills rather than raw technical experience. At the end of the day, it kind of doesn’t matter how sharp of a programmer you are long as you are able to read the tea leaves of data effectively for what the business needs in these roles.
Infrastructure engineers used to be called sysadmins and were ornery bearded dudes who wrote Perl, they have all since had to reform and learn how to write Terraform and work with other systems. The benefit of the infrastructure space is that it’s really a job of gluing things together rather than creating software from whole cloth. Your existing experience might be the weakest here, but the scripter background bodes well for jump starting on some of the many online training resources that are available in the Infrastructure space. I don’t give much credence to certifications, but training up for an AWS certification would likely give you the fundamentals you would need to get your foot in the door in many infrastructure organizations.
Lastly, everybody is remote, that is to your advantage and disadvantage. That means your hiring pool extends far beyond your current location. But that also means you may be competing with folks who are able to command a lower price because they live in Nowhere, Indiana.
My career has been defined by startups, and the benefit of many of them is that their hiring processes aren’t rigorous and formulaic like a Google/etc, and people with gumption can go really far in these types of organizations.
Depending on the direction you want to go, I would also recommend tailoring a resume to that end rather than submitting your CV. I can help provide some guidance there.
I hope this is helpful to anybody else looking at breaking into the Software Engineering space with some scripting experience. I’m happy to help review resumes, give pointers, or in any way my capacity allows, just shoot me an email!