Thank you for visiting nature.com. You are using a browser version with limited support for CSS. To obtain the best experience, we recommend you use a more up to date browser (or turn off compatibility mode in Internet Explorer). In the meantime, to ensure continued support, we are displaying the site without styles and JavaScript.

  • View all journals
  • Explore content
  • About the journal
  • Publish with us
  • Sign up for alerts
  • CAREER Q&A
  • 31 May 2022

Why science needs more research software engineers

  • Chris Woolston 0

Chris Woolston is a freelance writer in Billings, Montana.

You can also search for this author in PubMed   Google Scholar

Paul Richmond poses for a portrait in his garden

Paul Richmond is a research software engineer in the United Kingdom. Credit: Shelley Richmond

In March 2012, a group of like-minded software developers gathered at the University of Oxford, UK, for what they called the Collaborations Workshop. They had a common vocation — building code to support scientific research — but different job titles. And they had no clear career path. The attendees coined a term to describe their line of work: research software engineer (RSE).

A decade later, RSE societies have sprung up in the United Kingdom, mainland Europe, Australia and the United States. In the United Kingdom, at least 31 universities have their own RSE groups, a sign of the growing importance of the profession, says Paul Richmond, an RSE group leader at the University of Sheffield and a past president of the country’s Society of Research Software Engineering. Nature spoke with Richmond about life as an RSE, the role of software in the research enterprise and the state of the field as it reaches its tenth anniversary.

What do RSEs do?

Fundamentally, RSEs build software to support scientific research. They generally don’t have research questions of their own — they develop the computer tools to help other people to do cool things. They might add features to existing software, clear out bugs or build something from scratch. But they don’t just sit in front of a computer and write code. They have to be good communicators who can embed themselves in a team.

What sorts of projects do they work on?

Almost every field of science runs on software, so an RSE could find themselves working on just about anything. In my career, I’ve worked on software for imaging cancer cells and modelling pedestrian traffic. As a postdoc, I worked on computational neuroscience. I don’t know very much about these particular research fields, so I work closely with the oncologists or neuroscientists or whomever to develop the software that’s needed.

Close up of multi-coloured code on a computer screen

Building code is just one part of the role of a research software engineer. Credit: Norman Posselt/Getty

Why do so many universities support their own RSE groups?

Some high-powered researchers at the top of the academic ladder can afford to hire their own RSE. That engineer might be dedicated to maintaining a single piece of software that’s been around for 10 or 20 years. But most research groups need — or can afford —an RSE only on an occasional basis. If their university has an RSE group, they can hire an in-house engineer for one day a week, or for a month at a time, or whatever they need. In that way, the RSE group is like a core facility. The university tries to ensure a steady workflow for the group, but that’s usually not a problem — there’s no shortage of projects to work on.

What else do RSEs do?

A big part of the job is raising awareness about the importance of quality software. An RSE might train a postdoc or graduate student to develop software on their own. Or they might run a seminar on good software practices. In theory, training 50 people could be more impactful than working on a single project. In practice, it’s often hard for RSEs to find the time for teaching, mentorship and advocacy because they’re so busy supporting research.

Do principal investigators (PIs) appreciate the need for RSEs?

It’s mixed. In the past, researchers weren’t always incentivized to use or create good software. But that’s changing. Many journals now require authors to publish code, and that code has to be FAIR: findable, accessible, interoperable and reproducible. That last term is very important: good software is a crucial component of research reproducibility. We explain to PIs that they need reliable code so they won’t have to retract their paper six months later.

Who should consider a career as an RSE?

Many RSEs started out as PhD students or postdocs who worked on software to support their own project. They realized that they enjoyed that part of the job more than the actual research. RSEs certainly have the skills to work in industry but they thrive in an environment of cutting-edge science in academia.

Most RSEs have a PhD — I have a PhD in computer graphics — but that’s not necessarily a requirement. Some RSEs end up on the tenure track; I was recently promoted to professor. Many others work as laboratory technicians or service staff. I would encourage any experienced developers with an interest in research to consider RSE as a career. I would also love to see more people from under-represented groups join the field. We need more diversity going forward.

What’s your advice for RSE hopefuls?

Try working on a piece of open-source software. If possible, do some training in a collaborative setting. If you have questions, talk to a working RSE. Consider joining an association. The UK Society of Research Software Engineering is always happy to advise people about getting into the field or how to stand out in a job application. People in the United States can reach out to the US Research Software Engineer Association.

research software development engineer

NatureTech hub

If you’re a PhD student or postdoc, give yourself a challenge: try to convince your supervisors or PI that they really need to embrace good software techniques. If you can change their minds, it’s a good indication that you have the passion and drive to succeed.

What do you envision for the profession over the next 10 years?

I want to see RSEs as equals in the academic environment. Software runs through the entire research process, but professors tend to get most of the recognition and prestige. Pieces of software can have just as much impact as certain research papers, some of them much more so. If RSEs can get the recognition and rewards that they deserve, then the career path will be that much more visible and attractive.

doi: https://doi.org/10.1038/d41586-022-01516-2

Related Articles

research software development engineer

Learn to code to boost your research career

Love science, loathe coding? Research software engineers to the rescue

How to break big tech’s stranglehold on AI in academia

Correspondence 09 APR 24

Use fines from EU social-media act to fund research on adolescent mental health

‘Without these tools, I’d be lost’: how generative AI aids in accessibility

‘Without these tools, I’d be lost’: how generative AI aids in accessibility

Technology Feature 08 APR 24

So … you’ve been hacked

So … you’ve been hacked

Technology Feature 19 MAR 24

No installation required: how WebAssembly is changing scientific computing

No installation required: how WebAssembly is changing scientific computing

Technology Feature 11 MAR 24

AI-generated images and video are here: how could they shape research?

AI-generated images and video are here: how could they shape research?

News Explainer 07 MAR 24

How I harnessed media engagement to supercharge my research career

How I harnessed media engagement to supercharge my research career

