Cons: The biggest con: for the most part, the culture is unfriendly and people are stressed. There is virtually no small talk or socializing. In fact, I have actually witnessed management yelling at employees in the office, in front of everyone.
You are given an employee review twice a year. Here, you are asked to rate your performance and think about what you could be doing better. Management really likes to assign numbers to employees (for example, how many items developers fix, how many items are returned, how many calls support takes, average waiting time per call, number of calls sent to voicemail, etc.).
The employee agreement specifies that you can’t work for a competitor (read: work in a similar industry) for at least two years after you quit.
As a developer, you’re asked to do a lot: IT support, answer questions about the product, perform data conversions, research new technologies, etc. As a result, the job can be stressful at times.
Bonuses are vested for one year, so you have to pay those back if you quit.
When you do quit, management conducts an exit interview where they try to convince you (read: pressure you) to stay. You run a gauntlet of talks: the development manager, HR, VP, etc.
Software developers seem to be treated a lot better than customer service representatives.
They primarily recruit from college fairs, so the workforce is primarily young. Not a lot of older people here. It's common for software developers to put in unpaid overtime, as working from home is encouraged with a wink and a nod.
As far as training goes, you will be expected to learn new technologies on your own.
The CEO has a bit of a temper, but he rarely deals with the rank-and-file. Also, there’s a certain amount of nepotism in the company, so be prepared for that.