I don’t really believe in exercises. Or perhaps it would be more accurate to say they don’t work well for me personally, because clearly it works very well for some others. This isn’t just for programming, but also music or sports. Instead, I just have fun and play around with various things, which serves the same purpose.
This is also the case for exercises. For some people, simple short “fun” ones will work great, whereas for others a more complex hard one will work better. I think it might be a mistake to think there might be a “one size fits all” type of exercise.
Same. Instead of exercises, I write code that “scratches my own itch”, so it is significant to me, but, more importantly, it allows me to write code in radically different styles as experiments (and learn from them) without inflicting them on others.
Ever write a large program without explicit conditionals? Try it.
A good exercise is like a good friendly sports match. It flexes your knowledge muscle, challenges you to become a bit better on some aspect of what you are learning and if you fail it, nobody dies or loses money.
It gets the results you want.
That is all.
What makes a programming exercise good at getting the results you want?
Depends on which results you want
This is true but not useful. The propose of asking “what makes an exercise good” is to get insight into how to write exercises and how to evaluate them. Saying I should judge my exercise based on “it works” doesn’t actually help me decide if an exercise is good or not.
…but I’m not sure that anyone can answer the questions that you extend it with in a general way. Like, everyone has their own factors for measuring even the more specific questions. This article surely doesn’t bring anyone any closer, either. Not that I’m saying that is it’s goal, but it just makes it a brainstorm about someone’s personal opinion which isn’t super valuable to others.