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.