--
I don't particularly like that style of arguing a point but this is just asking for it. Knowing a higher level of abstraction without knowing a lower level of abstraction is just fine. But knowing a lower level of abstraction will give you a definite edge and if there is one thing that hackers are always looking for then it is a way to have an edge over the rest. A way to do something that is deemed impossible simply by knowing a bit more, a way to achieve some feat by exploiting knowledge that is maybe a bit harder to come by but not impossible. The ultimate level playing field, you get as many tools as you're willing to learn how to use, with only your attitude towards learning and your perseverance as the limiting factors.
Most people want to just be able to buy and drive it off the lot without having to understand how it works or what makes it tick inside. But there will always be a need for automotive engineers.
For the most part, the average programmer today already does not need to know assembly. But if you want to work on other low-level aspects of code (or optimize your code for efficiency), knowledge of assembly is critical. You might not have to write very much assembly, but things like context-switching that happens on the CPU level (e.g kernel land vs user land) can only be done by sending the right instructions to the CPU.
On the other hand, those that do understand what's going on down under have to endure with the high-level crap of unimaginable proportions every day.
If "programming" is so easy that you don't really have to know anything to do it the result is going to suck. Case in point: Android and iOS.
The world would be a better place everyone were required to know assembly before doing an web app.
Also, I haven't had this much fun doing development in ages.
Why was it fun?
[0] Yes, I know there are hardware bugs. In the sort of thing I'm doing? Not hugely relevant.
If it's not your bag my friend, walk on.