Here is what really happens. People who are not familiar with programming assume that some mental faculty is necessary to solve a particular problem. Indeed, it is required for a person to succeed at the problem. That mental faculty is often general and can be applied to other tasks. It's some aspect of what we consider general intelligence.
Instead, software engineers look at a problem and solve it by changing its representation to fit the capabilities of a pre-existing algorithm. The solution has nothing to do with mental faculties in the general population. The solutions ends up being specific. If you want to apply it to another problem, you need to transform that problem into some clever representation as well.
People notice the lack of generality and say "no, this is not what we had in mind". It's an entirely reasonable sentiment.