This article was co-authored by Stephen Cognetta, MBA. Stephen Cognetta is the co-founder and CEO of Exponent, a learning platform that helps people prepare for and ace their tech interviews. Stephen specializes in coaching for product management, software engineering, product marketing, management, technical project management, and data science interviews. Stephen holds a BS in Computer Engineering from Princeton University, where he graduated Summa Cum Laude, and an MBA from Stanford University. Prior to founding Exponent, Stephen worked as a Product Manager for Google and co-founded HackMentalHealth.
There are 17 references cited in this article, which can be found at the bottom of the page.
wikiHow marks an article as reader-approved once it receives enough positive feedback. This article received 114 testimonials and 87% of readers who voted found it helpful, earning it our reader-approved status.
This article has been viewed 2,591,294 times.
As technology evolves and becomes a bigger part of everyday life, so too does the need for technology professionals. Software engineers design and guide the development of programs that computers use to make life a little easier for the rest of us.
Steps
Entering Computer Science as Your First Career
-
1Earn a degree in computer science or a related field. Most software engineer positions require a bachelor's degree.[1] Majoring in computer science will provide the most useful background for designing and perfecting software. Most often, interviewers will ask questions focusing on data structures and algorithms, so the theoretical background provided by traditional computer science degrees best prepares you for this. However, you will likely need to spend considerable time outside of the classroom writing software to learn how the theoretical concepts you're taught can apply in the practice of writing real software.
- It is possible to get hired with an associate's degree or even with nothing but self-taught experience. Pursuing this route, you should have a strong collection of completed and functional projects demonstrating your skills on a website like Github. You can also pursue open source projects to contribute fixes and new features to in case you don't have a concept of your own. Open source means that the code (source) for a piece of software is publicly viewable (open). Often, this allows anyone to submit code to a project, pending approval of the project maintainers. Finding an open source project with a welcoming community of developers can greatly accelerate your skills after you've established a baseline skillset.
EXPERT TIPStartup Founder & Engineering DirectorGene Linetsky is a startup founder and software engineer in the San Francisco Bay Area. He has worked in the computer science industry for over 30 years, with experience spanning staffing and management of engineering teams, game design and development, communication protocols, sales automation, and more. He has also been involved in incorporating computer science curriculum into high schools, developing educational software, and was a co-author on a computer science textbook. He is currently the Director of Engineering at Poynt, a technology company building smart Point-of-Sale terminals for businesses.Gene Linetsky, MS
Startup Founder & Engineering DirectorStudying any scientific discipline can help you code better. Gene Linetsky, who manages a team of software engineers, says: "Some of the best engineers come out of electrical engineering programs, because it teaches them mental discipline. Software engineering is an art that doesn't tolerate an artist's mindset—it really requires that discipline."
-
2Begin programming. Even if you're still in grade school, you can give yourself a huge head start by teaching yourself programming.
- Software engineering is not focused exclusively on coding, but you will need to know at least a couple languages, and a deeper understanding of how they function. There is no widespread agreement on which languages are most useful, but these are all popular choices:
- Be aware that some languages are better at solving some problems than others. No one language is better than another. No one language is objectively easier than another. Most languages were written with certain types of problems in mind and are better at solving them while weaker at solving others. Experiment and get a feel for your style. At first, only focus on getting the most basic of programs running in one language. Once you've gotten comfortable with one, start experimenting with a second. There is no need to learn all languages. Find your niche and become awesome at it!
- For youth, MIT (Massachusetts Institute of Technology) created the website and programming tool, Scratch. This tool teaches programming concepts using visual queues rather than intimidating text. It's also useful to adults who would feel more comfortable focusing on visual elements rather than abstract concepts and text.
Advertisement -
3Study data structures and algorithms. "Algorithm" simply means a formula or process for solving a problem.[2] Common examples are path-finding for finding the shortest distance between two points[3] , searching for finding a specific item of data in a large set of data, and sorting for arranging data in some order.[4] [5] A "data structure" is a certain way of organizing data to make it easier to solve certain problems.[6] Common examples are arrays that simply contain items of data one after another in some order and hash tables that store data by some "key" instead of a position in a list.[7] [8] Focus on developing and maintaining your skills in order to do your best once you've obtained a position as a software engineer.[9]
- (Optional) Study math. Mathematics will be a part of any computer science major, and many algorithms and data structures knowledge stems from mathematics. While not absolutely necessary, having a strong background in math will give you stronger core skills for analyzing and designing new algorithms. If you're targeting companies that do cutting-edge research and development, math will be a must. If you want a cushy corporate job, you can likely skim through higher level math.
- Discrete mathematics is a particularly useful area of study, as is any math course that involves software.
-
4Supplement your studies. Educational systems are often outdated. Textbooks are revised slower than software is updated. Educational institutions provide theoretical concepts and ways of thinking that can be critical to your success, and therefore should not be discounted. However, what will get you paid is being able to apply the theory to real-world software. This is where supplementing your studies comes in.
- Browse through StackOverflow. StackOverflow is a question and answer website for developers. You can search by tag to identify the technology, problem space, or language you want to improve in. Seeing others' answers will give you insight into how engineers solve problems. Bookmarking clever solutions will also help you build your problem-solving toolkit.
- Use practice sites for coding. Sites like CodeWars and CodinGame offer thousands of problems for you to test your skills against.
- Find a real-world community to help keep you inspired, develop connections, and give you guidance on where to focus your learning. Sites like Meetup can be great places to find software engineers and learn more about the profession. If you have trouble finding general engineering meetups, try to focus on specific languages or technologies. Check out social media sites, as well.
-
5Build software. The best way to improve your skills is to use them. Whether professional projects or personal, designing and coding software will teach you a great deal. For many employers, hands-on achievements matter more than GPA or theoretical knowledge.[10]
- Unless you plan on monetizing the software you build, put it online! Allowing potential employers to see the projects you've created and the code powering them allows them to assess your skills. It's also a great way to get feedback to help improve your skills.
-
6Seek an internship. Many software engineer students work as interns while they complete their studies.[11] This can be an excellent way to gain hands-on training and network with potential employers. Look for internship opportunities through job posting websites and networking.
-
7Find job opportunities. Software engineering is a rapidly growing field. You have a good chance of immediate employment, although you may start as a programmer and work your way up to software development.[12] Start searching before your degree is up:
- Colleges often help their alumni obtain a position. Talk to your professors, department staff, and the career services office about finding job opportunities.
- A large percentage of jobs happen through networking.[13] Use your personal contacts, and meet people in the field through career meetups and conferences.
- Check job search websites regularly. Create a profile and post your resume to professional sites and use them for networking as well as job applications.
-
8Consider your career goals. The software industry is always changing. Keep up by improving your knowledge and practical skills, and you'll have many chances to shape the direction of your career. Here are a few ways to improve your job prospects:
- Join a professional organization for networking opportunities.
- Consider a Master's degree if you have long-term plans in the field. While not a requirement for most positions, a Master's greatly improves your chances to work for an industry leader, in a management position, or in embedded software.[14] A Master's degree can also give you a considerable pay bump early in your career.
- Certification can be useful in some sub-fields and regions, but may decrease your desirability in others.[15] Talk to other engineers in your area of expertise before you enroll in one of these programs. Often, traditional corporate environments favor certificates, but start-ups and highly progressive companies can find them as a waste of time. However, there are always exceptions. Some countries also view certificates differently, so try to connect with software engineers and understand how the industry in your area operates.
Switching to a Software Engineer Career
-
1
-
2Learn programming. Practical software design and coding should be your first priorities. There are a variety of ways to earn this experience:[18]
- Teach yourself programming through online tutorials or friends willing to teach you.
- Take a massive open online course (MOOC).
- If you already have some experience, collaborate with other programmers on GitHub.
- A coding bootcamp is one of the fastest ways to learn, if you're willing to invest money and free time. Just make sure to do your research, as some bootcamps have poor reputations in industry and may not be worth the money.[19]
-
3Draw on your experience. Software may be a specialized subject, but your previous career doesn't have to involve computers to give you an edge. Software engineering can rely heavily on analytic skills, problem solving, and teamwork. In addition, familiarity with an industry may help you design software for that industry.
- Even hobbies and side interests can open up networking opportunities, or at least add passion to your job. Game apps, digital music suites, or business software are all examples
- If possible, automate portions of your job. Build tools to speed up tasks and make things easier. Software engineering at its core is problem solving. Writing software is just a software engineer's chosen method of solving problems. There are problems all around you already! There's no reason you can't start now.
-
4Enroll in a degree program (optional). It's very possible to land a programming job after a year or two of side experience, or even a few months with enough dedication. If you already have a bachelor's in any subject, along with some coding skills, consider going straight for a master's in software engineering.
- Be aware that this is an incredibly expensive option. However, if you have difficulty being self-motivated and joining a community or trying a hobby doesn't stick, this could be the most effective option.
-
5Network your way to a job. Almost every industry needs software developers, so your network from a previous career can be invaluable. Also consider joining a professional association, such as IAENG Society of Software Engineering, the IEEE Computer Society Technical Council on Software Engineering, or the Association for Computing Machinery. Also, look into local meetups or online communities. The software world can be surprisingly small, and finding the right connection can open up a myriad of opportunities.
Career Path Flowchart
Expert Q&A
Did you know you can get expert answers for this article?
Unlock expert answers by supporting wikiHow
-
QuestionHow can I break into software engineering if I don't have experience?Stephen Cognetta, MBAStephen Cognetta is the co-founder and CEO of Exponent, a learning platform that helps people prepare for and ace their tech interviews. Stephen specializes in coaching for product management, software engineering, product marketing, management, technical project management, and data science interviews. Stephen holds a BS in Computer Engineering from Princeton University, where he graduated Summa Cum Laude, and an MBA from Stanford University. Prior to founding Exponent, Stephen worked as a Product Manager for Google and co-founded HackMentalHealth.
Tech Interviewing CoachOne thing you could do is look for a position at a software engineering company that isn't explicitly related to the engineering side. For example, you could apply to be a testing engineer, or customer service rep. That way you can get your foot in the door and start learning on the job before transitioning over to the engineering side of things. -
QuestionWhat is a coding boot camp?Stephen Cognetta, MBAStephen Cognetta is the co-founder and CEO of Exponent, a learning platform that helps people prepare for and ace their tech interviews. Stephen specializes in coaching for product management, software engineering, product marketing, management, technical project management, and data science interviews. Stephen holds a BS in Computer Engineering from Princeton University, where he graduated Summa Cum Laude, and an MBA from Stanford University. Prior to founding Exponent, Stephen worked as a Product Manager for Google and co-founded HackMentalHealth.
Tech Interviewing Coach -
QuestionCan I teach myself to be a software engineer?Stephen Cognetta, MBAStephen Cognetta is the co-founder and CEO of Exponent, a learning platform that helps people prepare for and ace their tech interviews. Stephen specializes in coaching for product management, software engineering, product marketing, management, technical project management, and data science interviews. Stephen holds a BS in Computer Engineering from Princeton University, where he graduated Summa Cum Laude, and an MBA from Stanford University. Prior to founding Exponent, Stephen worked as a Product Manager for Google and co-founded HackMentalHealth.
Tech Interviewing Coach
References
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm
- ↑ https://www.geeksforgeeks.org/introduction-to-algorithms/
- ↑ https://isaaccomputerscience.org/topics/pathfinding?examBoard=all&stage=all
- ↑ https://www.techopedia.com/definition/21975/search-algorithm
- ↑ https://betterexplained.com/articles/sorting-algorithms/
- ↑ https://www.geeksforgeeks.org/data-structures/
- ↑ https://simple.wikipedia.org/wiki/Hash_table
- ↑ https://simple.wikipedia.org/wiki/Array_data_structure
- ↑ http://www.basic-mathematics.com/computer-software-engineer.html
- ↑ http://blog.smartbear.com/careers/math-nerds-vs-code-monkeys-should-computer-science-classes-be-more-practical/
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-4
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm#tab-4
- ↑ https://career.berkeley.edu/Info/Networking
- ↑ http://www.softwareengineerinsider.com/articles/jobs-with-a-masters-in-software-engineering.html#.VsPCECmGYwA
- ↑ https://www.quora.com/Are-certifications-for-software-engineers-worth-it
- ↑ http://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm
- ↑ http://study.com/articles/Become_a_Computer_Software_Engineer_Education_and_Career_Roadmap.html
- ↑ Stephen Cognetta, MBA. Tech Interviewing Coach. Expert Interview. 21 July 2020.
- ↑ Stephen Cognetta, MBA. Tech Interviewing Coach. Expert Interview. 21 July 2020.
- ↑ http://www.softwareengineerinsider.com/articles/software-development-software-engineering.html#.VsOo_imGYwB
About This Article
If you want to become a software engineer, start teaching yourself a programming language like C++ or Java, even if you’re still in grade school. To practice your programming skills, build your own software, starting with simple programs. While in college, pursue a degree in software engineering or a related field, and look for internship opportunities where you can get even more hands-on training. Once you have your degree, use job boards, networking, and your college’s career services to find a job as a software engineer. For information about how to switch careers to software engineering, keep reading!