Career Column 09 APR 24

How we landed job interviews for professorships straight out of our PhD programmes

How we landed job interviews for professorships straight out of our PhD programmes

Career Column 08 APR 24

Three ways ChatGPT helps me in my academic writing

Three ways ChatGPT helps me in my academic writing

Group Leader at Católica Biomedical Research Centre and Assistant or Associate Professor at Católica

Group Leader + Assistant/Associate Professor, tenure-track position in Biological and Biomedical Sciences, Data Science, Engineering, related fields.

Portugal (PT)

Católica Biomedical Research Centre

research software development engineer

Faculty Positions at SUSTech Department of Biomedical Engineering

We seek outstanding applicants for full-time tenure-track/tenured faculty positions. Positions are available for both junior and senior-level.

Shenzhen, Guangdong, China

Southern University of Science and Technology (Biomedical Engineering)

research software development engineer

Locum Associate or Senior Editor, Nature Cancer

To help us to build on the success of Nature Cancer we are seeking a motivated scientist with a strong background in any area of cancer research.

Berlin, Heidelberg or London - Hybrid working model

Springer Nature Ltd

research software development engineer

Postdoctoral Research Fellows at Suzhou Institute of Systems Medicine (ISM)

ISM, based on this program, is implementing the reserve talent strategy with postdoctoral researchers.

Suzhou, Jiangsu, China

Suzhou Institute of Systems Medicine (ISM)

research software development engineer

The Associate or Senior Editor will contribute to shaping the future of Nature Cancer journal.

research software development engineer

Sign up for the Nature Briefing newsletter — what matters in science, free to your inbox daily.

Quick links

  • Explore articles by subject
  • Guide to authors
  • Editorial policies

Research Computing and Data Services Learning Resources

Supporting research software and research software engineers.

Posted October 7, 2019 by Christina Maimone

This post accompanies a poster to be presented at Educause 2019 Conference , which brings together IT professionals in higher education.  If you’re looking for research software engineering support at Northwestern, connect with our Research Data Services .

What is Research Software?

Research software is a broad term that includes software programs, languages, libraries, scripts, and tools developed to support research. Research software helps researchers make new discoveries and share their methods with others.

Why is Research Software Important?

80% of articles published in Science and Nature explicitly mention research software. [2]

Between 1995 and 2016, the National Science Foundation awarded $9.6 billion in funding to projects that included software in their abstracts. [1]

95% of researchers report using research software, and 2/3 could not do their research without it. [4]

On average, scientists spend 30% of their time developing research software and 40% of their time using research software. [5]

Challenges for Research Software

Inexperienced developers: Research software is often written by researchers and students with limited experience with software development practices.

Sustainability is a requirement: Scientific studies can run for years or decades. Both the original research teams and subsequent researchers building on the results need to be able to run the software required to ensure consistency in methods and data, test new data, and reproduce results.

Incentives: Software is critical to research, but the creation and maintenance of software is often not recognized in hiring, promotion, and tenure decision processes. Those who write research software professionally often lack permanent and well-funded positions within academia.

Examples of Research Software

GWpy: one of dozens of software packages used by the LIGO project to detect gravitational waves.

International Mathematics and Statistics Library: A foundational software library that enables efficient numeric calculations in multiple programming languages. It is a building block of scientific software.

NVivo: This qualitative data analysis program was built to help researchers in social science and humanities.

Bioconductor: software for the analysis of genomic data, largely written in and for the R statistical programming language.

SPSS: Now part of IBM, this statistical analysis software was created by graduate students for research analysis. The software is still used by researchers.

Omeka: An open source web publishing platform used to showcase digital humanities collections.

Pymatgen: A Python library used for materials analysis.

Who Creates Research Software?

Students: From undergraduate research assistants to graduate students starting their own careers, students write, maintain, and use research software in every domain. Many have limited or no training in programming or software development when they start.

Faculty: In addition to creating software, faculty may also be managing software development teams. They may also have limited or no training in programming or software development.

Postdocs and Staff Researchers: People in these positions may be developing software full time, or they may be creating software as part of their research.

University Staff: Staff in IT departments, libraries, and academic departments both develop tools on their own and support researchers by developing software for specific projects.

National Laboratories: Research groups create software for their own project, but national labs also support large-scale software development projects that build infrastructure for the scientific community.

Companies: Companies create research software for use in their own research operations, to sell as commercial products, and by contributing to open source projects on which researchers rely.

Volunteers: Many research software projects are open source. They welcome contributions from anyone willing to devote time to building, maintaining, and documenting code.

Research Software Engineers: A growing number of people are focused on developing research software professionally. They are employed at universities, companies, national laboratories, and other organizations.

What is a Research Software Engineer (RSE)?

Research Software Engineers (RSEs) combine knowledge of a research domain and the research process with software development skills and practices to create software for research. They regularly apply expertise in programming to advance research.

RSEs knowledge of the research lifecycle allows them to adapt software engineering practices to a research environment.

Some RSEs started as software developers and then learned about the research process and research problems software can help solve. Other RSEs started as researchers who needed to write software to answer their research questions or share their research with the world.

RSEs work in all research domains.

Job titles RSEs may go by:

  • software developer
  • applied scientist
  • software engineer
  • computational scientist
  • computational specialist
  • data scientist
  • bioinformatician
  • systems developer
  • research assistant

Why are Research Software Engineers Necessary?

Researchers can’t be experts in everything! Modern research requires teams of specialists working together. Software development is one of the specialized skillsets that make research happen.

Many researchers know how to code, but they are not familiar with software development practices. For example, a majority of researchers do not use standard software testing practices. [6]

RSEs bring knowledge of version control, testing, deployment, software design, distribution, documentation, automation, and more to the process. And they know how to adapt these practices to work well in a research environment. By devoting time to developing these skills, learning best practices, and engaging with the broader software development community, RSEs help make research software more robust, manageable, and sustainable.

