it’s generally better to donate $X than it is to volunteer $X worth of your time
In what sense is this better?
Consider a diehard Democrat volunteering for the Obama campaign. He’s perfectly willing to spend six hours knocking on doors (for free), because he enjoys spreading awareness and bonding with his fellow Democrats. But to hire someone to do it (for minimum wage), he’d have to donate ~$50, which he might not be willing to part with. So in this case it’s much better for the individual to volunteer than donate. It’s also better for the Obama campaign, because they’ll get more mileage out of someone who did the work for fun than someone who was primarily motivated by the cash.
The only person who is worse off is the hypothetical paid person who Obama would have hired instead. But the volunteer only cares about himself and Obama, not some random person who needs a job.
CS grad student here. Some mistakes I made were
Not documenting code.
Naming figures/datafiles poorly, so that you have no idea what they are in two weeks. It’s best to have an automated way of labeling files if you’ll be creating a lot of them.
Storing data in an inefficient way (very bad if you’re generating large amounts of data).
Not using version control.
Diving right into implementing an algorithm without first thinking about whether that’s the best way to solve the problem.
Being intimidated by tasks that looked difficult (they were rarely as hard as I thought they would be).