Well, since nobody seems to be answering it, I will just state my view on this matter. It seems like a good question that needs more discussion
I having difficulty in understanding what you mean by “Direct Contribution”. Like you mentioned, CP helps society with better engineers, how is that not direct?
Anyways, lets compare CP to something we think contributes to society. Lets say for example, school. How does school contribute to society?
School teaches students various subjects, making them knowledgeable. Knowledgeable youth means better future. CP does the same. It teaches us various algorithm, data structure and problem solving skills.
In school kids get to make friends. It makes them social. Same for CP. We go to universities or school where we find other people doing CP. We become friends. We also have virtual friends.
School teaches us moral ethics. CP teaches that too. Most of us don’t copy codes, even though it is very easy to do it. We are so ethical
School prepares us for the upcoming challenge in life. When competing with friends for marks, or extra curricular activities, we are learning how to survive this harsh world. Isn’t that same for CP? Constant competition strengthening our willpower.
Okey, basically CP is not really any different than a school. It is contributing in it’s own way. Think about how a football match contributes to society? It entertains us.
Finally, I believe CP is directly contributing to society by teaching people how to solve problems, think in different ways and keeping them busy with something meaningful. It may not have any financial impact on society, but not everything can be measured with money