Similarly, traditional software developers may not have the knowledge of the research process or the domain of a specific research application to effectively develop software. RSEs spend time learning about the methods, terminology, data, and approaches used in the research they support. Research software engineers may need to read scientific publications and figure out how to implement the algorithms and methods reported in them. RSEs may also contribute to writing scientific articles. RSEs need to talk to and work with researchers to gather requirements, get feedback, and determine how to test the software they create.

RSEs are needed to combine research and software development skills.

What can IT Organizations do to Support Research Software?

Learn about the research software development projects at your institution. Ask researchers and research staff about their work. Find out if they’re writing code. Researchers themselves don’t always realizing they are developing software!

Create mechanisms for installing and deploying novel software on researcher’s computers and university systems. Make it easy to do the right thing AND research, which may require novel software.

Provide resources for and assistance with testing and deploying software. Deploying research software may require setting up custom domains, hosting servers, and integrating with other services. Help researchers and RSEs find and use the best resources for these tasks. They may need to test and deploy software on your systems, but they usually aren’t system admins. Help them understand your concerns and policies, and get them the information and support they need to be successful.

Encourage conversations about software sustainability. Help researchers develop a plan to ensure their software will continue to work, even after the person who wrote it leaves the institution.

Offer workshops and training on software development practices. IT organizations may be the best source of software development skills and knowledge at an institution. Encourage your developers to share their expertise.

Consider offering, or connecting researchers with, software engineering services. Not all researchers can be or want to be software developers. Yet they may still need software created to conduct or share their research. Offer development services directly, or help connect researches with vetted freelance developers or companies offering software development services. Researchers may not have the knowledge to evaluate and select quality software developers to work on their projects. Help them by assisting with hiring processes.

What can IT Organizations do to Support Research Software Engineers?

Welcome them as colleagues. RSEs are developers, even though they may go by many different names. Help them connect with software developers in your organization.

Recognize their unique skill set. While RSEs may have many skills in common with IT software developers, they have also developed significant expertise in research. It is this combination of skills that helps them do their work well. Help your institution’s leadership recognize how RSEs are different from IT or other non-research software developers.

Help them get the resources they need. RSEs may have different IT requirements than other researchers. Help them navigate IT organizations and policies to find the right people and resources. Work with them to find solutions that meet their needs and are still manageable and sustainable for your organization.

Create research software engineering networking groups. RSEs often lack the networks of other developers they need to learn new skills, discuss software development problems, get advice, or review code. Help them connect with each other by sponsoring events to bring them together and making introductions between RSEs you know.

Consider giving them an organizational home. Many RSEs work in temporary, funding-dependent positions. They may lack colleagues and managers who understand their work and have limited career development training or prospects. Creating full-time staff positions together in a single group helps provide RSEs with colleagues, training, and a career. It also provides flexibility for both RSEs and researchers to work together on a greater variety of projects. The best arrangement will vary by institution, but start a conversation with both researchers employing RSEs and organizational leadership to explore what’s possible.

Are you a Research Software Engineer?

  • Are you employed to develop software for research?
  • Are you spending more time developing software than conducting research?
  • Are you employed as a postdoctoral researcher, even though you predominantly work on software development?
  • Are you the person who does computers in your research group?
  • Are you sometimes not named on research papers despite playing a fundamental part in developing the software used to create them?

If you answered yes to one of the above questions, you may be a research software engineer.  Whether you’re an RSE or an RSE ally, join an RSE organization to meet other RSEs, learn about RSE events and resources, and raise awareness of the importance of software, and RSEs, in research.

RSE Organizations

US: https://us-rse.org

UK: https://rse.ac.uk/

Germany: https://www.de-rse.org

Netherlands: https://nl-rse.org/

Nordic Countries: http://nordic-rse.org/

Software Sustainability Institute: https://www.software.ac.uk

US Research Software Sustainability Institute: http://urssi.us

Better Scientific Software: https://bssw.io/

[1] Katz, D. S., McHenry, K., Reinking, C. & Haines, R. Research Software Development Management in Universities: Case Studies from Manchester’s RSDS Group, Illinois’ NCSA, and Notre Dame’s CRC. in 2019 IEEE/ACM 14th International Workshop on Software Engineering for Science (SE4Science) 17–24 (2019). doi:10.1109/SE4Science.2019.00009

[2] Nangia, U. & Katz, D. S. Understanding Software in Research: Initial Results from Examining Nature and a Call for Collaboration. in 2017 IEEE 13th International Conference on e-Science (e-Science) 486–487 (2017). doi:10.1109/eScience.2017.78

[3] Simon Hettrick. softwaresaved/software_in_research_survey_2014: Software in research survey. (Zenodo, 2018). doi:10.5281/zenodo.1183562

[4] Nangia, U. & Katz, D. S. Track 1 Paper: Surveying the U.S. National Postdoctoral Association Regarding Software Use and Training in Research. (2017). doi:10.6084/m9.figshare.5328442.v3

[5] Hannay, J. E. et al. How do scientists develop and use scientific software? in 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering 1–8 (2009). doi:10.1109/SECSE.2009.5069155

[6] Prabhu, P. et al. A Survey of the Practice of Computational Science. in State of the Practice Reports 19:1–19:12 (ACM, 2011). doi:10.1145/2063348.2063374

Categories: Research Computing

research software development engineer

The United States Research Software Engineer Association

A community of people who make research software happen.

Read our latest newsletter

In this monthly newsletter, we share recent, current, and planned activities of the US-RSE Association, and related news that we think is of interest to US-RSE members.

RSE Career Guide

A joint publication from US-RSE and the IEEE Computer Society

Community Awards

US-RSE is accepting applications for the US-RSE Excellence in Service and US-RSE Impact Awards! Nominations close on March 29, 2024.

What is US-RSE?

