How to go from CS dropout to software engineer in 5 steps

Breaking into a technical role can be difficult, but these tips will help you move into a software engineering team without a computer science degree.

Video: Why it doesn't matter what coding language developers choose to learn

Breaking into a technical role can be difficult--particularly if you don't have a computer science degree, or work outside of your company's engineering organization. However, it is far from impossible, Emma Cramer, a software engineer at Foursquare, said in a Friday session at the 2018 Grace Hopper Celebration in Houston.

Cramer began taking computer science courses while an undergraduate at the University of California-Berkeley. Early on, she said, she did well, and enjoyed the sense of satisfaction and accomplishment that came from solving coding problems. However, she soon faced several problems common to women studying in the field: She had less background in coding than other students, it was difficult to find programming partners, and she struggled with the work, she said. A year later, she dropped computer science for another degree.

This is not uncommon: While women typically make up about 30% of intro to computer science course takers, they earn only 18% of computer science bachelor's degrees in the United States.

SEE: IT Hiring Kit: Programmer (Tech Pro Research)

But a lack of a computer science degree shouldn't deter anyone from pursuing a career in software engineering, Cramer said. "Just because you struggle to do something in one context doesn't mean you can't be really good at it in a different environment," she added.

After graduation, Cramer began her career as a data analyst at Foursquare, running SQL queries. She began wondering if there was a way to automate the process, and began a side project building a tool to do so. Just a few years later, she had gained enough experience to move onto the Foursquare software engineering team.

Here are the five steps that Cramer said helped her transition into a technical role.

1. Find a starter project

Think about any engineer-built tools you use at work, Cramer said. Are there any tweaks or additions to those tools that would benefit employees in some way? Perhaps it's something you do often that you'd like to automate, or something that you are always asking engineers to help you fix and you'd like to do on your own. This could be the basis for your first starter project, Cramer said.

A starter project should be related to the work you already do, so you aren't getting lost in a new product or area while learning to code, Cramer said. It's also easier to get manager approval to build something that is aligned with the company's needs. Finally, it's key to choose a project that you don't have to build from scratch, she added: Find a system that already works and is similar to what you're trying to build to use as an example or base.

SEE: Job description: iOS developer (Tech Pro Research)

2. Look for a mentor

Once you've thought of a startup project, start telling your coworkers about it, Cramer said. Offer to take someone who has the skill you'd like to learn out for coffee, and ask for their advice on how you can start trying to learn it, perhaps via an online course or a book.

"If you talk to enough people, you might find someone who offers you their help," Cramer said. However, a caveat to this is that you must be a good mentee, she added. "These people have jobs too--be cognizant of their time, and be grateful and gracious when they offer you help," she said. You should also look to return the favor, Cramer said, maybe by training someone else on their team.

Slack or other communication channels can be helpful for asking a question without putting too much pressure on one person to drop what they are working on and answer it, Cramer said. For example, you can start a channel with multiple people, and whoever has the time and knowledge can give you their advice. You can also search past questions and answers.

3. Ask the right questions of potential employers

Cramer had communicated to her manager that she preferred coding work, and earned confidence and trust in her work by succeeding in these smaller projects, when Foursquare leadership approached her about joining the engineer team, she said.

"Try to work for a company that values education and growth, especially if you are unsure of your career trajectory," Cramer said. You can do this by asking during interviews if a company has a budget for outside development, if new employees are matched with mentors, and if there is cross-collaboration between different teams, she added. This way, you can determine if a company views its employees as contributors who they want to invest in and keep around for smart returns, or if they view them as filling a hiring slot, Cramer said.

4. Try it yourself first

This tip can help you move from novice to expert, Cramer said. While asking for help is often necessary, those transitioning to a technical career should not use their coworkers as a crutch, she added.

"Bang your head against a problem for a while before you phone a friend, because you may find you can solve it on your own," Cramer said. "This helps you learn more quickly and thoroughly. The process of problem-solving is a vital skill that goes beyond coding--you wouldn't learn is someone just gives you the answer."

Coding languages and frameworks may change, but the process of debugging and deconstructing algorithms is the foundation of software engineering, and must be learned, Cramer said.

5. Be tenacious

Learning new technical skills is time consuming and difficult, Cramer said. You will need to consider the new projects you take on in this realm as side work for a while, because you need to learn but can't drop the ball on your existing responsibilities, she said. If you notice that the new technical work motivates you, it's an indication that you are passionate about the new skill or career, and that it's worth pursuing, Cramer said.

"I know I don't have the background most people in my field do," Cramer said. "But I'm proud of the fact that I don't know sorting algorithms as well as the next person, but I'm still really good at what I do."

Also see

Image: iStockphoto/Gorodenkoff Productions OU