A few years ago, I started looking for tools that would help me keep my coder mind in shape. I found a few to practice mathematical problem-solving, brain exercises, code performance optimization, etcetera. My current list comprises 6 sites, let's check their features:
According to their website:
Project Euler is a series of challenging mathematical/computer
programming problems that will require more than just mathematical
insights to solve.
The list of available challenges already comprises around 450 problems, and the list keeps growing. In order to pass each challenge, as the site description states, mathematical/computer programming skills are required to find the correct solution, after finding the solution the problem discussion thread becomes visible containing source code in many programming languages, many times you will see pure mathematical approaches.
Project Euler keeps track of the problems that you have solved, and it is free.
Challenge your brain with scientifically designed training. Train
memory, problem solving, attention, flexibility and speed.
Lumosity will select a personalized training program based on the traits the user wants to exercise.
The training program consists of a set of 5 activities that the user should do every day. An activity is a short and fun game, usually you can complete your daily training in less than 10-15 min.
Subscribed users are able to play all the available games as many times as they want.
Lumosity keeps track of each game and statistics like how well you have performed in different traits, how you compared to other people of the same or different ages, etc.
The biggest improvements I've noticed since I started using Lumosity are concentration, better stress-handling and better memory, I even noticed an improvement in my Call Of Duty gaming.
My wife and I got a subscription after playing it for the first 20 days, it is not free, but it is worth every penny.
Improve your skills by training with others on real code challenges
This is one of the coolest discoveries of the past few years. I found about it thanks to some pals here at Crowd; they were playing CodeWars like crazy and I joined them.
The main idea here is to solve ranked code challenges called Code
Katas. Users also have ranks that can be increased by completing or creating their own challenges. The list of challenges is already big and increasing day by day.
CodeWars has an integrated code editor that also supports creating test cases. Each challenge has its own discussion thread where other users share the approaches they used to solve it.
It is free and highly addictive.
Crowd-sourced code reviews on daily practice problems.
exercism.io is an amazing open source project lead by Katrina Owen.
The first thing is to make the test suite go green and then submit the code, then a feedback cycle starts where there's no right answer, other users that already completed the problem you are solving will start giving you suggestions and questioning your design, thus the crowd-sourced code review starts. Once one feels comfortable with his code the next problem is unlocked and so on.
My favorite thing about exercism.io is the amazing design discussions that usually arise on each problem, and how you can keep track of your friends' advance by creating teams so that you can be notified of their progress.
TypingClub is and amazing free touch typing tutorial
One day I was doing pair programming while typing with two fingers, I was continually looking at the keyboard, it felt wrong, my partner noticed it and suggested me to learn Touch Typing. I started looking for free options and the best I found was TypingClub.
TypingClub comprises around 100 short exercises; it keeps track of your progress and statistics. In around 4 hours of practicing I was able to reach 57 WPM, so I still practice every time I can.
Codility saves time of software talent recruiters by filtering out job candidates who cannot write correct programs.
Codility's main purpose is to administer short programming tests and check whether the solutions are rock solid, its customers, usually recruiters, can then filter candidates.
Codility also throws monthly challenges, the first time I tried it I realized how rusty I was in scalable algorithm solutions. It has pushed me to start learning again about algorithm analysis and has made me care a lot more about code performance.
A training area exists where you can help yourself learn techniques that you may have forgotten or never learned. It contains short explanations about techniques used to approach problems and small challenges to test what you learned. The complexity increases little by little while each new concept is introduced.
Codility features a web editor to solve each challenge; you can provide test cases and run them before submitting it for the final revision. Algorithm complexity, edge cases and scalability are checked in the final revision.
The monthly and training area challenges are free to try.
Lots of free tools to train and keep your mind sharp, please take my advice and the next time you think about opening Facebook for the 10th time or spending time googling for Miley Cyrus' videos, you better go to one of these sites and train a little.
Feel free to share your ideas, let me know what you think.