The US Research Software Engineer Association (US-RSE) is a community-driven effort that brings together people who write and contribute to research software within the US. We aim to build a connective, supportive, and diverse community of individuals from universities, laboratories, knowledge institutes, companies, and other enterprises. We strive to advocate for our members, raise awareness of the importance of the RSE role, and actively improve diversity within the RSE profession. We welcome all (including those outside the US) who support our organizational mission , especially those who identify as RSEs, those interested in a career as an RSE, and those who may not be RSEs but consider themselves RSE “allies” or manage individuals in RSE roles.

research software development engineer

Great ideas deserve great software.

Research Software Engineers use expertise in programming to advance research. This includes researchers who spend a significant amount of time programming, full-time software engineers writing code to solve research problems, and those somewhere in-between. We aspire to apply the skills and practices of software development to research to create more robust, manageable, and sustainable research software.

Working Groups

Working groups, including Diversity, Equity, and Inclusion (DEI) and a website committee, bring together community members with common interests.

Are you looking for a research software engineering job? Check out our job board with jobs from across the community.

Software Engineering

At Google, we pride ourselves on our ability to develop and launch new products and features at a very fast pace. This is made possible in part by our world-class engineers, but our approach to software development enables us to balance speed and quality, and is integral to our success. Our obsession for speed and scale is evident in our developer infrastructure and tools. Developers across the world continually write, build, test and release code in multiple programming languages like C++, Java, Python, Javascript and others, and the Engineering Tools team, for example, is challenged to keep this development ecosystem running smoothly. Our engineers leverage these tools and infrastructure to produce clean code and keep software development running at an ever-increasing scale. In our publications, we share associated technical challenges and lessons learned along the way.

Recent Publications

Some of our teams.

Climate and sustainability

Software engineering and programming languages

We're always looking for more talented, passionate people.

Careers

research software development engineer

Software Development vs. Software Engineering: Which Career Path Is Right for You?

When beginning your professional programming journey, two career paths probably stood out to you—software engineering and development. Several programming courses, books, online educators, and even job postings use the terms "software engineer" and "software developer" interchangeably. This leaves beginners and mid-level programmers often confused about which career path to pursue.

As most rightfully guess, software engineering encompasses software development, but what else differentiates both careers? Keep reading as we study the debate: software engineering vs. software development, their job roles, and what these popular careers entail.

1. Educational Background

Traditional education is usually the launchpad for success in most careers. But what distinguishes the educational background of a software developer from a software engineer? Let’s discuss it below.

Software Developer

Aspiring software developers usually opt for associate's, bachelor's, or master's degrees in computer science, computer programming, or other relevant fields to acquire the necessary training.

Alternatively, you can develop your skills by attending career-training programs and coding bootcamps. And utilizing unique coding bootcamp tips like networking and specializing in a domain will make you an outstanding developer in no time.

Furthermore, some may supplement their training with self-taught skills. It’s not rare to encounter individuals who have largely or completely taught themselves the skills required for this profession.

Software Engineer

Conversely, you’ll require much more than a few months in coding bootcamps to become a skilled software engineer. A successful software engineering career requires a strong educational background, extensive training, and at least minimal knowledge of every part of the development process.

To qualify for entry-level or junior positions here, you must have a bachelor's degree in software engineering, computer science, or a related field.

Like software development, self-learning is also an option in software engineering, though it’s significantly harder. Occasionally, you may encounter some software developers who became software engineers through years of difficult hands-on experience and hard work.

2. Skills and Tools

While there’s a large intersection of skills and tools in both careers, there are still distinct abilities that differentiate a developer from an engineer.

The overlap in the required skills for both professions involves creating systems and applications. Depending on your chosen domain, the skills you’ll need for software development will vary, but knowledge of programming languages are generally necessary.

For example, while app developers may focus on Flutter and Dart, Java or C++ is more crucial to game developers.

In addition, software developers and engineers must possess strong problem-solving and analytical skills. As a software developer, it's important to be creative in your solutions to draw the attention of employers and hiring managers.

Finally, a strong understanding of one or more cloud services, such as AWS, is necessary for creating well-developed, functional software. Additionally, you’ll need to understand using GitHub on Windows or macOS, as most companies use it for source code management.

Software engineers must know and apply engineering principles to their work by methodically providing software solutions. While most software developers focus on the programming languages specific to their field, software engineers are well-versed in multiple languages and development tools. This allows them to solve complex industry challenges effectively.

Software engineers typically work in teams, while software developers may have more flexibility to work independently. Therefore, software engineers need to have excellent interpersonal and communication skills for effective collaboration with other engineers, programmers, and cybersecurity specialists.

3. Roles and Responsibilities

The respective job description of software developers and engineers forms the bedrock for choosing a career path between the two. Thus, understanding what they do helps you identify what aligns with your passion.

The title "developer" implies their primary role in overseeing the creation phase of a product's life cycle. This means that your primary responsibilities will involve building and assessing web, mobile, and desktop applications.

Furthermore, you have the freedom to work independently when creating a product. This allows for flexibility in how you approach a task. For instance, you can use the Tkinter module, Flask framework, or PySimpleGUI module to build a to-do application using Python .

In contrast, a software engineer would follow a more structured process that adheres to engineering principles.

These engineers have a broader scope of work than software developers. They manage the entire product life cycle and ensure the system's usability and stability. As such, it ensures that all components, computers, networks, and servers work together seamlessly.

To work in this role, you’ll need a solid knowledge of system operation and the implications of how problems in one area impact another. You’ll also need a breakdown of high-level and low-level system design differences to understand the planning process better. Software engineers may also work more closely with hardware engineers to integrate software and hardware components.

Finally, they work alongside professionals in tech teams, such as designers, cybersecurity experts, and quality assurance experts. This ensures the smooth integration of guidelines and techniques from these team members into the software to guarantee the user’s satisfaction.

4. Salary and Career Prospects

As the world embraces digitalization, it's no secret that both careers are in high demand and have a promising career outlook. According to ZipRecruiter , software developers earn around $105,047 a year. On the other hand, software engineers earn about $139,952 annually in the US, also stated by ZipRecruiter .

