The short list based on excellent Thomas Sundberg presentation.
Divide the team into separate divisions - analysis, architecture, development, operations, test, etc.
Make the communication as hard as possible, different locations, different managers, different cost centres etc.
Assign developer to multiple projects managed by different people
Developers will be able to set priorities by themselves.
Context switching is cheap.
Everything should be written
You can always use written document as a evidence, even if it is not valid anymore.
Don’t allow to communicate development team with customers / end user
Developers are only for writing code based on given specifications.
Separate Devs and Ops
Devs should not be allowed into the production system, they can break something.
Ops do not have to know anything about systems they care.
No courses, no books, no conferences and learn only on personal time.
If you train them, they leave.
Number of fixes per day.
Less than 100% test code coverage is a failure.
100% Javadoc over descriptive naming, etc.
Resources can be easily replaced, it does not matter that valuable employees have left.
We easily find next resource.
Schedule lots of them, demand everyone to be present, cancel them late or don’t show up or be unprepared.
Always prepare meeting minutes.
The most experienced person does it better than whole team.
Don’t allow self-organization, only command and control!
Don’t invest in tools, no large screens.
The fastest laptops for managers (powerpoint slides are very heavy).
Make it extremely difficult to work from home.
Avoid it, that’s risky.
Always manual, no more than twice a year.
Different scenarios and teams for DEV, UAT and PROD.
Who cares, it works on production.
Check-in new changes if the build is red.
Single tool/library/framework/platform for all.
Only “ivory tower” architects, at least 20.
Load and performance tests on the end.
Only manual functional tests.