Software Engineer (Contract)
Pusher’s realtime APIs power applications around the world across many industries. When you see an in-app chat, a collaborative text editor, or anything else that updates instantly from category-leading brands like Lyft, DoorDash and the New York Times — Pusher is shifting events behind the scenes.
As a Software Engineer, you will define features of our ever evolving products - Channels, Chatkit and Beams. You will have strong ownership over these features and have opportunities to blog/talk about them publicly. You will use your experience shipping these features to help prioritise new features and shape our roadmap.
To give you a sense of our scale:
- Pusher serves 250,000 developers across 170 countries
- We handle several millions of concurrent connections
- Our customers have published over 10 trillion messages via Channels
WHAT WILL YOU BE ABLE TO LEARN?
Great software engineers never stop learning, so we want to provide you with opportunities for improving your knowledge. As a Software Engineer;
- You will solve difficult problems, handling the scale that we operate at, serving such a wide range of use cases and devices is a challenge
- You will have the opportunity to learn from many experienced engineers with various technical backgrounds
- You will help take Pusher’s products through a period of significant growth, encountering many unique engineering challenges along the way
- You will get to learn and use leading-edge technologies, like Kubernetes, in high-traffic production environments
- You will use a variety of programming languages, tools and cloud platforms such as Go, Ruby, Kubernetes, AWS
WHAT WILL YOU DO?
Software Engineers do many things, but most of your responsibilities fall into the following categories;
- Shaping the future technical strategy of the product
- Mentoring and developing more junior members of the team
- You will need to be able to work comfortably solving ambiguous and complex problems
- Contributing to the full feature lifecycle: ideation, prototyping, releasing, iteration, maturation, sunsetting
- You will need to dive into both new and familiar areas of our code to support more inexperienced members of your team, and communicate effectively whether it be pair-programming, in a code review, or in a proposal for a new improvement or service
- Work with our team to refine our product development process. We want to turn the feature development pipeline into a well-oiled machine
- Helping customers successfully integrate Pusher products into their apps
- Participating in our on-call rota supporting our operational reliability targets including uptime and latency
- Helping grow the team by participating in recruitment planning and interviewing
- Learning and maintaining the API gateway and the other global shared services across Pusher’s new products
- You will become the go-to expert for at least one large area of the codebase
WHAT TECH DO WE USE?
We use a modern tech stack. Our services are written in Go and deployed on Kubernetes. Pusher uses and supports many other projects from the Cloud Native Computing Foundation.
We use a wide range of tools and products including languages such as Go and Ruby. Terraform and Puppet for infrastructure management. Jenkins, Travis, Prow for our CI pipeline. Open source tools such as Postgres, Redis, Kafka, all running on Linux and AWS/Heroku. We advocate using whatever is best suited for the task at hand.
What Pusher is like
We are in an extended phase of change and growth: after a period of success as a smaller company, we are learning how to be a successful global company. This process is challenging, rewarding, frustrating, and invigorating, often all at the same time! We are trying to do very big things — at the end of the day, we want to help hundreds of thousands of developers who will impact hundreds of millions of users.
We strongly believe in the importance of diversity and inclusion. For us, diversity means “difference” and inclusion means “making the differences work together” – and the result is a company that strives to practice consistently high levels of belonging. Inclusivity provides a better working environment for all, improves the quality of our services, and positively impacts outcomes. We welcome people of different nationalities, backgrounds, experiences, orientations, ages, abilities, and perspectives.
We are here to help our customers build delightful applications. By solving significant engineering challenges and packaging them into easy to use APIs, we let developers focus on making their users happy. We believe the growing demand for software will greatly improve developer productivity and, in turn, increase the quality of the apps we all use on a daily basis.
We put emphasis on collaboration between people and teams. Everyone is on the same mission, so sharing work helps us reach our goals faster. We strive for transparency. Keeping everyone well-informed is crucial for building trust, efficiency, and satisfaction at work.