There are many negative programmers, and you may be one of them. They can exhibit any of the following characteristics:
They are big on public rants when they find poor code.
They are small on rolling up their sleeves and refactoring/fixing the problem they were ranting about.
They leave personal criticism in comments in the code.
They are argumentative rather than humble when their own code is called into question. Most good developers are keen to hear of alternative approaches.
They concentrate on what is wrong with the project rather than what is right. The negative programmer uses this to spread fear, uncertainty and doubt throughout the office. It is easy to find things wrong with any workplace.
They will often say things can't be done when you ask them, or list five reasons they can't be done now. (If you say something can't be done, you had better have done your homework!).
Despite problems of some kind in the office there are usually one or more of the following to be happy about:
The company is not on the edge of bankruptcy.
The technologies you are using are cool.
There are a plenty of experienced developers to learn from.
You are a senior developer with the chance to mentor.
You are a junior developer with the chance to go up in the organization.
The customer is friendly and great to work with.
The work life balance is important.
If there are things going on that you are not happy about, don't grumble and groan; go and sort it out properly. Make your job into something that works for you too.