Roles and responsibilities
There are different types of roles in this area:
- Software developer/engineering roles focussed on the design and programming of specific software, apps or other digital tools. This may include maintenance and building new features, or building new tools from scratch.
- Data science roles that aim to generate meaningful insights from large datasets by creating specific, reproducible data analysis or predictive analytics pipelines using R, Python and other tools – often (but not always) applying artificial intelligence.
- More technical roles (e.g. DevOps, database systems); these are only possible for those with a strong computational science background.
The exact tasks will vary by role/company but often involve:
- coding:
- for software solutions, often collaboratively, with a focus on efficient, maintainable and stable solutions.
- for data science: pull data from internal databases; assess, clean, transform and visualize/summarize data; potentially build reporting dashboards, machine learning models, or an application programming interface (API).
- meeting with end-users or ‘problem owners’ to understand:
- for software: the needs and requirements of the end-users.
- for data science: the data being looked at, and what analysis might bring value and insight.
- strategic planning of the to-be-delivered solutions, and their (continuous) deployment.
- attending project meetings where progress and upcoming tasks are discussed, and work distributed including (collaboratively) deciding on task prioritization and assignments. Note that many software companies use a method called ‘SCRUM’ for project management that has a focus on allowing ‘agile’ development
- communicating with team members working in product management, IT management, software architecture, user experience and DevOps,
- training/staying up to date with new developments
- presenting progress/insights to managers and ‘problem owners’.
- involvement in other business aspects like overall strategy, patent preparation, managing/mentoring teams etc.
Career entry and progression
Data science roles are directly accessible for PhDs and postdocs with experience in data analysis pipelines written in R or python, and ideally some knowledge of SQL (which is often used to extract relevant data from databases). For some roles, experience with machine learning techniques may also be advantageous or required. For those with less experience, the career path is accessible with additional training.
Software development roles are often directly accessible for those with a formal computational degree, or those with computational projects who have significant programming experience.
Interviews may include technical questions focused on theory (e.g. on data structure and specific algorithms), as well as coding tests that apply this, so it is advisable to refresh your knowledge in relevant computational science topics in advance of interviews.
Note: many of our former PhDs and postdocs have entered roles focussed on developing/maintaining scientific software, but some former fellows also work on business software and digital tools at other companies including in the high-tech sector (Google, Amazon and IBM), financial services etc.
Common career development paths in this career area include:
- gaining in seniority and becoming a technical expert in specific areas (e.g. software architecture, data science expert, tech lead),
- moving into a more people-management role supervising a team
- moving sideways into other types of roles that have a more coordination/strategy development and less technical focus (e.g. product management)
- starting a consultancy or free-lance business
Example job titles
- (Software) developer/engineer
- Computational scientist
- Data scientist
- Machine learning specialist, machine learning engineer
- Data analyst
- Business intelligence analyst
- Systems engineer
- HPC engineer
- Programmer
- Database programmer
- Full-stack developer
- Software architect, tech lead (more senior roles)
Knowledge and skills
Data science roles require experience accessing and analysing large datasets, and developing/programming algorithms to process the data using relevant programming languages and tools (e.g. R/Python [and relevant toolkits], version control etc.). A good knowledge of statistics and experience with machine learning methods is advantageous. Building a portfolio of small projects is often recommended as a way of furthering and demonstrating your knowledge. Online courses can be helpful to build relevant skills and a range of companies offer intensive data science courses (bootcamps) with capstone projects or short internships for those with a lack of experience.
Software development roles require hands-on experience with developing tools in at least one programming language relevant to the specific role. These roles require knowledge of software development best practices and theory in order to build stable software that integrates with other tools from the company and can be maintained long-term.
Broader skills are also critical for both types of role. Strong listening and critical thinking skills, willingness to ask questions, and an ability to present back the results clearly are required. Data scientists are expected to understand the problems that the business/client are trying to investigate, and to deliver meaningful analysis that gives actionable insights. Similarly, software teams must develop solutions that clients want to buy – the solution must solve a need the client has and be user-friendly. Ability to work in teams is also a must as the software/data analysis solutions are generally developed by a group of people. Given the range of projects and fast pace of technology developments, a love of learning is also often mentioned as an asset for data science roles.
In our careers and skills survey, 11 data science or software professionals told us the competencies they use most in their daily work The most frequently selected competencies were:
- team work (selected by 73% of respondents)
- broad scientific knowledge (selected by 64%)
- resilient problem solving (selected by 45%)
- visualizing data and ideas (selected by 45%)
- delivering presentations (selected by 45%)
Language requirements
While some companies will work in the local language, many software companies have English as the main language. Obtaining a position without fluency in the local language is possible in many companies.