It's easy to take a stand when you either have a lot of sway or you're a critical component. It's not so easy when you've got people to feed and there are 100 people in line to take your spot.
In an ideal world, engineers and developers alike could really reshape a lot of business practices. For example, developers could say no to creating dark patterns, and engineers could say no to building with substandard parts. Both could say no to unrealistic deadlines that force shoddy workmanship and ugly shortcuts. Too bad that if you won't do it, someone else will gladly do it in your place.
The only way to realistically do it is to put up with it, and then change the culture of the company once you've gotten high enough in the chain. That can take years, and there is no guaranteed payoff. Of course, the other method is to create a union, a coalition of developers, or even an external organization (the EFF, Wikileaks) to back up developers or apply pressure. Doing that is a monumental task in and of itself.
I am not disagreeing with you. In fact, I encourage this behavior. It's hard for a lot of people to do it in practice though.