Tip of the day: Chess
Play chess often and you will develop your strategical, tactical, and pattern matching abilities all of which are core programming skills. A complex bit of programming is like a complex chess game - you have to remember where things are, the positions, the patterns. Over time you become expert at recognising patterns and their repetition, even when they are somehow represented differently, still you can see the underlying pattern or algorithm used. And like chess, there are generally complex relationships between the different parts of a program, a symphony that if conducted well leads to some desired end or other.
Drawback: the time taken playing chess takes from the always too short time you have have available for the thousands of hours of coding you should be getting on with.
However: better to spend less hours writing better and more cleverly constructed efficient code than just plugging away for hours on end, duplicating, cherry-picking, stealing, re-coding, writing cumbersome long-winded, hacked, fragmented, spaghetti 'programs', which are almost indecipherable for others to interpret (sometimes on purpose), whether the result 'works' to some extent or not.
Nice game chess. I wish I had more time to play it. Similar to Linux programming also in that you have almost as much chance to make money playing chess as you do open-source programming (possibly more chance playing chess since can do podcasts and get far more followers of that than similar Linux podcasts and the like - people like to be entertained and chess can be entertaining - Linux not so much, at least not for so many).