Contract type: Full-time, Permanent
Location: Queen Square, Bristol
Ideal start date: ASAP
We are an ambitious, international start-up enabling people to progress their passion for plants and nature through the application of technology.
We openly put our people first and we’re proud to be building a team that genuinely loves working and learning together. We know how important culture is, so have a read to see if you think we might be a good fit.
About Our Mobile App
Our React Native app hosts a vast amount of functionality including our social network, a plant marketplace, proprietary Plant ID functionality, a knowledge base of plants and a database of Gardens, many with rich media audio tours. Despite this array of functionality our app code base is still quite modest with 131kLoC of all (strict) TypeScript. We achieve this through striving to keep all the heavy lifting off-device and behind our GQL APIs.
The application is deployed to internal test tracks each day and has a deployment pipeline which includes unit & UI tests via Detox.
Our mobile app has received heavy investment over the years and as the platforms keep evolving we need to double down on our efforts to keep with the times and deliver the modern experiences our users expect from their native apps.
We are looking for candidates with a track record building large RN apps and are familiar with the problems posed by the shifting foundations that RN is built upon. Following on from this, you will have a deep understanding of the Android or iOS SDK and a good understanding of the other. You will have a practical approach to testing and experience building APIs for mobile with solid grasp of the more unique challenges mobile development poses (network issues, force upgrades etc.)
Our entire stack is written in TypeScript. The front-end apps use React and React Native, backed by a GraphQL API. We have a growing number of microservices written in Node.js communicating through RESTful APIs and Google PubSub, running on Kubernetes in Google Cloud Platform. We use PostgreSQL by default and other databases (e.g. ElasticSearch and Redis) where relevant. As much as possible, our infrastructure is defined using Terraform.
We use CircleCI for continuous integration and deployment, deploying to our development environment on successful push, and to production several times a day using our Slack bot (The Robotanist).
We aim for a functional style of programming with a focus on continuous testing, integration and delivery, while working hard to avoid knowledge silos and reduce dependencies.
We like types and tests to help us produce working and maintainable code, making use of immutability and pure functions where practical. Our focus on continuous integration and continuous delivery allows us to rapidly iterate, deploying new versions of our microservices and apps many times each day.
Our robust testing and monitoring allow for stress-free deployments and to discover, debug and fix problems in production. We use Elasticsearch and Kibana for logs, Prometheus and Grafana for metrics, Jaeger for distributed tracing, and Apollo Engine for our GraphQL API. We have automated smoke tests that run against production in addition to the tests which run in CI.
Our ideal candidate
We’re looking for enthusiasm, a passion for learning and a desire to work in an agile, collaborative environment. We want you to be excited about shipping a product that delights plant and nature lovers around the world!
We want to hear from you if you have a desire to grow into a role with the company comprising some of the skills and technologies listed below.
We encourage you to apply if you have any experience or interest in the below. Our current engineers do not all know everything on this list!
- Cross-platform and functional programming experience, using React and/or React Native
- Component-based styling, especially use and design of component libraries, and flexbox (all React Native styling uses flexbox)
- Experience designing, implementing and running large native mobile application
- Experience with native Android or native iOS in a professional capacity
- Experience implementing native UI Testing frameworks such as Espresso and XCUITest and running those in CI
- Appreciation for automated testing, CI and CD
Remember, the above is not a list of hard requirements - you’re absolutely NOT expected to know all of this!
We work in cross-functional teams to turn business goals into product features. Great communication (weekly tech reviews and deeper fortnightly retrospectives) means there is an inherent no-blame culture.
Our collaborative and inclusive structure encourages everyone to share ideas on how we can improve our processes, technology and product. Every team member enjoys autonomy and is exposed to working on the full stack, but specialises where they have a particular area of interest. We also run a monthly hack day where everyone can experiment with technical or product ideas.
Our staff are involved in many local meetups, including CodeHub hack nights, South West Mobile, Bristech, Bristol JS, Bristol SRE, Bristol Cloud Native & DevOps, Cloud Native Wales, Bristol Machine Learning, and ProductTank Bristol. Come and say hello!
What you’ll get from us
- 25 days holiday (plus bank holidays), because the rest of your life is important too
- An extra paid day off to spend among plants
- Regular team socials
- An amazing plant-filled office in Queen Square
- Free fruit in the office (when safe)
- Your choice of equipment
- Pre-paid training budget for whatever you need to do your job more effectively
- Grant of SARs (Stock Appreciation Rights) after two years of employment
- Enhanced shared parental leave
- Flexible working hours (core hours 10 am - 4 pm)
Everyone is welcome
Get in touch if you have any questions – we’re a friendly bunch :)
A successful application typically involves:
- A short phone interview
- A small take-home assignment (no more than 2 hours expected)
- An on-site interview with a few developers
How to apply
Please email your CV and any other supporting information to firstname.lastname@example.org.
Recruitment agencies, please read this (TLDR: don't send us candidates unless you're on our preferred supplier list. Any candidates you do send will be treated as a gift).