Pros
Decent work/life balance. Excellent technology stack: SOA, JMS, Spring. Automated deployment/provisioning system means no late-night manual deployment processess. Dev->Test->Production turnaround time is less than three days. Pay was pretty good for someone coming out of academia in 2012.
Cons
UP is a transportation company. You will be made very aware of this fact, repeatedly. IT is a second-class citizen; if you're dealing with an internal customer that's involved in the process of moving trains around, you're expected to do exactly what they want, even if they can't effectively communicate what that actually is. The needs of the business may shift while you're being hired and while you're in training. I was originally hired for a specialized role, but when I came out of training, I was tasked with mundane intern-level work...for 2.5 years. This was very detrimental to my career. Compensation was somewhat arbitrary. An MSCS with 4.5 years of experience can make 4-5% less than a BSCS with 3 years of experience, if the BSCS has been assigned to more impressive or important tasks. It's generally accepted that the newer you are, the more you get paid. Team norms and management styles are extremely inconsistent. Some teams are extremely Agile, others are extremely ad-hoc. Emphasis on refactoring and code quality varies wildly between individual teams. Backstabbing is rewarded. You can become a tech lead in two years and get a promotion every year if you're willing to take credit for others' ideas and blame others for your mistakes. Attempting to improve processes is punished. My decision to leave was finalized when I questioned the fact that we are permitted to close our own QA tickets without any oversight, and was told "you're paid too much to have a babysitter."