I’d consider interactive graphics. Nothing else has such instant feedback; it’s very obvious if something is working or not and you can easily figure out what’s wrong. Using Javascript and Canvas in a web browsing you can get up and running with 2D interactive graphics very quickly and you just have to hit refresh to see the changes you make (I don’t know what Python offers in this area). I think it’s a great way to learn various programming abstractions too. By working at a low level, you’re not forced to use abstractions, but you can see why they’re useful once you start writing more complicated programs and also develop an appreciation of their limitations. If you go straight into a framework, you go in at the deep end and have to learn somebody else’s way of doing things without really understanding why they’re doing it.
I’d consider interactive graphics. Nothing else has such instant feedback; it’s very obvious if something is working or not and you can easily figure out what’s wrong. Using Javascript and Canvas in a web browsing you can get up and running with 2D interactive graphics very quickly and you just have to hit refresh to see the changes you make (I don’t know what Python offers in this area). I think it’s a great way to learn various programming abstractions too. By working at a low level, you’re not forced to use abstractions, but you can see why they’re useful once you start writing more complicated programs and also develop an appreciation of their limitations. If you go straight into a framework, you go in at the deep end and have to learn somebody else’s way of doing things without really understanding why they’re doing it.