Pros
The compensation and benefits are competitive and there's lots of room to grow. The company is doing well and the stock price keeps going up. The company recognizes it needs to change the way it does software development and it's trying new things.
Cons
Corporate culture is toxic. Full-time associates and contractors on the same team are regularly pitted against one another when they should be working together. Management talks about developing a sense of collective ownership of the product, but in the next breath says that contractors are expendable. As such, contractors tend to show little initiative, instead waiting around to be told what to do. Corporate IT is in the middle of an Agile adoption but team leads and middle management still act like dictators. If you're truly Agile, you give the team a goal and let them come up with a solution that meets that goal. Instead, the team leads treat everyone else like children and tell them exactly what to do, leaving no room for negotiation. There's virtually no work-life balance. All software developers are forced into pair programming on dedicated pairing stations rather than on their issued laptops. If you need to work remotely for any reason, don't expect to get any work done. Management won't give you licenses to install the software on your laptop. The company hired a bunch of consultants from Pivotal Software to tell them how to do software development. And whatever Pivotal says is what goes. That includes using all of Pivotal's software like Pivotal Tracker and Pivotal Cloud Foundry, which aren't necessarily bad products, but you're forced to use them even when there might be better alternatives. Home Depot is in the process of changing the way it does software development. But that change, for better or worse, is going to take years. In the meantime, you have to work in this weird hybrid environment where everyone's trying to apply Agile development principles to legacy applications that are poorly designed, difficult to maintain, and have virtually no test coverage. So even if you manage to write a few unit tests for your bug fix, you're still reliant on manual QA to verify it because no one knows how the app works but them.