As part of the Software Engineering team you will be working closely with our Informaticians and Data Scientists. You will be helping to leverage the tools and techniques they design into products that can be, initially, used within the company, then extended to our partners and ultimately as commercial products. You will be helping the team solve problems around data management and processing, along with then working to productise the team’s efforts
All our Engineers are unique and bring not only enthusiasm but also a vast range of experience and knowledge. A new member to the team will be accomplished in building a diverse range of software and tools, from hardcore data crunching engines to frontend web interfaces and should be able to demonstrate this through a portfolio of work. They should also be able to discuss and show knowledge of different design patterns as well as the coding paradigms of procedural, object oriented and functional programming.
Our infrastructure is just as important as our code and we leverage this to get the most we can out of our products. This includes designing for resiliency, redundancy and scalability, a new engineer should be willing to jump right into the discussions and throw their opinion into the mix as well. Providing insight into new tools and techniques as well as being able to provide cogent arguments as to why a tried and tested solutions may be better
Our codebase is diverse, with a focus on selecting the right tool for the job. We are not afraid to refactor and adapt to meet our goals. We fail fast and iterate our way to success! Picking the right languages, tools & infrastructure is as important to us as how well you can write an abstraction of a dependency injection container. This should include a strong willingness to adapt to meet the needs of the business as our focus on the right tool for the job is paramount and all our engineers are expected to cross train in all the languages & tools we work with.
Main duties and responsibilities
- Design & build scalable adaptive software from both inception and from existing POC solution.
- Maintain existing solutions
- Provide support to the Informaticians and Data Scientists with their own development
- Work with the team to successfully deploy solutions to compute infrastructure
- Write and document clean, maintainable source code
Qualifications and Experience
- Good knowledge (if not commercial experience) of Python is essential as it is our Data Scientists tool of choice!
- Expertise and commercial experience in at least one of the following: NodeJS, Go, Java, Scala
- Demonstrable experience in building web interfaces using any of: Angular, Polymer or React with a suitable data layer. Other JS frameworks are acceptable
- An understanding of good software design principles and knowing when to apply them or not.
- Have a good grasp of relational, document/object, graph and big table databases how to best utilise the different options to meet the needs of the business.
- Commercial experience in developing software solutions or equivalent Computer Sciences/Software Engineering related degree
- Effective communication skills
- Ability to work both independently and as part of a team
- Strong organisational techniques, including the ability to handle a variety of tasks in a fast-paced environment
We strongly encourage you to submit examples of your code that you have created with your application. These should be provided as links to public facing source code repositories (e.g. Github) along with the name or email address that your work was committed under.
The application process will include a technical challenge to assess your level of expertise, experience and seniority. It tests not only your ability to create solutions but also how you think and communicate.