If you enjoy solving problems, have an analytical mind, are good at math, and like to learn new things, a career as a software engineer might be right for you. Knowing how to code or having experience designing software will make it easier to get started, but plenty of talented software engineers have gained those skills along the way.
Whether you're trying to figure out what to do with your computer science degree or you're curious about switching careers, here's everything you need to know about becoming a software engineer.
Consider your education
Building your software engineering qualifications can begin with your college education, though this is not always the case. While a degree in computer science is a great start, software engineers arrive at their destination from a range of different directions.
"Don't discount your background," says Melanie Augustin, the executive director of coding school ZipCode Wilmington in Wilmington, Del. "If you are analytical and passionate about problem-solving, you can do this."
Of course, knowing how to code or having a basis in computer science will speed up the process.
"Having some level of proficiency in computer science — as a foundation — does make a difference," explains Sumit Chauhan, the corporate vice president of office engineering at Microsoft. "But if you have taken the time to learn a language or have tinkered, that is a great indication of future success in this field."
Complete an internship
Whether you have a degree in computer science or not, an internship can be the best way to get some experience, explore the industry, and work towards the requirements for software engineering positions.
"[Internships] are a learning opportunity for the intern and for us," says Chauhan. "We get a hands-on experience with you over, say, 12 weeks. We get to observe some of the traits we are looking for. We are looking for your work ethic, motivation, passion, creativity and how you work on a team. Are you introspective? Do you ask questions? Do you absorb things quickly? What is your depth of knowledge? Even if you are not a great coder to begin with, this gives us a chance to believe that you will become one."
While most companies offer internships, they can be competitive in the software field. Even for an unpaid position, the hiring managers will be looking for practical experience. If you've gotten your hands dirty with code — whether while working for someone else, as a volunteer or on a project of your own — that investment will stand out.
Compile your experience with the tech specific to your desired field
"What steps have you taken to get yourself familiar with the technology?" asks Chauhan.
This effort, more than any other thing, is what determines how much a hiring manager will feel you are necessary to the team, either as an employee or intern. You could have a degree in history or music, but if you have a passionate, demonstrable interest in building software tools, many entry-level software engineer jobs will be within your reach.
"One of the smartest people I worked with in engineering had a music degree," says Chauhan. "He was director of Office. He taught himself coding and joined Microsoft a long time back."
Your interests, outside of work and school, are an essential way to demonstrate that you will make a great software engineer. When writing your resume and cover letter, consider these questions:
- Do you game?
- What coding languages do you know?
- Did you grow up playing Minecraft?
- Do you dabble in building apps?
Boost your knowledge with code school
One way to get hands-on experience is to attend a code school. These intensive boot camp-style schools immerse you in coding, giving you practical experience under the tutelage of experts. They often also work with employers who hire from their pool of talent, offer scholarships, and sometimes repay student's fees after they hire them.
The trend of coding boot camps started near the tech mecca of the San Francisco Bay Area, but has spread across the country. You can find schools in many cities, with various financial models, scholarships and areas of focus.
Code schools can often be expensive, but there are free options. ZipCode Wilmington, for example, is a nonprofit that sometimes pays students while they attend. You can also find many free courses at CodeAcademy, Edx.org and Coursera.
Consider an advanced software engineering degree
If you didn't study computer science — or if you did but are struggling to find a software engineering job — you might be considering an advanced degree. A master's degree will likely open doors in software engineering across many industries. It's possible that earning an advanced degree will put higher level positions within reach.
Still, it's often a better (and more affordable) plan to get some experience before you embark on another degree. Getting your feet wet in the industry will help hone your interests, put projects under your belt, and provide insight into a potential specialization before you commit time and resources to more schooling.
Pursue a certification
Many industries encourage practitioners and aspirants to acquire certifications, and there are dozens of specific certifications available in the world of software engineering. You can get certified in developer's tools from many organizations, such as:
You can also choose to become a certified project manager. Earning these certifications may help you attract a hiring manager's attention.
"Certifications are interesting, in some cases," says Chauhan. "But, to me, they are a rubber stamp. What I look for is creativity and problem-solving. Did you participate in a hackathon? Did you participate in a coding contest? Did you build something interesting?"
What's more useful than proof that you have mastered something is your ability to acquire new skills.
"I look for an ability to learn," Chauhan explains. "Things change at a very fast rate. A few years back, Artificial Intelligence (AI) was not mainstream. It is now. If you are a traditional coder, you now have to reskill to work in AI now. And you have to learn machine learning."
Refine your resume
Every aspiring software engineer needs a resume that highlights their skills and experience. Your resume should emphasize the projects you have worked on, your ability to learn, your problem-solving skills and your desire to work on a team.