Well, the really tragic thing was that I started working in nonprofit web design specifically because I wanted to work for ethical, value-driven clients. And this was true much of the time.
But the agency I was working for was so busy, and we were cranking out code at such a rate, that after a while I stopped thinking about exactly who the clients were. We did a lot of work for religious and political organisations, gambling industry lobbying groups etc. "Charities" in the loosest sense.
Before long it became clear that I'd used my talents to help organisations whose values were directly against mine (I'm a strong supporter of LGBT rights for example, on which the Catholic church has a poor record.)
The main things I learned as a junior dev were:
* Non-profit clients aren't necessarily more ethical than business clients, it's naive to assume this is the case
* Be careful when taking on a high volume of client projects. It's hard to track exactly what their values are, and you might accidentally end up enriching an organisation which hates your guts
* Track your personal values carefully and regularly check if you're living up to them at work