Lazy programmer fallacy
There is, among project managers, a thinking that programmers are lazy. Programmers—they say—don't want to work; they prefer playing games or just doing nothing at all.
This is all but truth. Actually, many programmers enjoy programming. They have chosen this field because they enjoy challenge, and because they enjoy solving problems through code. For them, a day spent writing code and being productive is a day well spent.
However, it is not unusual to see programmers not doing exactly that. There are three situations which lead to that.
The first one is that the programmer is not an actual programmer, but rather a guy who have chosen this career by mistake or because he had no idea what else to chose. They come to their job with no enjoyment whatsoever, and do that only to get their money at the end of the month. If they could do something else, they would. If you have this type of persons at your company, you should review your hiring processes, because spotting profiles such as this is extremely easy, and if you are unable to do such basic things, you shouldn't hire in the first place.
The second one is that the programmer is temporarily not feeling well. There can be life events which make everything irrelevant, especially the project the programmer is working on; there are events which make it difficult to focus, difficult to solve problems, difficult to remain in the same chair eight hours per day. It can happen to everyone, and if happens to a programmer you hire, you should spot it, and give your help.
The third one, finally, is that many projects are not about programming at all. In other words, there is no real technical challenge. For programmers, those projects are literally exhausting. Since they can't do the actual work, they spend most of the time wondering what they are doing here, why can't they seek another job, and how can they make it look like they are working in the first place. All those tasks take a great deal of effort, much more than the actual programming. Indeed, an average programmer would prefer spending time programming, rather than trying to figure out how to solve a communication issue with another team which prevents him from using their API, or how to develop a feature without introducing a ton of bugs like he did the other time, while management told there would be no money spent on testing or refactoring.
For a manager or a lead developer, claiming that programmers are lazy is tempting, because it frees them from a feeling that they didn't do their own job correctly. After all, it belongs to them to build around a programmer the environment he needs in order to be efficient: it's up to them to deal with terrible working conditions, it's up to them to explain to the upper management that technical debt, if kept unsolved, would only grow, etc. Nevertheless, it's still their fault if a team is not performing as expected.
When your expectations are unmet, don't believe that this is the fault of lazy programmers. Start by checking what could make their life difficult, what could force them to do nothing instead of doing what they like the most. Chances are, you'll find the culprit much faster. Programmers are lazy in only one sense: they don't like boring, manual and tedious things which distract them from programming.