I don't think all programmers need a proper algorithms class.
Think about construction. There are manual laborers with no domain knowledge that can do basic grunt work for pennies on the dollar, some with domain expertise to guide the grunts, and people that coordinate the entire construction project.
Then there's an entirely separate group of people actually working on architecture... designing the building, ensuring the structure can hold load, meets customer and legal requirements, and can be delivered on a schedule.
At my company, a good SDE1 hire is someone that's at the architecture-level... they might not be able to design a skyscraper but they can design a house. Yet 90%+ of their time will be spent putting up walls and installing plumbing.
That's ridiculous for everyone involved.