I agree, working within limitations is good for practice, and getting more creative with how you solve a problem, The main reason i learn to pay attention to how i use variables, and to make functions self contained was after repeatably bumping shoulders with the 2KB memory space early on, (big arrays for fixed values that the compiler didnt know where fixed)
Oh you want to interpret a C code script via a file on an SD card, and the file is X times bigger than the memory space you have, you also want to run syntax and error checking over the entire file before running, guess what, it bloody runs on a 328,