Welcome to your Github coding test!
We know you've already spent plenty of your personal time during interviews. Worry not; this is the last step of our process and it is designed to be relatively quick. We appreciate both your time and patience!
We've hand-crafted a coding challenge in our problem domain, for your intellect to chew on. We've designed the challenge to test your problem solving skills in addition to your communication skills. Please, take the time to read through this entire README.
Good luck!
Create a RESTful API for a vending machine
in the language of your choice. The vending machine can take any currency you
wish, and can sell any products you wish. The vending machine should respond to
basic commands, such as pay
and select_products
Your primary objectives:
- Represent a basic data model that underlays the functionality.
- Prototype (quickly) simple API endpoints that allows the user to interact with the machine.
- Create at least one action in the UI/API that behaves the way the user would expect.
- Choose whatever language you wish. Some options you might consider: Ruby, GoLang, Python, Scala, Erlang,, Javascript, and Clojure.
- Do NOT use a full-stack framework such as Rails, Django, or Play. You can use specific components of frameworks, however. (Ex: ActiveRecord)
Things you don't need:
- A working UI.
- Persistence. (You can persist in-memory for now.)
- Full implementation of the machine. (One or two actions is enough.)
- Unit tests. (Really. We won't judge you.)
Please commit your work to branches in this repo and send us pull requests early and often. You can mark them as 'work in progress' until they are 'ready for review.' We will follow along as you add more commits, commenting and collaborating with you. You have as much or as little time as you want. If you are not sure how to best do this you can open an issue on the repository to discuss the design and architecture.
- Thoughtfulness.
- Simplicity and speed.
- How do you communicate and incorporate feedback.
As you will notice, this is not a simple algorithms or computer science test. We are trying to get an idea for how you think and how you communicate as a teammate.
Some things you might want to consider doing to help us along:
- Open pull-requests early.
- Document your thinking (either in a PR or an Issue)
- Why did you choose the frameworks and libraries you did?
- What functionality did you choose to focus on? To omit? Why?
- What were your design/archetecture considerations?
- Open issues with any questions you have.
- What isn't clear to you?
- Which assumptions are you making because of lacking information?
- Don't feel obligated to wait for answers. Feel free to make assumptions and proceed.
MIT