Я практикуюсь в программировании через github.
Открываю
https://github.com/trending и выбираю язык, в котором хочу практиковаться
(Например, Scala или С++ или Nim или lisp или тот же Python).
Получив список проектов, смотрю какой-нибудь интересный, открываю его.
Если интересный проектов нет -- меняю диапазов времени (за день, за неделю, за месяц) или язык. Если же интересный проект есть, то для меня в нём самое главное -- это Issues и Pull Requests. Как открытые так и закрытые. Смотрю как там меняли код. Смотрю что ещё не решено. Пробую собрать у себя. Пробую править код. Практикуюсь. Если оказывается, что я решил какую-то issue то делаю форк, готовлю правку в отдельной ветке и отправляю Pull Request. Если не вмержат -- не расстраиваюсь, а если вмержат, то становлюсь контрибутором.