These processes are inconsistent. The company can be picky but so can the candidate if they are good. More often than not, companies are approaching the good software engineers to work for them and not the other way around.<p>You end up with this bizarre recruiting process, which I have seen many times, where some company approaches me about working for them because I am one of the best and most experienced in my field, and once I agree to talk to them they treat me like some idiot developer who rolled in off the street. The idea that they would waste a bunch of my time "challenging" me, paid or not, is just bizarre.<p>I can see it for developers with little experience. But no sane person wants to build a team with nothing but inexperienced developers which means you need to learn how to recruit highly skilled software engineers. The outlined process is a recipe for annoying them.