Table of Contents
- Meetup Prep and Environment Setup
- Coding Challenges
- Katas
- Refactoring Katas
- Coaching Resources
- Podcasts
- Books
Meetup Prep and Environment Setup
Coding Challenges
- LeetCode is a website with coding questions (challenges) categoried by difficulty, tag, and other criteria, as well as other information specifically useful for job searchers.
- Difficulty: On job interviews, you will typically get problems of “medium” difficulty and have between an hour and an hour and a half. The difficulty rating is not perfect - some Hard questions are Medium, some Easy questions are Medium, and vice versa.
- Tags: The tags let you practice specific topics such as linked lists, dynamic programming, recursion, and more.
- Solution Performance: When you complete a challenge, LeetCode will tell you how your solution compares to other solutions. If you are in the bottom 50%, try again! You can also check how you did when returning to the website if you click on the problem you solved, click on Submissions, and then click on “Accepted”.
- Getting Help: There is a discussion tab where possible solutions are discussed.
-
HackerRank - popular tool used by employees for assessing job candidates. LeetCode has more resources, categorization, and functionality. However, if you are job seeking, you may want to become familiar with HackerRank.
-
Project Euler is great fun for the mathematically-minded. Over 650 problems which ramp up rather quickly in difficulty. If you’ve got a strong mathematical background you’ll have a real advantage here. If not, you might well acquire one.
-
Advent of Code is a Christmas-themed problem set that has offered 25 new programming challenges every December since 2015. Each set is a collection of well-made problems that challenge your ability to reason algorithmically. Problems range from moderate to difficult.
- Rosalind is a bit of a hodge-podge, offering a well-curated collection of problems introducing concepts in bioinformatics, a small set of introductory Software Crafters problems, and a collection of classical algorithms to implement.
Katas
Gabe Montalvo’s Curated List of Coding Katas [Exploratory Testing]
- Black Box Puzzles
- Evil Tester
- Parking Calculator
- Restful Booker](https://restful-booker.herokuapp.com/)
Refactoring Katas
- AmazingRefactoring (https://github.com/f-lombardo/AmazingRefactoring), or Trivia.
- A playground for refactoring based on http://xp123.com/articles/refactoring-challenge-the-amazing-maze/
- https://github.com/martinsson/Refactoring-Kata-Lift-Pass-Pricing You have a mix of SQL queries and business logic. A refactoring kata where you’ll practice disentangling business logic from frameworks and SQL
- https://github.com/christianhujer/expensereport is simpler, although it’s a good candidate to tackle with newcomers. It’s kinda more realistic than Gilded Rose because you have to deal with Stdout and write tests around that
- https://github.com/emilybache/Encryptor-Refactoring-Kata might fit the bill.
- https://github.com/emilybache/ValidateAndAddProduct-Refactoring-Kata
- https://github.com/emilybache/Roadload-Refactoring-Kata/blob/main/csharp/Roadload.csa kata for practicing both testing with Combination Approvals and ‘Split Phase’ refactoring a kata for practicing both testing with Combination Approvals and ‘Split Phase’ refactoring
- https://github.com/emilyche/Roadload-Refactoring-Kata/blob/main/csharp/Roadload.cs
- https://github.com/sleepyfox/elections The song kata (it has no tests and writes to stdout, with both C# and Python ports:
- https://github.com/sleepyfox/code-dojo-39 (edited)
- https://github.com/ericlemerdy/katastrophic/blob/master/java/src/main/java/name/lemerdy/eric/Inv3st_Plan.java short, ugly.
- https://github.com/codecop/TriviaOO-with-Approvals-Kata
- https://github.com/codecop/golfed-game-of-tron
- https://github.com/codecop/TriviaOO-with-Approvals-Kata
- A Swiss Army Knife of sorts for our Enterprise students. It starts as a single page or endpoint that has some basic rules extremely poorly written. It needs serious refactoring before the new stories that are provided can be implemented. Also used for BDD training and to evaluate user stories. https://github.com/gSchool/refactor-and-extend-exercise
Coaching Resources
https://sammancoaching.org/
Podcasts
Tech Done Right - 72 episodes on how to do technology the right way.
Books
Coding Dojos
- The Coding Dojo Handbook, by Emily Bache
Test Driven Development
- Mocks, Fakes, and Stubs, by Emily Bache
- “Test-Driven Development by Example”, Kent Beck
- “Unit Test Patterns”, Gerard Meszaros
- “Growing Object Oriented Software, Guided by Tests”, Steve Freeman and Nat Price
Coding Techniques
- “Clean Code”, Robert C. Martin
- “Design Patterns: Elements of Reusable Object-Oriented Software”, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Gang of Four)
- “Java Design Patterns”, Rohit Joshi (covers equivalent patterns as the G of 4 book, but in Java)
- “Functional Programming for the Object-Oriented Programmer”, Brian Marick
Refactoring / Legacy Code
- “Working Effectively with Legacy Code”, Michael Feathers
- “Refactoring: Improving the design of existing code”, Martin Fowler
- “Refactoring to Patterns”, Joshua Kerievsky
- “Design Patterns, Java Workbook”, Steven John Metsker
- “Refactoring Workbook”, William C. Wake
Exploratory Testing
- Elisabeth Hendrickson: “Explore It!”
- James Lyndsay’s black box puzzles
- Alan Richardson’s practice apps
- Maaret Arvi’s take on “How Would You Test a Text Field?” (blog post & slides
- A very interesting parking cost calculator
- Mark Winteringham’s practice API “Restful Booker”
See Katas, More Recommendations for Exploratory Testing or Lisi Hocke’s website for more resources
Shares teaching materials on - emilybache