Coding Dojo - Clean Code Developer Akademie-Stefan Lieser

Coding Dojo

Function Katas

Write a function that tabulates CSV rows.

More »

Write a function that translates Roman numerals, such as IV, into decimal numbers.

More »

Write a function that multiplies two integers using the "Russian peasant multiplication" algorithm.

More »

Implement a function to reformat a text. Function signature:

More »

Develop a function that counts the number of characters in a string.

More »

Develop a function that counts the lines of code (LOC) in a well-formed C# source code.

More »

Write a function that returns the numbers from 1 to 100.

More »

Develop a function that recognizes whether a number is "happy" or not.

More »

Write a function to guarantee a file path to be absolute, e.g.

More »

Implement a function to translate mail followup email addresses into dates and times.

More »

Write a function that encrypts a text using the ROT-13 method.

More »

Write a function that returns a christmas tree with ASCII type "drawn" as text.

More »

Write a function that converts a specially formatted string into a dictionary.

More »

Clean Code Developer Postcards

One postcard per grade, with all the principles and practices of the Clean Code Developer Initiative.

Class Katas

Write a class Hangman. The instance receives the required word as a string via the constructor.

More »

Develop a queue class with limited length for communication between multiple threads.

More »

Develop a class for counting bowling games.

More »

Create a graphical control with which box plots can be displayed.

More »

Develop the abstract data type list in the form of a linked list.

More »

Develop a class that creates a plan for processing interdependent jobs.

More »

Write a class that implements a queue in which the elements are assigned a priority.

More »

Develop a class that implements a ring buffer.

More »

Implement the abstract data type Stack.

More »

Library Katas

Develop a library that can be used to manage user logins to websites.

More »

Develop a library that can be used to find file duplicates in a directory tree.

More »

Develop a library that can be used to determine the size of directory trees.

More »

Implement a library that can be used to check whether a class correctly implements the INotifyPropertyChanged interface.

More »

Implement a library with which a Windows service can be realized in a simple way.

More »

Clean Code Developer playing cards

A playing card for each principle and practice of the Clean Code Developer Initiative.

Application Katas

Create a program to maintain a budget book. The program is operated via the command line.

More »

Write an application that can be used to buy movie tickets online.

More »

Write an application with which an entered text can be wrapped at a given column width.

More »

Write a console program that allows two players to play [Tic Tac Toe].

More »

Develop an application with which you can be woken up.

More »

Develop an application that determines the lines of code (LOC) of the C# source code files in a directory tree.

More »

Write a program that recognizes account numbers in ASCII files.

More »

Write a program to manage a small collection of books.

More »

Write a program that displays a monthly calendar on the console.

More »

The use of estimates in software development.

More »

Write a console application that can be used to convert Roman numerals.

More »

Develop an application for timetable information.

More »

Idea Flow Mapping is a method invented by Jeanelle Klein.

More »

Develop an application for keeping a cash book for small businesses.

More »

Write a tool to resolve conflicts in text files.

More »

Develop an application that allows 2 to 4 people to play the ladder game.

More »

Write a program that creates a cheat sheet for a Minesweeper game field.

More »

Write an application that helps to do the work of a team in MobProgramming "in tomato time".

More »

Write a console application that outputs the contents of a text file page by page.

More »

Write an application that can be used to monitor share prices.

More »

Develop a program with which a so-called [n-back test] can be carried out.

More »

Develop an application to manage recipients of email newsletters.

More »

Write a program that lists all misspelled words in an input file.

More »

Write an application that supports you in predicting software estimates.

More »

Develop an application with which a group (including a distributed group) can measure its mood.

More »

Write a console program that allows a player to play [Tic Tac Toe] against a bot.

More »

Develop an application for electronic admission control at events.

More »

Develop an application to maintain a to-do list.

More »

Develop an application that can be used to time exercises during training sessions.

More »

Develop an application for evaluating presentations at conferences.

More »

Clean Code Developer Poster

