Distributed systems engineer
What makes Ably special?
Ably is a serverless realtime infrastructure provider.
Our high-performance global data stream network enables our customers to stream data anywhere, between any device, with mission-critical reliability so they can build next generation services and deploy, manage, and distribute streaming APIs.
Developers use our platform to build next generation digital services and share their realtime data at scale. We've gained the trust of some the largest businesses in the world to integrate us into their stacks, businesses such as HubSpot, OfferUp, Tennis Australia and CA Technologies. We also work with a diverse range of tech startups globally powering features such as an air traffic control system for drones. Working at Ably means you are working on a cutting-edge product that is helping global brands shape the future.
What we can offer you – in brief
You will learn with the best. You will have autonomy and freedom to experiment and improve. You will be part of a dynamic team and a business that is taking off. We have the best technology, and the best people in the industry. Join us now and you’ll be early in at a business going places, you’ll learn a lot, you’ll work with the founding team, and you’ll have fun.
What we want in return – in brief
We want someone smart, ambitious, curious and motivated. Someone is prepared to do their best and work their arse off to do great work and become outstanding at what they do.
You'll be working with a deeply technical engineering team who collectively bring a wealth of experience and broad technology skills. The calibre of the code we produce is what excites us each day and motivates us. If you enjoy solving hard distributed system problems that are mostly platform agnostic and theoretical in nature, then you'll love working at Ably. Our team is made up of a hybrid remote and local team, yet our our base is in London and growing. We are strong believers in face-to-face communication where possible. This role can be remote, part-remote or on-site. Either way, it must be practical for you to travel to our office London for face-to-face meetings if you are looking to work more remotely.
Day to day you can expect to be working on:
- The "core" realtime platform which is largely Node.js, and some shared services in Go. You may also be required to work on the various services and routing layers of the platform which are built in Go and Elixir (we would happy if you are comfortable in either Go or Elixir, both would be a big win). As an aside, we use Ruby for all infrastructure automation and orchestration and occasionally write lower-level native code where necessary (such as native modules for Node). We're always revisiting the technologies we use and are always open to using new technologies where suitable.
- Working within the realtime platform and solving distributed programming problems. Find out what it takes to be a distributed systems engineer.
- Collaborating with the team to design, discuss and implement new features and services.
- Diagnosing and fixing bugs in our platform using distributed tracing techniques.
- Adding suitable test coverage to new features as well as existing functionality, conducting load tests using our frameworks, and generally helping to address platform stability and regression prevention.
- Be responsible for the complete lifecycle of your features and code i.e. pull request, reviews, testing, deploy to staging and sandbox environments, then into production environments with ownership of any issues that arise. We are strong believers in all developers being involved in the system operations as well.
- Contributing to open source projects that we support or use in our products. All of our client libraries are open source as well and may require your support at times.
- Helping customers solve problems they are experiencing that may help us find bugs in the platform.
- Support the wider team in regards to documentation and customer support.
- Suggestions for new features or improvements to our protocol and API specifications.
- Salary range: £50k to £85k. Depends entirely on skills and experience.
- Holidays: 25+ days excluding national holidays. Can be negotiated.
- Benefit from a truly flexible working environment in which hybrids of remote and on-site working, and managing your own time is the norm.
- Work in an environment where code quality, technical challenges and delivery is what we all care about.
- Skills development is intrinsic in the job. We're largely working on unsolved problems each day, and such, there is plenty of scope to widen your knowledge and skillset.
- Work with genuinely nice people who care passionately about helping our developer customers solve distributed realtime engineering challenges.
**** NO AGENCIES PLEASE ****
- General: We are looking for candidates that can demonstrate an interest in technically challenging topics in computing, especially relating to realtime and distributed systems, networking and systems programming. Successful candidates will be able to demonstrate their ability to contribute and solve problems in these areas via professional experience and/or personal projects. Ultimately, ability will outweigh specific experience when reviewing candidates for this position.
- Experience: A significant fraction of the work will, at least initially, be with node.js, so we need to see demonstrable node experience, with some commercial experience preferred. You must have experience using both statically and dynamically typed languages, and at least one other language; Go and/or Elixir experience is beneficial. An understanding of Ruby is also beneficial in regards to infrastructure automation and tooling, but not necessary.
- Pragmatic: A problem solver excited by the prospect of working autonomously solve problems and bring solutions to the team.
- Fast Learner: We’re looking for software engineers who thrive on applying their knowledge, learning new technologies. Our stack is diverse, and we expect it to continue to grow.
- Testing: Experience using testing frameworks where applicable.
- Infrastructure: Experience with infrastructure and distributed systems is beneficial.
- Communication: We use tools such as Slack throughout the day to communicate; however we believe in voice conversations to discuss and solve problems. You must be proficient in spoken and written English, be eager to collaborate with the engineering team and constructively welcome code reviews.
- Customers: Comfortable talking to customers and assisting them with their technical issues and integration.
- Open source: We prefer developers who have contributed back to the open source community, even if those contributions are small.
**** NO AGENCIES PLEASE ****