This job has been posted a while ago and might no longer be available.
Senior Ruby on Rails Developer
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 engineer to take on the challenges of developing scalable APIs, beautifully designed micro/macro-services, modeling complex domain and doing all that following TDD and writing a code of excellent quality.
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 traveling 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
- Proficiency in backend development in general
- Solid design and architecture skills
- Ability to demonstrate that with the right approach Rails can scale easily
- Building JSON APIs and familiarity with modern API standards (JSONAPI, GraphQL)
- Ability to communicate effectively with both internal and external development teams
- Proficiency with UNIX environment
- Experience with relational databases and SQL (we're on Postgres). Experience with other databases will be a plus
- A strong commitment to quality
- 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
- 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:
- Experience with messaging solutions (RabbitMQ, Kafka, etc.)
- Intimate knowledge of DDD/CQRS/ES, Clean Architecture.
- System administration and security
- Contributing to 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 script that solves that problem and returns all tweets containing URLs. You should be able to specify either since when you want to fetch tweets or between what timestamps. Make it executable and runnable from console returning a nicely formatted result. The output should include the URLs themselves, date and some info indicating what it is about (especially for shortened URLs). Treat it as a real-world feature and send us a link to the repo.
2. Technical interview with remote pair-programming session: the interview part shouldn't take too much time - we are mostly interested in 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.