PDF download Download Article PDF download Download Article

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.

Method 1
Method 1 of 2:

Entering Computer Science as Your First Career

PDF download Download Article
  1. 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 TIP
    Gene Linetsky, MS

    Gene Linetsky, MS

    Startup Founder & Engineering Director
    Gene 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
    Gene Linetsky, MS
    Startup Founder & Engineering Director

    Studying 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."

  2. 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
  3. "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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Advertisement
Method 2
Method 2 of 2:

Switching to a Software Engineer Career

PDF download Download Article
  1. The software development field has excellent job growth. Software engineering is a particularly desirable focus compared to basic programming. Median software developer income is roughly $80,000 – $100,000 a year in the United States.[16] [17]
  2. 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]
  3. 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.
  4. 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.
  5. 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.
  6. Advertisement

Expert Q&A

Search
Add New Question
  • Question
    How can I break into software engineering if I don't have experience?
    Stephen Cognetta, MBA
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    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.
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    Expert Answer
    One 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.
  • Question
    What is a coding boot camp?
    Stephen Cognetta, MBA
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    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.
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    Expert Answer
    It's basically a crash course in coding that's designed to get you ready for an interview. They're a great way to break into the industry although you do have to be ready to put the work in!
  • Question
    Can I teach myself to be a software engineer?
    Stephen Cognetta, MBA
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    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.
    Stephen Cognetta, MBA
    Tech Interviewing Coach
    Expert Answer
    Self-learning is definitely a great way to get started. Things like Free Code Camp are a great resource for practicing and learning new skills. Once you've got a handle on the actual coding and software stuff, you can always transition to a boot camp or degree program.
See more answers
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement

Tips

  • Job titles in this industry are not standardized. "Software developer" is a broad umbrella term. While "software engineering" is supposed to involve more design and specialized knowledge, some companies use this title to spruce up a lower-level programming job.[20]
  • If you want to work for a specific company, check their website's career page directly.
  • Go old school! Practice writing code on paper before jumping into the computer!
Show More Tips
Submit a Tip
All tip submissions are carefully reviewed before being published
Name
Please provide your name and last initial
Thanks for submitting a tip for review!
Advertisement

About This Article

Stephen Cognetta, MBA
Co-authored by:
Tech Interviewing Coach
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. This article has been viewed 2,606,174 times.
237 votes - 87%
Co-authors: 144
Updated: November 28, 2023
Views: 2,606,174
Categories: Engineering Careers
Article SummaryX

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!

Did this summary help you?

Thanks to all authors for creating a page that has been read 2,606,174 times.

Reader Success Stories

  • Ntina Tsoeute

    Ntina Tsoeute

    Aug 14, 2017

    "I have a clue on how to become a software engineer. I am keen to approach each step while commencing the course of..." more
Share your story

Did this article help you?

Advertisement