Kata Mastery Project

Goals

  • To prepare you for a take home kata exercise that some employers use to screen employees.
  • To focus on good git practices.
  • To focus on TDD.
  • A review on designing classes in Java (or JavaScript).

The Katas:

There are three paths to chose from:

  • Three shorter katas that are familiar: FizzBuzz, Triangle Sorter, and the Babysitter Kata. - Source
  • EverCraft: "Putting the TDD in DnD!" - Source
  • The Vending Machine Kata - Source

The first option is three simpler katas, but combined they cover a decent amount of concepts.

The second option is a kata that guides you through the process of creating a Dungeons and Dragons style character class and has some really great stretch tasks.

The third option is recreating the classic coin-op vending machine. This can get into some principles of OOP as you will need different classes to make this vending machine come to life in a way that embraces TDD and clean code.

Grading Criteria:

You must accept at least one of the three paths. You can do the katas in either Java or JavaScript (or both!). If you do more than one path, please leave a note in the grading feedback which path(s) you would like feedback on.

Our areas of criteria:

Git Usage

One of the things a potential employer evaluating a coding kata will look for is a 'story' of how the code evolved as you wrote it. SO with that in mind we will be looking for:

  • Commits after every passing test.
  • Commits after refactors.
  • Commit messages that describe what the commit is doing. More commits are better than no commits. Consider using a feature branch workflow as appropriate.

TDD Usage

This is a good time to go back and work on problems that were built for TDD. We expect to see code written with tests for this project.

  • When running code coverage tools we should see 80% line coverage and 100% method coverage. This will not be a problem if you use TDD to create the methods and classes that you write.

Clean Code

Consider this as practice for a potential employer. We want to see the following in your code:

  • No blocks of commented out code.
  • Good variable and method names.
  • Code that is auto formatted.
  • Imports that are optimized.

Assignment Link