25 Signs You’re in an Unhealthy Enterprise Software Team
Consider this an “anti-Joel Test”:
- Time taken to get code into production is measured on days, weeks or months, not minutes or hours
- You worry about modifying code because you don’t want to break things
- Changes to production get backed up and get deployed as big-bang releases (AKA Merge Day)
- You have lots of stories in flight at the same time, most of which are blocked on other people
- Code is manually promoted from dev or staging to production environments
- There are manual tests that could be automated
- You don’t “clean up code as you go”, because it’s too painful trying to get changes approved that aren’t directly related to your current work
- Configuration is not versioned
- Stories in your issue tracker / project management software are not kept up-to-date
- There are non-trivial pieces of work that are not in your issue tracker / project management software
- On-boarding new developers takes longer than a day
- Your codebase has tests that are commented out or marked pending
- You rely on one person on the team to do certain tasks
- It’s hard to know exactly which versions of your codebase dev/staging/prod are actually running
- You have feature branches that are more than a week old
- There are tests that you can’t run on your local machine
- You never get to talk to customers
- Your staging or prod deployments are snowflaked AKA manual and unrepeatable
- A lot of your work is about how your app is run (ie ops, packaging etc) rather than writing the app code itself
- You don’t have an automated way of discovering security vulnerabilities in your app dependencies or container images
- There are no retros or opportunities for team self-reflection
- You often work late to meet artificial deadlines
- You are often blocked from doing your work by network proxies and firewalls
- You rarely tell your teammates when you disagree with them
- You can’t ask someone for help directly, you have to go through your manager, who asks their manager.