BookingSync is more than a vacation rental solution for hosts and agencies; it is a platform for hundreds of applications and developers. We need an excellent and highly-experienced engineer to take on the challenges of developing scalable APIs, beautifully designed micro/macro-services, modelling complex domain, extending current complex ecosystem and doing all that following TDD, writing a code of excellent quality and embodying the Extreme Ownership mentality (bonus points if you know Jocko Willink).
We are growing fast as so are our requirements for scalability and stability. We are no longer at a scale where adding X number of servers solves all the issues. Database sharding, replicating data via message queues/distributed streams, optimizing response times in APIs to the max, integration with multiple services coming from our own ecosystem and numerous third-party services, and very soon dealing with big data - those are the things you can surely expect to be challenged by.
We are also a fully-remote async/distributed company across the entire world without a physical office. If travelling (and software development, of course) is your passion and you highly value location-independence, BookingSync is the right place for you.
You will need to have:
- Strong experience with Ruby on Rails, ideally at least over 5 years of experience working on non-trivial projects with a good success record
- Proficiency in backend development in general
- Solid design and architecture skills
- Experience with async messaging solutions (we use both RabbitMQ and Kafka)
- Experience with microservices architecture
- Ability to demonstrate that with the right approach, Rails apps do scale
- Familiarity with modern API standards (JSONAPI, GraphQL)
- Experience in working within an Agile environment
- Ability to communicate effectively with both internal and external development teams
- Experience with relational databases and SQL (we're on Postgres). Experience with other databases will be a plus
- A strong commitment to quality, ownership and taking responsibility
- Excellent written and spoken English
- Experience with remote work and/or a solid work ethic that makes it possible to thrive in a remote-only environment
- Drive to getting things done efficiently
- Care for the greater good, BookingSync is not just a software company, we give back to humanitarian, solidarity, environmental & ecological causes from 10% to 50% of our profit.
It would be great if you had experience with:
- DevOps and security
- Other programming languages
- Mentoring other developers
- Contributing to the development community through code, documentation, mentoring, teaching, speaking and all other forms.
- Short terms rentals or travel industry
Sounds interesting? Contact us now!
Want to increase your chances of standing out? Include your open source contributions, blog posts and other publications you wrote, links to conference talks. You could even tell us about one thing or two you created that you are particularly proud of or the most challenging features you've worked on.
The hiring process consists of four steps:
1. A small homework: Imagine that you don't want to or just don't have enough time to go through entire Twitter timeline every day and you are only interested in URLs to the various resources that are submitted by the people you follow (e.g., to blog posts). Implement a solution that will solve this problem and will allow to specify either since when you want to fetch tweets or between what timestamps and will deliver the result via the email. Divide the solution into two Rails applications:
1.1 Service A with UI where specify the input (i.e. timestamps but also the email address, to which the results will be delivered)
1.2 Service B will accept the input somehow from Service A and deliver the result via email. The template for the email should be customizable (e.g. using Liquid) and the Service B should be flexible enough to handle potentially other use cases with different input. In that sense, delivering URLs from Twitter would be just one of the many types of emails that such service should be capable of handling. The template for this particular use case should include the URLs themselves, date and some info indicating what it is about (especially for shortened URLs). Treat it as a real-world project and send us a link to the repo.
2. Technical interview with a remote pair-programming session: the interview part shouldn't take too much time - we are mostly interested in the ability to solve the actual problems and being able to figure out the best possible solution for that problem, not in knowing things can be easily googled and learned through experience, that's why the interview part will be focused mostly on open-ended questions about some non-trivial matters. The pair-programming session will take a bit longer, and it will involve some nice challenge in a Rails universe.
3. An interview with our CEO and/or COO that will be focused more on soft things, nothing technical this time.
4. An opportunity to have the conversation with the entire team you are going to work with. It is an excellent way for both sides to make sure we will be a perfect mutual match.