Similar to other industries, developers need to practice on regular basis, be it either to deepen existing skills or to learn new technologies, frameworks and tools. For developers, the most usual ways to practice are

  • dojos
  • hackathons
  • concrete hobby projects
  • exercises in form of minor puzzles/problem scenarios

Hackathons are in most cases fun, especially since people are collaborating quite intensely. However, they are quite time-consuming and other tasks and responsibilities need to be ignored for a longer period, such as a whole weekend. This might be difficult especially if you have a family. Concrete projects are cool as well, but again really time-consuming.

My personal favorite when it comes to practice coding are minor puzzles. I can select a certain focus and solve minor yet concrete problems. Since the tasks are rather small, I can easily integrate them in my daily routines without skipping other responsibilities.

Fiftyseven exercises for programmers by Brian P. Hogan is an excellent book for this kind of practice. The book contains fiftyseven (surprise, surprise) exercises with different focus areas and difficulty. Some of the topics are:

  • calculations
  • decision making
  • data structures
  • file handling
  • comsuming external services

The first fiftytwo exercises are rather small in scope, while the last five exercises are about complete solutions, such as a Todo application. Each exercise contains a set of constraints and challenges, i. e. variants of the original problem statement. The exercises are language-independent, so one can use them to code in one’s favorite language or to get started with unknown languages or frameworks.

On the one hand, I felt that some exercises were a bit too repetitive, i. e. some exercises are quite similar to each other. On the other hand, practice is often successful if you repeat over and over again (I mean Lionel Messi would have never reached his current level by stopping to practice regularly, right?) I also experienced that this kind of exercises is quite suitable for me as I can do them by myself and according to my schedule. Besides, I prefer practicing continuously in minor steps over exercising a whole weekend at once (similar to a runner who does not run 100 km on one day, but 25 km each week)

In summary, I got to say that this is probably the most valuable book I have read in 2017. Personally, I used it to practice Python, but I will certainly re-do some exercises in another language.

The book is available at Pragmatic Bookshelf