DIN A0 poster with all the principles and practices of the Clean Code Developer Initiative.

Architecture Katas

Develop (web) software that makes suggestions to the user about what to cook.

read more "

Develop a software system that allows DVD owners to share their treasures with others.

read more "

Develop a software system that allows the audience at developer conferences to ask speakers questions or give them feedback.

read more "

Develop a software with which a hotline can report issues to ProductOwner.

read more "

Develop a software system that allows distributed teams to work together on a Kanban board.

read more "

 

Develop a software system that allows you to send tweets at a defined time.

read more "

Develop an application with which employees in a company can find out how the "check-in flow" is in the canteen.

read more "

Develop an application to monitor the development of the Lines of Code (LOC) in a directory tree.

read more "

Develop a Twitter service that allows you to send tweets longer than 140 characters.

read more "

Develop an application that automatically redelivers a forwarded email at a specified time.

read more "

Calculate stability and abstractness of libraries/packages/components.

read more "

Develop an application that allows customers to order online from a pizza delivery service.

read more "

Develop an application that brings the game "Quizduell" (https://www.quizduell-game.de/) to the desktop.

read more "

Develop a web application with which interested parties can come together for a collective order.

read more "

Develop a calculator application in which individual operations are only available to certain users.

read more "

Write a program that allows several players to play Stadt-Land-Fluss.

read more "

Develop an application that customers can use to order cab rides (see http://mytaxi.com).

read more "

Develop a service with which appointments can be arranged electronically. The model is, of course, http://doodle.com.

read more "

Develop an application with which team members can work according to the "Pomodoro Technique".

read more "

Develop an internet service for shortening URLs such as bit.ly, TinyURL or Google url shortener.

read more "

Develop an Internet service with which you can have a vocabulary word sent to you every day.

read more "

Develop an app with which you can learn vocabulary according to the 1-out-of-4 scheme.

read more "

Workflows define which steps are to be carried out in order to react to an event.

read more "

Agility Katas

Attention: If you want to enjoy the full fun of the Agility Katas, complete the exercises piece by piece in the given order. This is the only way to expose yourself to the full surprise and find out whether your code is really changeable.

CSV Viewer - Browse CSV files page by page

Questionnaire - A program for filling out questionnaires

With flow design to clean code

Learn how to use flow design to achieve clean code with this book.

Word Count - Just start and then increase...

Explanations

Clean software development needs to be practiced. This requires exercises. In the Coding Dojo, we collect such exercises under the established term "Kata". The kata have different scopes in order to offer something for every taste, every level and every time budget:

  • Function Katas/Code Katas are small tasks whose problem definition is an algorithm. Their solution consists of a function - subject to any refactorings.
  • Class Katas are tasks whose problem can be solved using a class and several functions - again, subject to any refactoring. This is more about abstract data types.
  • Library Katas stand for problems whose solution requires several classes, which can then be combined in a library. These tasks are somewhat more extensive.
  • Application Katas The task is to develop a complete application. In other words, it is not just about any logic, but about everything from the user interface to the domain and resource access. However, the challenge here is not so much the use of technology, but rather the interaction of aspects.
  • Architecture Katas are larger application catas. They require a distributed implementation or are even so large that an implementation is unrealistic. Then it's about the architecture design.
  • Agility Katas are application katas that focus on iterative and incremental development. Each kata is therefore delivered in several parts.

What you can practise with the katas is different. Functions and classes are more about test-first, the application of CCD principles and test techniques such as dummies, Gold Master, etc. With libraries and applications, other techniques are added, such as dependency injection or practices like version control. Above all, however, an explicit design gains weight. With the Architecture Katas, this may even be the only result to be produced - albeit at a different level of abstraction than with the Application Katas.

The procedure is also worth practicing for agility katas. The approach should be incremental in terms of agility. The katas provide information on the expansion stages in which you should proceed. Try to really concentrate only on the current iteration, without consulting information from other iterations.

en_USEnglish