|
| 1 | +--- |
| 2 | +styleguideUrl: https://s3.amazonaws.com/avocarrot-style-guide/latest/avocarrot-skin/documentation/apps/index.html |
| 3 | +--- |
| 4 | +{% include header.html %} |
| 5 | +{% include online-assignment/intro.md %} |
| 6 | + |
| 7 | +# Objective |
| 8 | + |
| 9 | +You are a software engineer for advertising technology company {{site.companyName}}. A fellow software engineer just implemented a new feature on our Bidder Management Dashboard and you are given the task of reviewing their code before releasing it to production. |
| 10 | + |
| 11 | +Notes: |
| 12 | + |
| 13 | +- We do not expect you to be an ad-tech expert so below you can find some quick context to get you started. |
| 14 | + |
| 15 | +# Context |
| 16 | + |
| 17 | +{{site.companyName}} is a mobile ad exchange, which on the demand side is connected to 3rd-party companies called Demand Side Platforms (DSP) and on the supply side is connected to mobile app developers. For this assignment we'll focus **only on the demand side**. |
| 18 | + |
| 19 | +Each DSP can have one or more bidders connected to our exchange. You do not need to worry about the specifics of how DSPs and their bidders work. |
| 20 | + |
| 21 | +{:width="100%"} |
| 22 | + |
| 23 | +# What does the codebase your colleague implemented do? |
| 24 | + |
| 25 | +The code you are about to review is adding a new feature on our Bidder Management dashboard, which provides tools for our DSPs to manage their bidders. In this particular feature a new functionality is added so that users can view a list of their bidders. |
| 26 | + |
| 27 | +The exact business requirements are summarized below. |
| 28 | + |
| 29 | +1. Given that a user visit the ```/bidders``` page, then it should display the bidders split in different columns depending on their state, when the client loaded the bidders successfully. |
| 30 | +2. Given that a user visit the ```/bidders``` page, then it should display an error message when the client failed to load the bidders. |
| 31 | + |
| 32 | +Notes: |
| 33 | + |
| 34 | +- These are the only requirements we are concerned with for now. |
| 35 | +- The implementation uses {{site.companyName}}'s [styleguide]({{page.styleguideUrl}}). All the styling you might need is included there. |
| 36 | +- The bidder info is retrived via the [Bidder Management API](http://docs.biddermanagement.apiary.io/). |
| 37 | + |
| 38 | +# Tasks |
| 39 | + |
| 40 | +The assignment consists of 2 tasks. |
| 41 | + |
| 42 | +| Task Objective | Expected Completion Time | |
| 43 | +|---|---| |
| 44 | +| [Task 1:](#task-1) Review the code and add any feedback/comments/suggestions you may have | ~30 minutes | |
| 45 | +| [Task 2:](#task-2) Implement your suggested improvements and implement end-to-end test cases to check that the business requirements are satisfied | ~2 hours | |
| 46 | + |
| 47 | +## Timing assumptions |
| 48 | + |
| 49 | +The time estimates for the tasks above assume that you are familiar or have professional experience with testing techniques and building basic web apps. |
| 50 | + |
| 51 | +## Task 1 |
| 52 | + |
| 53 | +Review the code carefully and add any feedback/comments/suggestions you may have. |
| 54 | + |
| 55 | +Please feel free to suggest anything you think that can be improved. There is no limitation on what you can suggest so add your comments freely. Please do not forget to explain your reasoning behind your suggestions. |
| 56 | + |
| 57 | +### Where can I find the code to be reviewed? |
| 58 | + |
| 59 | +1. You should have received a Github classroom link which will give you access to the repo to be reviewed. If you didn't then please click on your language of choice below: |
| 60 | + - [React](https://classroom.github.com/a/sQOFY9lb) |
| 61 | + - Angular (Work in progress) |
| 62 | +2. When you accept the assignment a new repo will be created which is the one you will be working on. You have admin rights so you can do anything you want. This repo contains a branch called ```feat/view-bidders``` which contains the code that you will review. |
| 63 | +2. Click on the Pull Request tab and create a new Pull Request with base branch ```master``` and source branch ```feat/view-bidders```. Use this Pull Request ONLY to add your code review comments. |
| 64 | +3. Add your review comments in that Pull Request. |
| 65 | + |
| 66 | +## Task 2 |
| 67 | + |
| 68 | +Implement your suggested improvements and end-to-end test cases to check that the business requirements are satisfied. |
| 69 | + |
| 70 | +- You are free to change whatever you want in the entire codebase. You can install any dependencies you might need. There is absolutely no limitation. |
| 71 | +- The codebase already contains some (failing) test code and fixtures. Again you can change whatever needs to be changed to make the tests run and verify that the app works as expected. Install anything you need. Change anything you need. |
| 72 | +- For your end-to-end test cases you will need to know how to communicate with the [Bidder Management API](http://docs.biddermanagement.apiary.io). |
| 73 | +- Your new changes should be implemented in a separate Pull Request. |
| 74 | +- There is no need to implement unit tests, just the end to end tests! |
| 75 | + |
| 76 | +### Styleguide |
| 77 | + |
| 78 | +If you need to implement styling please use the CSS styling already implemented in {{site.companyName}}'s [styleguide]({{page.styleguideUrl}}). |
| 79 | + |
| 80 | +# Deliverables |
| 81 | + |
| 82 | +At the end you should have TWO separate Pull Requests: |
| 83 | + |
| 84 | +1. The original Pull Request which contains your review comments. |
| 85 | +2. The new Pull Request that contains your changes. Feel free to add any interesting approaches or important points in the PR's description. |
0 commit comments