I think that everyone should learn to code. Not because it will make them a programmer. Not because it will enable them to estimate how long something will take, not least because experienced programmers are legendarily bad at doing that anyway. Everyone should learn to program because programming makes the modern world go round, and it's good for everyone to have at least an inkling of what that involves.
We teach a lot of kids chemistry, without any expectation that they will invent a new compound that will change the world. We teach a lot of kids physics, without any expectation that they'll make a significant contribution to subatomic particle research. We teach most kids to do creative writing and poetry, without expecting the vast majority of them to produce fiction or poetry of publishable quality. I don't see why we wouldn't teach programming alongside all those other topics that most students never master and never "need".
One argument for teaching a lot of academic subjects widely is that the skills you learn along the way have wider application than the topic itself. And it seems to me that this argument holds at least as well for programming as for, say, pure math. As programmers keep saying, programming is about analysis, structure, models... is there really no application whatsoever for those skills outside of hardcore programming? Does no-one ever wish that their managers had a better grasp of "system"? Yes, of course, you can acquire these skills in other places. But the thing about programming, pretty much from the outset, is that your pious beliefs about system will stop your code from performing correctly unless those beliefs are reasonably accurate. I sometimes tell people that I do executable philisophy - it's all about logic, but, unlike the philosopher, my logic has to work.
No, a bit of Python won't enable people to produce estimates for projects. But it may enable managers to understand why writing code once to do something that needs doing often is often a good plan (and, also, why it sometimes isn't). It may enable managers to understand why "Can we just change this one assumption" at the end of a project may involve restarting the entire project.
Yes, a little knowledge is a dangerous thing. But the little knowledge is out there already on the TV station of your choice. I don't even like Python that much, but I'd still much rather deal with erroneous assumptions based on a bit of Python experience than deal with erroneous assumptions based on watching Mission Impossible and NCIS.