At OneSignal, Senior Engineers have the option of working remotely or in an office. In the United States, we currently support remote work in CA, NY and TX and we have offices in New York City and San Mateo. In collaboration with our partner Elements Global Services, remote work options are available in the United Kingdom and an in office experience is available in London.
We're looking for an engineer interested in writing Rust. Experience with the language is not required, but we are looking for experience in some sort of statically typed language and a couple years of experience.
We have several projects using Rust today including the OnePush delivery service
, our stats daemon that runs on each server, and oscachemgr
, a cache manager for our front end servers. We've recently started another Rust project pertaining to analytical work on our ever-growing data set. We're also starting to plan a project to integrate Rust into our Rails application.
In addition to the Rust projects, business needs may at times require you to work on another part of the application such as Rails or infrastructure. What you'll do:
Skills and experience:
- Work closely with a small team shipping lots of code
- Write Rust and Ruby
- Add features to and improving our push delivery service
- Work on native Rust extensions to our Rails application
- Open source contributions - we have contributed patches to several crates and released one of our own. We aspire to do more of this as time progresses
- Contribute to our stats monitoring process (Rust) which runs on all of our servers
- Architect solutions to address our scaling needs
- Design and build a custom message queue
Preferred skills and experience:
- 5+ years of experience writing software for distributed systems
- Experience writing with a statically typed language such as Rust, C++, etc
- Solid understanding of web service architecture, systems and how they fit together such as: http clients, DNS, load balancers, reverse proxies, CDNs, application servers (ex. Rails), databases, and caches
- Open to learning and writing Rust and Go
- Proficiency in written and oral communications
- Ability to collaborate well on a team
- Friendliness and empathy
- Can deliver solutions independently
- Love of learning
- Experience extending an interpreted language with native code
- Familiarity with Redis, PostgreSQL and Kafka
- Proficiency with Linux systems
- Familiarity with POSIX C APIs
- Understanding of how multiplexed I/O works
- Again, these are nice-to-haves. Even if you don't know them, we hope you are interested in learning them!