Is a software career right for me?

Without software, your computer’s just a pricy piece of plastic. Software career professionals design, build, and implement the programs that make computers perform tasks, from the most basic to the incredibly complex. They develop software that improve operations, make professionals more efficient, and solve problems. 

The Bureau of Labor Statistics (BLS) projects 22% growth for software developers and related professionals between 2020 and 2030, nearly three times the projected rate for all occupations. These workers are in demand and may enjoy salaries to match.

Here, we explore the many possible software career paths and what you might expect from each role. We’ll also hear advice from a software engineering professional. 

What kinds of options do I have?

In the table below, we look at the most common software career paths for professionals. For each profession, you’ll see the technical skill requirements and things that these professionals tend to have in common. 

Note that depending on the employer, each position varies in duties and requirements. The table provides a general snapshot of the field to help you choose a direction. 

Career path

Technical requirements might include:

You might like it if:

Artificial intelligence

  • Python, Java, and R programming languages
  • Big data platforms
  • Training in networking, computer science, engineering, robotics, and mathematics
  • You are creative and enjoy problem-solving
  • You are curious and innovative
  • You want to better understand and adapt human and computer interactions

Back end web development

  • Python, Java, PHP, and SQL language skills
  • Database and application program interface management
  • You are interested in manipulating data and providing clean and functional code
  • You enjoy gathering expectations from clients and delivering the appropriate product

Cloud development

  • Programming with  Java, Python, and JavaScript
  • Familiarity with Google, Amazon, and Microsoft platforms
  • Database and network management 
  • You are interested in maintaining and securing databases and networks
  • You are dynamic, capable, and interested in adapting and growing with technology

Desktop development

  • Python, Java, and C++ programming languages
  • Understand database principles and desktop frameworks
  • Capable of working with various operating systems 
  • You are interested in learning new technologies and solving user problems
  • You seek to improve user efficiency and effectiveness
  • You are creative with strong communication skills


  • Multiple software development languages, like Java, Python, and Scala
  • Automating scripting languages
  • Built-in security through protection, encoding, and access controls
  • You understand and appreciate IT operations
  • You understand what the customer wants and needs
  • You have interpersonal and collaborative skills

Embedded systems development

  • Systems design and industry design automation tools
  • C++, Python, C, and Java programming languages
  • Programmable logic design
  • You want to work with both hardware and software
  • Embedded systems, like system-on-chip, appeal to you
  • You want to work with new and nontraditional technologies 

Enterprise development

  • Diagrammatic languages, like Unified Modeling Language (UML)
  • Textual modeling language, like Object Constraint Language (OCL)
  • Computer Assisted Software Engineering tools
  • You are interested in integrated business technologies
  • You want to help solve problems for organizations
  • You want to work across the entire development lifecycle

Front end web development

  • HTML, CSS, and Java programming languages
  • Frameworks like Bootstrap, Foundation, and ReactJS
  • LESS and jQuery coding libraries
  • You are interested in the visual and experiential components of websites
  • Interested in new innovations and capable of adapting
  • Passionate about coding

Full stack web development

  • Python, JavaScript, CSS, and HTML programming languages
  • Database management and debugging
  • Understand web architecture, data structure, and web development languages like Rust
  • You are interested in back-end operations and front-end functionality and appearances
  • You have patience, along with strong communication and critical thinking skills

Graphic developers

  • Digital typography
  • Adobe design software, including Photoshop and InDesign
  • Motion design and video editing
  • UX/UI design
  • You have business knowledge and problem-solving skills
  • You have strong emotional intelligence, communication, and presentation skills
  • You understand what users and consumers want

Mobile app development

  • HTML, Swift, Java, and CSS programming skills
  • Debugging and unit testing
  • SQL language and Git software
  • Scrum and web development
  • You are a good communicator and problem-solver
  • You thrive in an ever-changing environment
  • You want to discover and create new applications and innovations

Security developer

  • Python and other scripting languages
  • Splunk or other threat-detection and incident-response tools
  • Data analytics 
  • DevOps and automation skills
  • You want to help protect users and organizations from cyberthreats
  • You are interested in managing projects and analyzing systems security 

Software testing

  • Familiar with Agile and Scrum models
  • Software verification, validation, and debugging
  • Git software and GitHub
  • Automation and coding
  • You understand the development life cycle
  • You enjoy debugging and problem-solving 
  • You thrive in a dynamic environment with new and revolving projects 

Video game development

  • C++, HTML, Java, SCQL, and CSS programming languages
  • Familiarity with various engines, including Unreal Engine and Unity
  • Animation and modeling tools
  • You love games and creating new and imaginative worlds
  • You are interested in giving users an immersive and engaging experience
  • You are creative, innovative, and imaginative

SEE: How to make your own video game

Lifestyle of a software professional

Most software developers and other software professionals work traditional full-time office hours. 

While the positions are collaborative and require extensive teamwork and communication, they may allow for remote work. Still, many software professionals work from a centralized office location to stay connected.

With constant developments and many possible industries, software careers offer a dynamic experience for most professionals. However, research requirements, tight deadlines, and overcoming stubborn development challenges can lead to stressful times on the job. 

Software professionals need to adapt and stay up to speed in the evolving information technology world to stay competitive. That means regular continuing education.

Salary expectations as a software professional

