This is to catalog reasons why technicians may be biased in their assessments of technologies and techniques. It's not an accusation, but merely a catalog of potential influences. These may be both conscious and unconscious. * JobSecurity - We want the customer to have to keep coming back to us. This may include techniques such as: ** Convoluted or confusing internal construction: *** Excessively "advanced" or obscure technique for the job at hand such that follow-on maintainers probably won't know it. *** Poor design, such as partitioning that has no documented or easily-determinable rhyme or reason. ** Bugs ** GoldPlating - Run up the time bill and/or complicate the system with extra features not explicitly requested, increasing the maintenance costs. ** Misaligned goals - Example: focus on machine performance/speed over code maintainability even though customer never stated such a preference. * Tool familiarity - We want others to use our favorite tools or techniques so that we are better able to hop in and be immediately helpful/useful. This may push us to view our preferred approaches as "better", and promote them as such. * High Barriers - We spent the effort to climb a high barrier, so expect other technicians to have to climb the same or similar barrier to be granted the "right" to participate or replace us. Example: "I had to figure out this code base without comments, so you should also, and I forbid you to add comments." * More to come...