Pros
Company culture and values are excellent - people routinely go out of their way to make the customer happy. When I was able to do my job, the problems we were solving were genuinely interesting. Laid back, casual environment at the Home Office. Perks like team builders and associate car purchase discount. The associates in the other departments (e.g. accounting, HR, strategy/marketing, etc.) at the Home Office seemed genuinely happy. I made a lot of good friends at CarMax.
Cons
(These are all related to IT. As I said in the 'pros', the other CarMax departments outside IT seem to be genuinely fantastic, and I would recommend anyone to apply to positions in accounting, marketing/strategy, HR, etc.) IT management is top-down, and managers seem to have little grasp of the technologies being used. The management bureaucracy is multilayered - most teams have two Team Leads, a Manager, a Director, a Vice President, and ultimately the CIO. Although the IT group is around 250 people (small for a Fortune 500), 50 of those people are in management. This is a recipe for complete stagnation, which is what I observed. Management demonstrates little understanding of sunk costs. Senior managers frequently requested that our team use outdated, inefficient technology because "we spent a lot of money on it." IT has a self-imposed budgeting system that makes project management extremely rigid and brittle. Management rejects so many elegant, efficient, and even money-saving solutions because they're "not in the budget." If you don't think of a good idea between October and February, you have to wait a while till the next budgeting season starts. I observed managers budgeting expenses as low as $2000. I guess management does not understand opportunity cost, either. Managers rarely make decisions quickly. Instead, they will schedule months of meetings to discuss usually two or three alternative solutions to some business problem, most involving CarMax spending between $100K and $1M. The contract negotiations take so long that the solution is usually obsolete by the time it's implemented. Further, developers and administrators are given almost no input during the early design process, but are forced into very arbitrary project timelines to finish projects. No one in management does anything technical; managers who do so receive disciplinary action. Let that sink in. The people who have long meetings to buy millions of dollars of technology infrastructure are disciplined for touching a server, command line, database query, or line of code. Instead of doing technical things, managers are supposed to focus on "associate development," even when the associates they manage are technical. Managers are first-class citizens, while the technical staff (developers, administrators, support staff) are commodities. While I was there, over half of the promotions involved managers being promoted to higher management positions, even while their projects continued to exceed budgets and deadlines. Most of the developers who had been there for more than 5 years had let their technical skills atrophy to the point of uselessness. Worse, many of these developers were convinced that their 1990s era solutions (most involving putting everything possible, including logic, into a database) were still relevant and optimal in 2013. One of the few good goals from management was to implement a Service Oriented Architecture, but the lacking developers' skills led to significant internal resistance. Management, for their part, frowns upon sending technical staff to paid training courses; instead, they prefer "lunch 'n' learns." The software development methodology was very poor. The methodology document actually lists "coding" as an optional step in software development. The rest of it is very waterfall-ish, with extra bureaucratic tedium for good measure. "Agile" projects aren't truly Agile, and they are treated as a reward for good developers rather than an approach that results in better software for the customer. The work-life balance in IT is significantly oversold. IT associates are absolutely forbidden from working from home, even though everyone has the technical capability to remote in. Further, all IT associates are required to participate in an on-call rotation. Because the systems are so rife with technical debt, on-call is a very onerous responsibility. Phone calls or urgent tickets between 2 and 5 AM were not uncommon. Similarly, the "Time Away policy," which theoretically allows associates as much time off as they need, is a mirage. IT managers are very explicit that associates can take off 15 days per year, plus six paid holidays (New Years Day, Memorial Day, Independence Day, Labor Day, Thanksgiving Day, and Christmas Day). Typically, the company is closed on Christmas Eve, but we were expected to report bright and early the day after Thanksgiving. In practice, the Time Away policy puts your leave into your manager's hands, and you don't get to bank it year to year or cash it in when you leave the company.