1. There is a class of people who will not do algorithmic interviews, who think they are puzzles and not exactly what a programmer does on a day to day basis.
2. There is a class of people who think doing homework assignments makes no sense, especially if you have a full time job and this eats into your evenings.
3. There is another class of programmers who won't work on coding projects because you may potentially be exploited.
For a group of people with highly specialized skills (who get underpaid when compared to lawyers and doctors), we do tend to complain a lot.