However, these numbers can vary depending on experience, location, skill set, and employer. Still, software developers and engineers are on an upward trajectory. In the US, both careers fall under a wide category of computer developer professions, according to the Bureau of Labor Statistics .

Furthermore, the Bureau of Labour Statistics projects a minimum job growth of 15%—25% for software developers—between 2021 and 2031 in the industry, potentially adding over 350,000 jobs. This growth rate is significantly faster than the average for all occupations.

But on a general scale, software engineers usually earn more than software developers due to their extensive workload and greater responsibilities.

5. Work Environment

The work environment may be the middle ground between both professions. However, many factors determine what it looks like and how conducive it will be for you.

The work environment for software developers can differ based on the organization's type, size, location, and the projects they work on. Most employers offer flexible or remote work options based on project needs and company policies.

Also, meeting deadlines, fixing bugs, and responding to user feedback usually translate into long work hours or overtime.

A software engineer’s work environment resembles a developer's, as both roles involve creating, analyzing, and maintaining software systems. Thus, software engineers typically are involved with software planning and designing, creation, maintenance, and all associated tasks.

As a professional in this field, you can expect to work longer hours and take on greater responsibilities than a software developer. It is also more common for individuals in this role to work as full-time employees rather than freelancers. Working remotely is typical for this career, but you may have more meetings than a developer.

Choose the Right Software Career for You

While software engineering and development appear similar on the surface, a closer look reveals distinct requirements and responsibilities. Carefully study each job role, description, and how you can become either, then choose the career that best resonates with you.

Software Development vs. Software Engineering: Which Career Path Is Right for You?

  • Online Degree Explore Bachelor’s & Master’s degrees
  • MasterTrack™ Earn credit towards a Master’s degree
  • University Certificates Advance your career with graduate-level learning
  • Top Courses
  • Join for Free

What Does a Software Engineer Do?

Software engineers design and create computer systems and applications to solve real-world problems.

[Featured Image] A software engineer works on his computer in an office.

Software engineers, also called software developers, create software for computers and applications. If you’re an analytical thinker who enjoys solving problems and making digital products easier, a career as a software engineer may be rewarding.

What is software engineering?

Software engineering is the branch of computer science that deals with the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users.

Software engineer tasks and responsibilities

Successful engineers know how to use suitable programming languages, platforms, and architectures to develop everything from computer games to network control systems. In addition to building their systems, software engineers also test, improve, and maintain software built by other engineers. 

“I get excited about anything that involves solving problems, whether it be figuring out how to optimise a certain part of an existing application or entirely coming up with new applications to solve certain needs,” says Murtadha Al-Tameemi, a software engineer at Meta . “Problems, in general, stimulate my brain and give me great satisfaction."

In this role, your day-to-day tasks might include:

Designing and maintaining software systems

Evaluating and testing new software programs

Optimising software for speed and scalability

Writing and testing code

Consulting with clients, engineers, security specialists, and other stakeholders

Presenting new features to stakeholders and internal customers

Systems developer vs application developer

Software engineers usually fall into one of two categories: systems developers or application developers. 

As a systems developer (sometimes called a backend engineer), you’ll build computer systems and networks that front-end (user-facing) applications will need. You can do this by:

Ensuring that different types of software programs communicate with each other on one platform

Creating and enforcing IT standards within an infrastructure 

Maintaining documentation of IT systems 

Updating to new technologies as needed

Collaborating with development teams, senior systems architects, and data science professionals 

Working as an application developer is more client-focused. You may work on either the front or back end of the system, designing software that the end user will interact with. Tasks might include:

Developing applications for iOS, Android, Windows, or other operating systems

Conducting an analysis of requirements and tweaking software as needed

Releasing software updates

Working with graphic designers, customer service staff, project managers, and other customer-facing departments 

Why should I pursue a career as a software engineer?

If you enjoy solving problems and have strong analytical skills, a career as a software engineer can be both fun and challenging. As the Government of India continues to prioritise the Digital India Programme, the availability of digital resources and the need for digitally literate professionals are projected to grow quickly [ 1 ]. For this reason, a career in software engineering has a high potential to be in demand in the coming years.

Choosing a career as a software engineer gives you opportunities to work in many different industries and fields, as nearly all businesses use software. Whether you enjoy finances, entertainment, sports, real estate, or some other industry, there’s a good chance there are jobs for software engineers. 

It’s also a career that allows flexibility in where you work. You may be able to work from home for companies in other states or even different countries. The important thing is that you can meet deadlines and deliver a project on time.

Software engineer salary

Working as a software engineer can be challenging and engaging and tends to pay well. The annual average salary for a software engineer in India is ₹7,55,000, according to Glassdoor as of April 2024 [ 2 ]. This yearly salary increases with experience, as senior software engineers earn ₹16,00,000 on average in India, and software engineer IVs can expect around ₹24,00,000 annually.

Career paths in software engineering

Once you become a software engineer, you can choose which path you want to take (applications or systems) and how far you want to progress with it. You can decide to advance toward a role as a senior software engineer, or you can continue gaining certifications and experience to advance to roles like project manager or systems manager. As a software engineer, you have both flexibility and mobility to create the career experience that is most appealing to you. 

How to become a software engineer 

Getting a job as a software engineer involves building the right technical and workplace skills. Some jobs also require specific qualifications or certifications to validate your skills. Software engineers and developers are typically expected to have an undergraduate (UG) or postgraduate (PG) qualification. Entering these programmes often requires relevant coursework and high marks in 12th class, including subjects such as maths, chemistry, and physics. 

Focus on engineering and technology coursework to show that you are building related professional skills in undergraduate studies. Diplomas, Bachelor of Engineering (BE), and Bachelor of Technology (BTech) coursework can be specialised in software engineering and development. They can set you up for an entry-level role or postgraduate coursework. Completing undergraduate coursework without any backlogs and scores over 65 percent is often desired to show potential employers you have strong subject matter knowledge. At the undergraduate level, many students must complete an entrance exam to enter a software engineer or software developer-related programme. Exams to consider include EAMCET, JEE Mains or Advanced, VITEE, SRMJEEE, MHTCET, or BITSAT.

