The interesting thing about this project is how the incentives align. The premise requires the view that donating to charity is a bad thing. Or conversely, writing build failing code is a good thing. Otherwise --if donating and buildable code are good -- there is no self reinforcing cycle. The system architecture is closed...a finite pie if you will. Successful builds and charitable donations have a reciprocal relationship. An increase in one comes at the expense of the other. A win-win system architecture would have a positive correlation between charitable donations and successful builds. The charities and the developer would both benefit or suffer together. If both successful builds and charitable donations are good, the system architecture encourages the Shirky Principle https://en.wikipedia.org/wiki/Clay_Shirky#Shirky_principle
Neither of your requirements are true in the least. It’s a great idea because he’s penalizing himself for failed builds in a really fun way, with no waste because it’s going to a good purpose. It’s called “win-win” and it’s a good thing.
OP and yourself are perhaps engaging in what could be termed as "semantic trolling"
Fortunately it isn't working because as others pointed out, "penalize himself" and "donate to charity" concepts aren't directly tied together. Where the donation actually goes is immaterial, so it's not possible to argue that "punish himself" implies "donate to charity" is punishment.
But surely 'losing money' to a bad cause would be an even better punishment. Is the punishment supposed to discourage breaking builds? Are the 'warm fuzzy feelings' (or the actual benefits of the relevant charity!) that causing a charitable donation to occur being properly accounted for in deciding whether this is a good idea?
Punishing himself is the losing money aspect. It doesn't matter where it goes technically for it to be a punishment. His goal is to not lose money.
But to make it worthwhile (aka the reward part of the punishment), the donations are directed to charity since they need to go somewhere. So that's a small reward built into the punishment.
It's better than just throwing away money after a failed build. But a true win-win strategy is donating to charity unconditionally, and not wasting time punishing yourself for failed builds in an elaborate way ;).
You are advocating perfection while op is making the best out of the dealt cards. We need both approaches as a society, but one should not nag the other.
In reality I was just nitpicking. Doing the win-win strategy I described does require more willpower, and I understand that one employs tricks like these to avoid using willpower.
Incidentally, I somewhat envy people who are capable to pull such strategy off. It requires some amount of suspension of disbelief, forgetting for a moment that you're the game master and playing the game by the book way past the point it's become uncomfortable. I don't have that. I tried many times, but my mind just refuses to participate in self-trickery.
> penalizing himself for failed builds in a really fun way
That doesn't make sense. Penalties aren't fun. Building software isn't a game (generally).
And there sure seems like there's a real possibility of wasteful behavior, e.g. someone 'spamming' the build system to effect a large overall donation.
I would go one step further and pick an amount that I want to donate and then each fail action moves a unit of money from the "good" to "bad" bucket. ie start with $100 and each failed build puts $1 into the Big Endian / Kodos / Republican and each successful build the dollar goes into the Little Endian / Krang / Democrat charity bucket.
Maybe view it as art that assigns meaning to an abstraction. A failing build is pretty obscure to most people, but giving to charity makes sense.
As a programmer I can sympathize with wanting to get my head out of the clouds once in a while. Sure, my customers use my software, but my internal build processes are invisible to them.
In this system there is always somthing to stay positive about. Yay i wrote code that built, or yay i donated to a cause i believe in. I think everyone who is talking about incentives are over thinking it
Donating money is something that has a short term sting but feels good in the long term. That short term sting gives the immediate feedback and the long term benefit means that the user will keep the system on. If my failed builds donated to Trump 2020 I wouldn’t keep the system on.
It would make more sense for build failures to donate to a cause that the user opposes. Perhaps you oppose the NRA, or the ACLU, or a certain political party. That ought to provide a strong disincentive.
If there's a separate incentive to keep the system on, then it doesn't function as a disincentive to cause build failures. If you're worried about keeping yourself honest (i.e. not turning the system off), then there could be an escrow service where you prepay and can't get that money back. After every build failure, the escrow contributes a small amount to the "bad" charity, then at the end of the year, the remaining funds get contributed to a "good" charity.