Demo application (tic-tac-toe game and more) built with Web Components, with progressive enhancement.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sample-tictactoe/README.md

47 lines
1.8 KiB

# Assignment
1 week ago
Source: https://www.programmfabrik.de/en/assignment-frontend-backend-developer-job-berlin/
> Code a tic-tac-toe game
>
> Depending on the job you are applying for, you can code in Javascript (ECMA) or C++.
>
> Requirements
>
> * Use your own code only and start from scratch
> * Player can choose the opponent to be human or computer
> * Use [L]GPL'ed libraries if necessary, please include copyright notes
> * Let us know how long it took you to code the game
>
> JavaScript version
>
> * Implement in Javascript so that it works in Mozilla Firefox
> * Make use of CSS, provide nice visuals
> * Make the back button work
>
> C++ version
>
> * Implement in C++, so that i works on the command line under Linux
> * The opponent has to be unbeatable
1 week ago
# Solution
## Time spent
By major chunks of work in git history:
1 week ago
* ~0.5 hours to set up the project;
* ~5 hours to implement game board serialization, tic-tac-toe rules and game solver (with tests);
* ~1 hour to set up the backend / frontend structure with JSX templating and static resources;
* ~2 hours to implement progressively enhanced form and query string value trackers
(both on backend and in web components);
* ~3 hours to implement basic game UI in client-server mode;
* ~2 hours to enhance the most basic game UI features on frontend for offline mode;
* ~2 hours to make UI fully functional,
to cleanup the code and reduce duplication between frontend and backend,
and to make the resulting page somewhat presentable
* ~2 hours to implement another set of tic-tac-toe rules (with tests),
support for changing board size (both on backend and in web components).
...which makes it ~18 hours total. I definitely did not expect to spend that much;
but also originally I didn't think that the scope will expand this much.