I'm self taught. The first time I got in touch with a programming language was at age 10, when my math teacher showed us an algorithm for the greatest common devisor. I wrote it in qbasic at the time and was astonished by the power of this 286 machine to do my homework. I went on to adapt open source games like nibbles and gorilla. I was especially proud about figuring out the math to turn the bordered nibbles world into a donut. Subsequently I read anything about computers I could get my fingers on. The DOS manual was my evening lecture for several month :D my interest stayed confined to math & algorithms until I got a new physics teacher at age 14, who taught us about fractals & recursion with me starting to learn Delphi and windows apis. I wrote my first self replicating office viruses and trojans and learned about sockets to report back. Couldn't solve the problem of data errors over the internet and went on to other ideas. At age 15 I went for an exchange highschool year to the US. I got suspended for hacking into the principals account. no damage was done, so my visa got reinstated and I was able to leave the country. Back at home I joined a computer class and started learning about cryptography and security. For my final high school exam I implemented RSA. In university I finally learned proper software development and chose a browser rpg Ai as a personal side project to get really good at this "object oriented" stuff :D it ended up being completely autonomous with pathfinding and map building, monster fighting, selling and archiving items and would report gold levels daily, which I would then sell on Ebay. It had to break login Captcha and would use my own wget based API to interface with the browser game. Later I finished a master in Ai. This was 4 years ago, and the rate at which I am creating side projects now a days wouldn't fit in here. As a general rule: for the last 18 years I always had a sideproject to work on and this is how I got good. Feel free to ask specific questions if you want to know more ;)