Postgraduate qualifications, such as a master’s degree or PhD, can increase your earning potential and expand your professional opportunities. First, some programmes require you to take an entrance exam, such as GATE or PGECET. In the programme, you may choose to specialise in software engineering. Many software engineers become specialised engineers and developers and decide to work in areas such as mobile development, big data, web applications, or DevOps. When applying for a position after completing a master’s degree, employers may look to see that you scored marks above 70 per cent to be competitive for top positions.

While UG and PG education is typically required, there are many ways to enhance your skill set, such as through a certificate course or bootcamp. “Although I did have a formal education, taking online classes on how to build mobile apps, doing internships where I work on projects at a company, and trying to build my side projects was the most helpful,” says Laila Rizvi, a software engineer at Meta .

Taking a coding bootcamp or participating in a relevant internship is a popular way to build your skills and become ready to enter a job in this industry. When looking for an internship, continue looking through your academic institution, on Glassdoor for Students, on local job boards, or by connecting with professionals online.

Let’s look at some of the requirements for becoming a software engineer.

Software engineering skills

As a software developer, you design software to help solve problems real people face. This requires a combination of technical know-how and solid communication skills. To prepare yourself for a career in software engineering, here are some skills to build:

Coding languages like Python, Java, C, C++, or Scala

Object-oriented programming

Database architecture

Agile and Scrum project management

Operating systems

Cloud computing

Version control

Design testing and debugging

Attention to detail

Scripting languages such as Perl or Shell

Building automation technologies like Maven or Jenkins

API building services like REST or SOAP

Software engineering certifications

By earning a certification, you can build new skills and validate those skills to potential employers. Some jobs might require a specific certification, so it’s a good idea to research job listings of roles you’re interested in before preparing for a certification exam. Here are some common options:

Certified Software Development Professional (CSDP)

Certified Software Engineer

C Certified Professional Programmer (CLP)

C++ Certified Professional Programmer (CPP)

AWS Certified Developer

Microsoft Certified: Azure Fundamentals

Get started with Coursera

Take the next step in your career as a software engineer by polishing up some essential skills with professional certificates from industry leader Meta. With the Meta Front-End Developer Professional Certificate and Meta Back-End Developer Professional Certificate , you can gain hands-on experience with industry tools.

Article sources

McKinsey Digital. " Digital India: Technology to transform a connected nation , https://www.mckinsey.com/capabilities/mckinsey-digital/our-insights/digital-india-technology-to-transform-a-connected-nation." Accessed April 5, 2024.

Glassdoor. " Software Engineer Salaries in India , https://www.glassdoor.co.in/Salaries/india-software-engineer-salary-SRCH_IL.0,5_IN115_KO6,23.htm?clickSource=searchBtn." Accessed April 5, 2024.

Keep reading

Coursera staff.

Editorial Team

Coursera’s editorial team is comprised of highly experienced professional editors, writers, and fact...

This content has been made available for informational purposes only. Learners are advised to conduct additional research to ensure that courses and other credentials pursued meet their personal, professional, and financial goals.

  • IEEE CS Standards
  • Career Center
  • Subscribe to Newsletter
  • IEEE Standards

research software development engineer

  • For Industry Professionals
  • For Students
  • Launch a New Career
  • Membership FAQ
  • Membership FAQs
  • Membership Grades
  • Special Circumstances
  • Discounts & Payments
  • Distinguished Contributor Recognition
  • Grant Programs
  • Find a Local Chapter
  • Find a Distinguished Visitor
  • Find a Speaker on Early Career Topics
  • Technical Communities
  • Collabratec (Discussion Forum)
  • Start a Chapter
  • My Subscriptions
  • My Referrals
  • Computer Magazine
  • ComputingEdge Magazine
  • Let us help make your event a success. EXPLORE PLANNING SERVICES
  • Events Calendar
  • Calls for Papers
  • Conference Proceedings
  • Conference Highlights
  • Top 2024 Conferences
  • Conference Sponsorship Options
  • Conference Planning Services
  • Conference Organizer Resources
  • Virtual Conference Guide
  • Get a Quote
  • CPS Dashboard
  • CPS Author FAQ
  • CPS Organizer FAQ
  • Find the latest in advanced computing research. VISIT THE DIGITAL LIBRARY
  • Open Access
  • Tech News Blog
  • Author Guidelines
  • Reviewer Information
  • Guest Editor Information
  • Editor Information
  • Editor-in-Chief Information
  • Volunteer Opportunities
  • Video Library
  • Member Benefits
  • Institutional Library Subscriptions
  • Advertising and Sponsorship
  • Code of Ethics
  • Educational Webinars
  • Online Education
  • Certifications
  • Industry Webinars & Whitepapers
  • Research Reports
  • Bodies of Knowledge
  • CS for Industry Professionals
  • Resource Library
  • Newsletters
  • Women in Computing
  • Digital Library Access
  • Organize a Conference
  • Run a Publication
  • Become a Distinguished Speaker
  • Participate in Standards Activities
  • Peer Review Content
  • Author Resources
  • Publish Open Access
  • Society Leadership
  • Boards & Committees
  • Local Chapters
  • Governance Resources
  • Conference Publishing Services
  • Chapter Resources
  • About the Board of Governors
  • Board of Governors Members
  • Diversity & Inclusion
  • Open Volunteer Opportunities
  • Award Recipients
  • Student Scholarships & Awards
  • Nominate an Election Candidate
  • Nominate a Colleague
  • Corporate Partnerships
  • Conference Sponsorships & Exhibits
  • Advertising
  • Recruitment
  • Publications
  • Education & Career

Demystifying Quantum Software Development: A Look at Requirements Engineering

research software development engineer

