I have being doing programming work for quite a lot of time since I did it in high school making a simple clown based video games.
When I worked in Retail before I had to reprogram the linux system to allow mouses to work through the system it was all self learned by me since the software on the camera system had no information online so I had to learn how to do it myself.
In the past I used to make songs so while doing that I was learning how to make programs run better to allow better results when making music.
Reprogramming software types include
Among other types