Ich mag programmieren = I like programming (and I am able to do it)
Ich mchte programmieren = I want to programm (but I may have to learn it before, or I have to buy a compiler before). You may say to a waiter ich mchte etwas essen when you are hungry and you would like to order something to eat.