The paper “ Towards Quantum Software Requirements Engineering ,” presented at the 2023 IEEE International Conference on Quantum Computing and Engineering (QCE), explores the emerging field of Quantum Software Requirements Engineering (QSRE). In it, Tao Yue and Shaukat Ali from the Simula Research Laboratory and Paolo Arcaini from the National Institute of Informatics explore how QSRE differs from its classical counterpart and what it takes to build successful quantum software.

What Is QSRE?

Quantum software requirements engineering ensures that your quantum software fulfills its intended purpose. It’s the initial phase where stakeholders define exactly what the software needs to accomplish. Similar to classical RE, QSRE plays a vital role in building functional quantum software. Here, functional refers to the software’s ability to meet the core objectives outlined during this initial phase.

Just like in classical software development, QSRE involves a variety of stakeholders. This can include domain experts who bring deep knowledge of the problem the software is trying to solve, quantum software developers with the technical expertise to build it, and even investors who ensure the project stays within budget.

Key Differences in QSRE

While QSRE shares some similarities with classical RE, there are some key distinctions to consider:

Classifications of Requirements

  • Functional vs. extra-functional requirements: Both classical and quantum RE deal with functional as well as extra-functional requirements. Functional requirements define what the software needs to do, while extra-functional requirements focus on how the software should perform.
  • Quantum vs. classical requirements: A crucial aspect of QSRE is identifying which parts of the problem are best suited for classical processing and which require the power of quantum computing. This distinction is essential for efficient software design.

Extra-Functional Requirements Specific to QSRE

Beyond the standard set of extra-functional requirements, QSRE introduces some unique challenges:

  • Portability: Quantum computers are still evolving, with different hardware architectures. QSRE must consider the need for software to be portable across these platforms.
  • Performance: A core benefit of quantum computing is achieving speedups compared to classical methods. QSRE emphasizes establishing clear performance benchmarks during the initial stages.
  • Reliability: Quantum hardware is susceptible to errors. QSRE must account for these limitations and incorporate potential solutions like quantum error correction to ensure reliable execution.
  • Scalability: Current quantum computers have limited qubit resources. QSRE focuses on optimizing software to function efficiently within these constraints.
  • Maintainability: The field of quantum computing is rapidly advancing. QSRE should consider designing software that can be adapted to future hardware advancements.
  • Reusability: Enhancing code reusability across different quantum systems is an essential goal in QSRE, promoting efficiency and faster development cycles.

Strategic Approaches for QSRE

Building successful quantum software requires careful planning during the QSRE phase. Here are some key considerations:

  • Target the right problem: Identifying tasks well suited to quantum algorithms is crucial for efficient resource allocation.
  • Embrace the limitations: Hardware limitations like qubit count and error rates should be accounted for to ensure the software is achievable.
  • Leverage existing tools: Selecting established quantum algorithms during the early stages reduces development time and avoids reinventing the wheel.
  • Prioritize trade-offs: These should be addressed early to ensure optimal resource allocation and a focus on achieving the core objectives.
  • Future-proof your software: Consider how advancements in algorithms and hardware might impact the software’s design.

Building Successful Quantum Software with QSRE

QSRE is the cornerstone of successful quantum software development. By carefully defining what the software needs to achieve and considering the unique constraints of quantum hardware, QSRE ensures the final product meets the intended goals.

To explore more of the intricacies in this evolving field and its methodologies, download the full research.

Download Research

" * " indicates required fields

Recommended by IEEE Computer Society

research software development engineer

Toward a Holistic STEM Faculty Development Research Agenda

research software development engineer

Engineering Doctoral Students: Identity Formation and Career Support

research software development engineer

A Question (and an Answer) about Expertise in the Stack Overflow Universe

research software development engineer

Diversity in Computing: The Role of Interinstitutional Faculty Learning Communities

research software development engineer

Modernizing the Fortran Ecosystem

research software development engineer

Growth Mindset: Faculty Practices to Facilitate Student Success

research software development engineer

Addressing Eco-Anxiety in Software Engineering Curricula

IMAGES

  1. How to become a software engineer

    research software development engineer

  2. What is a Software Engineer?

    research software development engineer

  3. What is Research and Development Engineering?

    research software development engineer

  4. Recruiting Tips

    research software development engineer

  5. Software Engineer vs Software Developer: A Detailed Comparison

    research software development engineer

  6. Top 6 Skills and Knowledge required to become a Software Engineer

    research software development engineer

VIDEO

  1. Software Development Engineer in Test Day02 Fundamentals of ST

  2. Software Development Engineer hiring at Western Digital ( Batch : 2022,2023,2024)

  3. Software Development Engineer I Job At Blinkit ( Batch : 2021-2024 )

  4. Software Development Engineer

  5. Why Software Developers Become Miserable

