Role Summary
Participate in the development, maintenance, and operation of analytics and optimisation software within the energy technology domain.
The role requires strong technical thinking, reliability, and the ability to work independently without excessive supervision.
Core Responsibilities
- Contribute to the design and implementation of software modules and data-processing components.
- Perform analytical tasks involving mathematical models, time-series data, and optimisation workflows.
- Conduct research on algorithms, data structures, and mathematical concepts as needed.
- Assist in troubleshooting, debugging, and improving system performance.
- Collaborate effectively with senior staff, engineering experts, and a wide range of customers, whilst managing tasks with minimal guidance.
- Maintain clear, concise technical documentation.
- Degree in Computer Science, Software Engineering, Mathematics, Electrical Engineering, or a related technical field (where coursework must involve some degree of software development).
- Solid grounding in programming fundamentals (control flow, data structures, complexity) and practical Python development experience.
- Ability to write, read, test, debug, and maintain Python code for analytics, data processing, automation, APIs, and prototype/R&D software.
- Experience with some additional high-level language is desirable
- Familiarity with Linux environments and command line tooling, experience with using them within a commercial, or academic, environment.
- Strong problem solving skills and the ability to reason effectively and creatively with algorithms and software systems in general.
- Ability to work methodically and think independently, with the capability and confidence to defend views when challenged, explain concepts clearly to non-technical collaborators, and not be afraid to speak up in what can often be highly technical discussions.
- Understanding of time-series data, analytics workflows, and basic statistical methods.
- Exposure to database paradigms including relational databases, NoSQL/document or key-value databases, and time-series databases. Specific products are less important than understanding how these paradigms are used and where each is appropriate.
- Working knowledge of SQL and relational data modelling is expected; exposure to time-series storage and query patterns is a distinct advantage.
- Experience working with APIs, data streams, or messaging/queueing systems.
- Optional exposure to Rust, C/C++, or Go/Golang would be useful, particularly for performance-sensitive, systems, or integration work, but these are not mandatory requirements.
- Familiarity with the concept of containerisation with Docker
- Some knowledge of cloud based computing such as AWS, Azure, or GC
- Practical aptitude for debugging and diagnosing issues across software layers.
- An interest in mathematics along with a conceptual understanding of the workings of machine learning, large language models, and trends in the “AI” industry. Mathematical or programmatic understanding would be an advantage, but is not essential.
- Able to learn quickly, without repeated instruction.
- A curious, open minded attitude to continual learning.
- Communicate clearly and concisely.
Essential Qualifications
- Degree in Computer Science, Software Engineering, Mathematics, Electrical Engineering, or a related technical field (where coursework must involve some degree of software development).
- Solid grounding in programming fundamentals (control flow, data structures, complexity) and practical Python development experience.
- Ability to write, read, test, debug, and maintain Python code for analytics, data processing, automation, APIs, and prototype/R&D software.
- Experience with some additional high-level language is desirable
- Familiarity with Linux environments and command line tooling, experience with using them within a commercial, or academic, environment.
- Strong problem solving skills and the ability to reason effectively and creatively with algorithms and software systems in general.
- Ability to work methodically and think independently, with the capability and confidence to defend views when challenged, explain concepts clearly to non-technical collaborators, and not be afraid to speak up in what can often be highly technical discussions.
Desired Skills & Experience
- Understanding of time-series data, analytics workflows, and basic statistical methods.
- Exposure to database paradigms including relational databases, NoSQL/document or key-value databases, and time-series databases. Specific products are less important than understanding how these paradigms are used and where each is appropriate.
- Working knowledge of SQL and relational data modelling is expected; exposure to time-series storage and query patterns is a distinct advantage.
- Experience working with APIs, data streams, or messaging/queueing systems.
- Optional exposure to Rust, C/C++, or Go/Golang would be useful, particularly for performance-sensitive, systems, or integration work, but these are not mandatory requirements.
- Familiarity with the concept of containerisation with Docker
- Some knowledge of cloud based computing such as AWS, Azure, or GC
- Practical aptitude for debugging and diagnosing issues across software layers.
- An interest in mathematics along with a conceptual understanding of the workings of machine learning, large language models, and trends in the “AI” industry. Mathematical or programmatic understanding would be an advantage, but is not essential.