The salary expectations for software professionals depend on their specific career. The median annual wage for computer programmers was $93,00 in May 2021 and $110,140 for software developers in May 2020. 

While both fields pay high wages, demand differs considerably. The BLS projects a 10% decline in employment for programmers but a 22% growth for developers between 2020 and 2030. 

Demand may impact expected salaries, along with location, employers, and the professional’s education and experience. 

Computer and information research scientists typically have the highest salaries, earning median annual wages of $131,490 in May 2021. Information security analysts also earned high median annual wages of $102,600 in May 2021. 

What does it take to become a software professional?


The best coding bootcamps 2022

The best coding bootcamps 2022

A reputable coding camp is an alternative to to obtaining a four-year computer science degree. Graduates of the best coding camps generally are ready for many high-demand jobs.

Requirements to enter the software field depend on the position and the employer. While many software occupations require a bachelor’s degree at a minimum, other paths are possible. Candidates can access the field with an associate degree in some cases or pursue specialized training via bootcamps. 

Other routes include vendor-specific tech certifications, which may qualify graduates for positions working with those particular technologies and programs. Information technology professionals might also qualify for software careers based on their experience. 

While the BLS projects 13% growth for computer and information technology occupations between 2020 and 2030, the many available paths to the field make software careers competitive for applicants.

When deciding how to switch careers to tech, look at the requirements for software careers in your area.

Advice from a software professional

Jonathan Tanner, a white man with short dark-blonde hair and a long beard, smiles in a professional headshot.

Jonathan Tanner

Jonathan Tanner started his career as a software engineer intern for Barracuda Networks. In 2013, he won their annual hackathon at San Jose State University (where he obtained his computer science degree with minors in mathematics and linguistics). 

Jonathan takes part in computer science competitions to this day, such as the DEFCON Wireless Capture the Flag. At Jonathan’s first DEFCON, he became enthralled with cybersecurity research. He built Barracuda’s malware detection ATP platform and now helps lead their threat research program.

Responses have been edited for length and clarity.

ZDNet: What type of person is successful and thrives in a software career? What type of person may not be the best fit?

Jonathan Tanner: Software development requires problem-solving, attention to detail, a lot of research and reading (new technologies, documentation, etc.), often some creativity, and most of all, a passion for the job. 

ZDNet: What tasks do you typically work on?

JT: I oversee field Q&A requests and look into threats that Barracuda systems detect to write about campaigns or trends that we see on our blog. I have to be up to date on industry trends to stay relevant to the current threat landscape and what our customers and employees need to know as well as break down technical details so that anyone can understand the threats on at least a basic level. 

In addition, I work on systems to better collect and track the data that we see to make it easier and more efficient to do my job. I also occasionally evaluate potential new solutions that might be useful for better protecting our customers.

ZDNet: Who do you communicate with?

JT: I typically communicate with my team, as well as marketing and PR as relates to outreach such as Q and A requests and blogs. Sometimes I need to communicate with various product teams that might have insights or data on threats to look into. 

Prior to the pandemic, I would frequently seek events that would allow me to socialize with others that work in or are interested in software development and cybersecurity, such as conferences or meet-ups.

ZDNet: What kind of hours do you keep?

JT: Software development jobs often place more importance on the results achieved rather than the hours worked, to some extent, which can provide both flexibility as well as greater expectations. 

There was a time when my typical workday was from 10 a.m. to 7 p.m., since I had the flexibility to work those hours and would not describe myself as a “morning person.” Being results-oriented, however, this meant that if something went wrong with the software or critical bugs needed fixing, extra hours would be necessary. 

I feel fortunate to have only worked weekends a handful of times, but that is the norm for some companies and roles. 

The gaming industry, in particular, has what’s referred to as “crunch time,” which is the weeks or months leading up to a large release where it’s not uncommon for more time to be spent in the office than outside of it trying to finish the game on time.

ZDNet: Who are your coworkers?

JT: I typically interact with my team and marketing, but Barracuda also has large engineering and sales teams that can provide useful insights and data.

ZDNet: What knowledge do you use?

JT: While it is possible to do software development without a more traditional knowledge in computer science and math that colleges teach, I have certainly leaned on this information many times both in programming and finding bugs. Understanding how the software entities I’m using actually work behind the scenes helps in this regard. 

This relates to cybersecurity as well, since understanding how things work on a deeper level provides many useful insights. For example, understanding the various types of malware in use and how they work is necessary to analyze attacks and campaigns. 

Even understanding the tactics and motives of the attackers is very useful for gaining and providing insights into these as well.

ZDNet: Since becoming a software pro, has there been anything about the role that you didn’t expect or anticipate?

JT: When I first started, I definitely didn’t anticipate how much I would have to learn on the job to create software. 

Learning or knowing databases is pretty straightforward, but some aspects of the job, such as building the software itself and utilizing dependencies, were completely new and not covered very much in school. 

In conclusion

Software careers occupy a dynamic space full of different types of positions, professionals from diverse backgrounds, and constant change. The field welcomes new graduates from various study disciplines and experienced professionals changing careers. Prospective software professionals can prepare with a college or university degree, a bootcamp, or industry certification. 

Use this guide to help you decide which software career is best for you and find a path to the career that makes the most sense for your goals and location.

Unless otherwise noted, job growth and salary data was drawn from the U.S. Bureau of Labor Statistics as of April 27, 2022.