COMMENTS

  1. Research Software Engineer Jobs, Employment

    Research Software Development Engineer. Microsoft. Redmond, WA 98052. ( Overlake area) $94,300 - $182,600 a year. Full-time. Minimum 2 years of industry experience with software development. Collaborate with researchers and product development teams. Posted 30+ days ago ·.

  2. Research Software Engineering

    Princeton's Research Software Engineering Group is helping to redefine the collaborative possibilities between software engineers and traditional research groups, in order to maximize each project's success. ... and insights and guidance with current and future software development tools, programming languages, and high-performance ...

  3. 13,000+ Research Software Engineer jobs in United States (537 new)

    San Francisco, CA $120,000 - $160,000. Actively Hiring. 2 weeks ago. Today's top 13,000+ Research Software Engineer jobs in United States. Leverage your professional network, and get hired. New ...

  4. 213 Research software development engineer jobs in United States

    Research & Development Engineer - Software Development. Rochester, MI. $86K - $114K (Glassdoor est.) Easy Apply. User Interface design and implementation using platform specific technologies and tools (Microsoft Windows, potential for web iOS, Android, macOS, etc.).…. 2d.

  5. 235 Research software engineer jobs in United States

    Search Research software engineer jobs. Get the right Research software engineer job with company ratings & salaries. 235 open jobs for Research software engineer.

  6. 11,000+ Research Development Software Engineer jobs in ...

    Today's top 11,000+ Research Development Software Engineer jobs in United States. Leverage your professional network, and get hired. New Research Development Software Engineer jobs added daily.

  7. Why science needs more research software engineers

    Paul Richmond is a research software engineer in the United Kingdom. Credit: Shelley Richmond. In March 2012, a group of like-minded software developers gathered at the University of Oxford, UK ...

  8. 6,123 Research and development software engineer jobs in ...

    Reverse Software Engineer. Aberdeen, MD. $170K - $220K (Employer est.) Easy Apply. BS in technical discipline preferred, but not required. Hands-on Reverse Engineering experience using tools such as IDA Pro, Binary Ninja and Ghidra.…. 17d. Frontier Strategies LLC.

  9. Research software engineering

    Research software engineering is the use of software engineering practices for research software, i.e. software that was made for and is mainly used within research projects. The term was proposed in a research paper in 2010 in response to an empirical survey on tools used for software development in research projects. It started to be used in United Kingdom in 2012, when it was needed to ...

  10. Supporting Research Software and Research Software Engineers

    Research Software Engineers: A growing number of people are focused on developing research software professionally. They are employed at universities, companies, national laboratories, and other organizations. ... D. S., McHenry, K., Reinking, C. & Haines, R. Research Software Development Management in Universities: Case Studies from Manchester ...

  11. Research Software Development Engineer

    As a Research Software Development Engineer, you will: Collaborate with researchers and product development teams; Design and implement highly efficient algorithms;

  12. US-RSE

    The US Research Software Engineer Association (US-RSE) is a community-driven effort that brings together people who write and contribute to research software within the US. We aim to build a connective, supportive, and diverse community of individuals from universities, laboratories, knowledge institutes, companies, and other enterprises.

  13. Software Engineering Careers: 2024 Guide to Career Paths ...

    Software Engineering Career Outlook. The job outlook for software developers, quality assurance analysts, and testers is very positive, with a projected growth rate of 25% from 2021 to 2031, which is much faster than the average for all occupations (BLS, 2023). The median annual wage for software developers is $120,730, while the median annual ...

  14. Software Engineering

    Software Engineering. At Google, we pride ourselves on our ability to develop and launch new products and features at a very fast pace. This is made possible in part by our world-class engineers, but our approach to software development enables us to balance speed and quality, and is integral to our success. Our obsession for speed and scale is ...

  15. What does a Research Software Engineer do?

    Research engineers plan, design, develop, and build innovative equipment and technologies using a research-driven process. They perform investigations, testing, modeling, verifications, comparative analysis, and other forms of research to make educated recommendations. They support and guide organizations or clients in making informed decisions ...

  16. Search Jobs

    For our lab in Berlin, Germany, we are seeking exceptional Research Software Development Engineer candidates in the area s of Machine Learning for Quantum Chemistry and/or Molecular Dynamics. The successful applicant is expected to contribute to cutting-edge technological developments for machine-learning-based ab-initio methods, ...

  17. Software Development Research Engineer jobs

    61,213 Software Development Research Engineer jobs available on Indeed.com. Apply to Software Engineer, Junior Software Engineer, Senior Software Engineer and more!

  18. Princeton University Research Software Engineering Summer Fellows

    Then the Princeton University Research Software Engineering Summer Fellows program could be for you. As a summer fellow, you will work under the mentorship of a professional Research Software Engineer (RSE) to build, develop, and optimize software used in cutting-edge Princeton research software projects. ... ASPIRE is an open-source Python ...

  19. A Pulse of Innovation: AI at the Service of Heart Research

    Collaborators in software development, machine learning, and more. In the last year and a half, lead author Youngbin Kim and his coauthors developed a graphical user interface (GUI) on top of the code so that biomedical researchers with no coding expertise could easily analyze the data with just a few clicks. This brought together experts in ...

  20. Software Development vs. Software Engineering: Which Career Path Is

    While software engineering and development appear similar on the surface, a closer look reveals distinct requirements and responsibilities. Carefully study each job role, description, and how you ...

  21. Advancing Software Engineering Excellence in Scientific Software

    Bio: Reed M. Milewicz Ph.D., is a computer scientist and software engineering researcher in the Department of Software Engineering and Research at Sandia National Laboratories, where he is the research lead. His research focuses on developing better practices, processes, and tools to improve software development in the scientific domain.

  22. Salary: Research Software Development Engineer in United ...

    The estimated total pay for a Research Software Development Engineer is $166,500 per year in the United States area, with an average salary of $131,540 per year. These numbers represent the median, which is the midpoint of the ranges from our proprietary Total Pay Estimate model and based on salaries collected from our users. The estimated ...

  23. What Does a Software Engineer Do?

    Software engineers design and create computer systems and applications to solve real-world problems. Software engineers, also called software developers, create software for computers and applications. If you're an analytical thinker who enjoys solving problems and making digital products easier, a career as a software engineer may be rewarding.

  24. Engineer III, Software Test job in Slovakia

    Apply for Engineer III, Software Test job with Thermo Fisher Scientific in Slovakia. Research & Development jobs at Thermo Fisher Scientific

  25. Demystifying Quantum Software Development

    QSRE is the cornerstone of successful quantum software development. By carefully defining what the software needs to achieve and considering the unique constraints of quantum hardware, QSRE ensures the final product meets the intended goals. To explore more of the intricacies in this evolving field and its methodologies, download the full research.

  26. Microsoft Research Software Development Engineer Salaries

    The average Research Software Development Engineer base salary at Microsoft is $160K per year. The average additional pay is $52K per year, which could include cash bonus, stock, commission, profit sharing or tips. The "Most Likely Range" reflects values within the 25th and 75th percentile of all pay data available for this role.