Developing an AI project development life cycle involves five distinct tasks. No single individual has enough skills (or time) to carry out all tasks in AI project development. Thus, teams include individuals who focus on part of the cycle. Here is a visual representation of six technical roles and how they relate to various tasks.
I What tasks does a software engineer carry out?
Software engineers carry out data engineering, modeling, and business analysis tasks as shown in Figure 1. This includes:
- data engineering subtasks such as defining data requirements, collecting, labeling, inspecting, cleaning, augmenting, and moving data.
- AI infrastructure subtasks such as building and maintaining reliable, fast, secure, and scalable software systems to help people working in data engineering, modeling, deployment and business analysis.
II What skills does a software engineer need?
Software engineers demonstrate outstanding coding and software engineering skills (see Figure 2). Communication skills requirements vary among teams. They mostly write production code, as opposed to data scientists who mostly write prototyping code.
If you’re interested in comparing your skills to other software engineers, we recommend taking the standardized algorithmic coding, and software engineering tests on Workera. If you’re a company hiring software engineers, you can administer computerized tests to AI job applicants for free using Workera Test and connect with AI practitioners using Workera Connect.
III What tools does a software engineer use?
Software engineers in different companies use different tools, but some tools stand out. The following tools grouped by task are the most frequently used tools identified in our research.
- Data engineering happens in Python and/or SQL or other domain-specific query languages.
- AI infrastructure using an object-oriented pro- gramming language such as Python, Java, or C++ and cloud technologies such as AWS, GCP, and Azure.
- Collaboration and workflow is managed with a version control system such as Git, Subversion, or Mercurial along with a command line interface (CLI) such as Unix and an integrated development environment (IDE) such as Jupyter Notebook or Sublime.
IV In what team structure does a software engineer fit?
Building an AI team requires bringing together complementary individuals who can progressively carry out the tasks of the AI project development lifecycle. AI teams focus on data engineering and modeling from the beginning, because they need to validate the feasibility of an AI project or idea. As the project becomes more mature, the team starts focusing on deployment, business analysis, and AI infrastructure.
Software engineers work well with people in charge of modeling, deployment, business analyses. Software engineers build the tools and infrastructure that increases the effectiveness of all tasks while scientists prototype solutions to prove a concept.
Conclusion
This article aims to clarify what a software engineer is, what tasks they carry out, and what skills they need. If you’re an AI practitioner, we hope it helps you choose a career track.
Companies may refer to this position as data engineer, software engineer, software development engineer, software engineer-AI Infrastructure, software engineer-data, and many more titles. If you’re a hiring manager, we hope that it helps you define your job requirements.
AI organizations are constantly evolving, so this article is a work in progress. We intend to revise it as our team learns more about new roles.