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.
I've been thinking a lot recently about Xerox PARC - a unique situation where smart people were given a wide degree of latitude, and the result was they came up with some world-changing things.
I understand that businesses have a legitimate right to work toward their end (the bottom line) - but in this rapidly changing world I think responsible people need to step up and say "enough is enough, we make these things, and here's how WE want to make them."
Even at startups - the incentives are such that oftentimes user privacy is compromised. The economic model of ads supporting software is profitable but is it really the way we want to work?
Unfortunately we may be too far down this road. People don't generally want/expect to pay for software. I think this is limiting and troublesome in the long term.
For example, developers do pay for MS toolkit despite alternatives. Certain architects and designers pay for Autodesk software. Or 3D modelling even despite existence of Blender. There are quite a few of music software options that are strictly paid. Higher end video authoring software. Numeric and statistical packages. Electronics design and simulation software. Games... Heck, people still pay for office suites.
What we don't see is people paying for CRUD as much as they used to.
What matters is that the software in question is truly great for doing something, competition is not to big and that the enterprise users ultimately catch on. Of course few start-ups want to tangle with that.
This is true for exactly 0 engineers at Google and Facebook. Every single one of them could easily find another job if they wanted to leave.
I think you guys seriously need to consider the possibility that these people are actually OK with what they're doing and simply have different values and priorities than you do.
> It's hard for a lot of people to do it in practice though.
The world of development exists outside of the tech giants. There are more people doing dev work outside of those giant companies that are still making an impact.
I don't deny that there can be apathy. Some people show up, do what they're told, and collect money without regards as to what they're doing.
> I don't deny that there can be apathy
I'm not talking about apathy, I'm talking about actually understanding and being OK with what you're doing. Google and Facebook have just short of 90,000 employees between them (not all of them engineers, of course) - it's extremely misanthropic to assume that they are all either apathetic or consciously doing evil.
A very large number of people understand and are largely perfectly OK with the substance of what Facebook and Google are doing.
I'm not sure what country you're in, but here, these 10 digit numbers and their various prefixes (NPAs AKA "area codes") are literally burned into the consciousness of most citizens, without them even realizing it. Additionally, all modern cellular services here are still following it in some sense or other, making it an example of highly entrenched technical debt. I'm pretty sure that the design of this system bled heavily into most other countries' telephone networks as well.
A small number of engineers probably drew up this plan on a chalkboard in the 1940s at AT&T, without a clue as to the magnitude of future ramifications.
As a profession, software engineers have very weak ethical standards. We have no Hippocratic oath, we have no iron ring. We might not be happy about it, but we'll release code that we know to be dangerously buggy, we'll cooperate with surveillance agencies, we'll design systems that exploit users, we'll build products that are sold to the governments of Saudi Arabia or Libya.
If software engineers were collectivised, we could refuse to do all of this shady stuff. Any software engineer tasked with doing something unethical could simply say "I'm not doing that, I'd lose my license". By establishing a professional body equivalent to the Bar Association or the General Medical Council, we could throw a giant wrench in the machinery of evil.
My wife has an electrical engineering degree and she had to take ethics courses and pass an exam in them as part of her credentialing process, which in turn shaped her career decisions significantly. I find it troubling that ethics are not considered a very important topic in software development or indeed many spheres of business activity.
It's not that I expect people to necessarily share my opinions; what distresses me is that many arguments I encounter from contrary positions are so utterly shallow that you can tell the person hasn't really thought about such issues very much. Positivism has a great deal to answer for.