Globals are like any other construct that exists in programming. Used well, they are excellent. Used badly, they are the spawn of satan.
I worked for a large company that refused to let developers use global variables, at the time we had 256K of rom for the entire code and 512K of ram.
We would develop a product, ship it, archive the source code, then start on the next product.
Just before shiping we would always have the problem that we were a few K over budget on the rom and there would be a mad panic to optimise everything.
Once I added a single global variable and saved 20K of rom.
For me it's not an issue of should I use globals or not, I will if I need to. It's more a case of do you know enough about the system to know when using a global is safe and an improvement.