Over the past six months, most of the Sr. Developers and/or long-time domain experts were either fired or left. I left of my own volition for the reasons listed below.
COMPENSATION RELATED
-- Pay is generally below market average
-- No automatic raises - you most likely will have to ask
-- No cash bonuses
-- Stock options available, but of unknown value
WORK ENVIRONMENT
-- Noisy, open office plan
-- Little personal space and no privacy
-- No dividers between desks
-- Devs don't have offices and sit in a noisy part of the office, near the kitchen
-- Way too much light flooding in through full floor-to-ceiling windows - causes glare on monitors
-- Often too cold in the office and the A/C blows down onto the desks
-- Only one company-provided large monitor for developers. Buy your own if you want two.
-- Chairs are cheap, not the most comfortable
JOB-SPECIFIC
-- If you try to please management you will have a poor work/life balance
-- Under-powered infrastructure causes development and QA delays
-- Inexperienced management optimizes for compute cost over developer time (penny-wise and pound-foolish)
-- Inexperienced, inflexible architect designs overly complicated services which require much more development and maintenance than need be
-- Product requirements are, in large part, undocumented, resulting in much refactoring in the final weeks before release - this, in turn, results in developer frustration and loss of confidence in the product organization
-- Way too many manual, unautomated tasks
CULTURE RELATED
-- Almost no on-boarding for new devs
-- Not enough mentoring for new devs
-- Virtually no skills training, just code, code, code
-- Not enough offsite team play
-- Immature employee recognition program akin to participation trophies, but only for those whose work is visible and understandable to others
-- Inflexible working hours
-- Remote work frowned upon, yet management has added several overseas dev contractors
-- Don't come in late or you'll be talked to
MANAGEMENT RELATED
-- Too little appreciation
-- Too little respect
-- Too little trust
-- Management plays favorites with employees, and also plays least favorites (the latter usually being those brave enough to give valuable constructive criticism)
-- Employee suggestions are heard, but rarely acted upon
-- Little improvement to work environment despite consistent employee requests
-- Frequent top-down decision making after little consultation with team
-- Inexperienced, inflexible management
I believe things can be turned around, but only if they bring on experienced management.