Software Engineers are the core of our Engineering team at Pusher, working across the stack to deliver awesome products at massive scale.
Pusher is a communication layer for application developers that routes data at scale and in realtime.
The current core Pusher product is a multi-tenant distributed system that allows our customers to deliver tens of billions of messages to their connected users. We operate at mind-boggling scale, and this informs and affects everything we do.
We want to improve the lives of other developers by solving hard problems for them, and by freeing them from operating and maintaining their own infrastructure. We’re passionate about developer experience and making our APIs as easy to use as we can.
What you will be doing
Pusher is a challenging but supportive environment. We are still small enough to be a team of generalist engineers with individual specialisms, so we want you to get involved with as much of our engineering lifecycle as possible. Your typical week might involve the following...
We’re a polyglot engineering team. We value using the right tool for the job over sticking to a single technology, although we have focused on Ruby, Go and Node for concurrent programming, with the occasional use of functional languages such as Haskell where it makes sense.
We also believe in using existing technologies wherever we can. We use Redis and MySQL extensively, and we use ZooKeeper, Consul and Kafka to manage our distributed platform.
Our engineering team also build and maintain everything that surrounds the core message bus and makes things easy for our customers to integrate, understand and use Pusher. This includes maintaining our open source integration libraries and our customer-facing dashboard (we have friendly front-end engineers to help you with this).
You should expect to spend some of your time at Pusher designing new features and reviewing other people’s ideas.
On our core product, you will influence how our APIs are designed, and work with the rest of the team to bring new features to life. You may also take ownership of some of our integration libraries, and develop them further.
We also continually work on more exploratory ideas for new products, where we believe that great things emerge from small empowered teams unencumbered by too many outside opinions. We make sure engineers have the tools and time to explore new ideas and focus on novel solutions.
Our engineering team is heavily involved in operations, automation and testing, and you will be deploying, monitoring and maintaining a large production system using Puppet and Ansible. You should be intrigued by the technical challenge of automating processes and testing on a realtime, distributed, stateful platform.
- You love to ship high-quality features for real users.
- You show perseverance in the face of tough challenges.
- You are constantly curious about new technology.
- You are pragmatic where necessary, but a perfectionist where it counts.
- You are an excellent verbal and written communicator.
We look for personal qualities as much as experience, but some of the things that might help are:
- You have worked on distributed systems.
- You’ve built features and products using concurrent programming principles such as event loops or CSP.
- You have experience building web applications in a variety of languages and technology stacks.
- You've built APIs, and you know what makes an API great.
- You have fulfilled a sysadmin or ops role.
- You have an understanding of Computer Science theory and principles.
- You've used Pusher in the past.
Pusher is an equal opportunity employer and we value diversity and inclusion at our company. We welcome people of different nationalities, backgrounds, experiences, abilities and perspectives.
What you get
- Competitive salary
- You choose your kit
- Pension & Health insurance
- Flexible working
- 28 days holiday + bank holidays
- Free breakfast, snacks & drinks
- Monthly lunch
- Regular social events
- Yoga & Massages
- Pusher clubs
- Pusher library