Last week in Redgate, we announced a new learning experiment (that I organize with the help of a colleague) that we called Algorithmic Katas. This is an extract of the announcement and in the following months I will share the results with you together with problems and solutions.
Solving problems is the foundation of software development. Algorithms describe the solution to a problem. Designing and implementing algorithms is something we do every day and often without even realizing it.
But, when do you deliberately practice problems solving?
We do Code Katas but problems are usually very simple and the emphasis is on design and engineering skills.
We need something different.
Algorithmic Katas are the way to introduce problem solving deliberate practice!
Why should you care?
If you regularly practice solving programming problems you can:
- Improve your problem solving and analytical skills
- Master your favorite programming language or learn a brand new language
- Learn new practical, efficient ways to solve problems and trade offs
- Learn how to read, troubleshoot and debug software written by others
- Practice estimating the time and space complexity of your programs
More importantly, have fun!
What are Algorithmic Katas not about?
We do not talk about software design, clean code or similar topics.
We focus on actually solving the problem and implementing the solution! (obviously if your code is elegant even better).
We do not talk about mathematical proof of correctness or deep computer science theory.
We aim to stay practical and pragmatic. Every problem will comes with a set of tests. If your solution pass all the tests, you are done!
How does it work?
For every kata we will select at least two problems with a different level of complexity. There will be always an easy problem that is also an opportunity for an experience developer to learn a new language.
There is no pairing. You are on your own. If you want to improve your problem solving skills, you need to squeeze your brain. There is no other way. But don’t worry if you struggle, the problems are intentionally difficult.
At the meeting, we will get together to share and compare our solutions and learn from each others. We are particularly interested in how you approached the problem, how you found the solution and how you implemented it efficiently. It is also very important to learn why you got stuck. This is your opportunity to learn new algorithms and problem solving techniques.
Run the experiment in your company
If you agree with me that problem solving using programming problems is important to practice I am happy to hear from you. If you run similar experiments in your own company, please share the results with us. We can all learn from each other experiments.
Let’s see how it goes.
Happy coding 🙂