To evaluate the technical prowess and capabilities of a senior mobile engineer before a long term hire, we want to give a simple exercise which testing engineering and also user interface skills.
When it comes to building a mobile app, there’s a handful of basic building blocks every application needs. We need to be able to authenticate, fetch some data from somewhere, potentially store it/manage the state then then visualize this for the user.
For this exercise, you have full reigns to pick an entity from any open public API or the ones found here to meet the requirements outlined below. The goal will be to make a visually appealing and well-written mobile app which is user friendly.
For the sake of the example and requirements below, let’s assume I show to make an anime demo app.
- The app should be able to list all of entities for the user to pick from
- For example, a list of all animes
- The app should be able to tap on an entity from the list view and dive into the details
- For example, if I clicked on One Piece, I would now see a page with more information about the anime
- The app should be able to favorite a given entity
- For example, I could favorite One Piece and it would show up as favorited. I can unfavorite it and it would also show up as unfavorited (for the sake of simplicity, this can be done locally and does not need API integration)
- The app should be able to search for a given entity from within the list
- The app should gracefully handle errors/issues as it would on production
- The app would have a very simple onboarding screen before the user interacts with it for the first time telling them what the app is about and the features it contains
- You should use React-Native for this exercise.
- You should submit the code for the project as repository on a platform like GitHub.
- You should write a detailed README.md to outline the code structure, design patterns and any libraries you chose to add
- Correctness: Does the app retrieve the entity information as required and display it in a user-friendly manner?
- Code quality: Is the code readable, maintainable, and well-structured?
- How did you architect the frontend? How did you break down components? Were things made in a reusable and modular way?
- Did we use any design patterns for this? If so, what did we use?
- User experience: Is the app visually appealing and easy to use? Do you bring good intuition as an engineer on solid UI/UX practices?
- Error handling: Does the app handle errors gracefully and display meaningful error messages to the user?
- Is the application build in a way which is production ready?
- Documentation: You're able to use any libraries or frameworks you wish, but be prepared to explain what you used and why you made this decision in your README.md
- Although this exercise should not take more than 4-6 hours for the right fit, we don't want any candidate to spend more than 8 hours on this exercise. You might not finish everything but it's important to understand how you work under time constraints and the decisions you make in a constrained way.
- The maximum submission deadline is 3 days from the date we send this assignment to you.
- Create a public repo with the code and README.md inside which has the following details:
- How to run
- Libraries Used and Why
- A screenshot/gif of what was made
- What you would do if you had more time
- Record a short Loom video walking through your exercises and showing the different states working
- Send an email to kamran@firekamp.com, frankie@firekamp.com, faizan@firekamp.com and emma@firekamp.com with a link to the README.md, loom video and repo