some funny stuffs before we continue...
Management anti-patterns
- Absentee Manager: Any situation in which the manager is invisible for long periods of time.
- All You Have Is A Hammer: One-dimensional management where the same technique is used on all subordinates.
- Cage Match Negotiator: When a manager uses a "victory at any cost" approach to management.
- Doppelganger: A manager or colleague who can be nice and easy to work with one moment, and then vicious and unreasonable the next.
- Fruitless Hoops: The manager who requires endless (often meaningless) data before making a decision.
- Golden Child: When special responsibility, opportunity, recognition, or reward is given to a team member based on personal relationships or contrary to the person’s actual performance.
- Headless Chicken: The manager who is always in a panic-stricken, fire-fighting mode.
- Leader Not Manager: The manager who is a good leader, but lacks in their administrative and managerial ability.
- Managerial Cloning: The hiring and mentoring of managers to all act and work the same: identically to their bosses.
- Manager Not Leader: The manager who is proficient at their administrative and managerial duties, but lacks leadership ability.
- Metric Abuse: The malicious or incompetent use of metrics and measurement.
- Mr. Nice Guy: The manager that strives to be everyone’s friend.
- Proletariat Hero: The “everyman” worker who is held up as the ideal, but is really just a prop for management’s increasing demands and lengthening production targets.
- Rising Upstart: The potential stars who can’t wait their time and want to forego the requisite time to learn, mature and find their place.
- Spineless Executive: The manager who does not have the courage to confront situations, take the heat for a failure, or protect their subordinates.
- Three-Headed Knight: The indecisive manager.
- Ultimate Weapon: Phenoms that are relied upon so much by their peers or organization that they become the conduit for all things.
- Warm Bodies: The worker who barely meets the minimum expectations of the job and is thusly shunted from project to project, or team to team.
Project management anti-patterns
- Death March: Everyone knows that the project is going to be a disaster - except the CEO. However, the truth remains hidden and the project is artificially kept alive until the Day Zero finally comes ("Big Bang")
- Smoke and mirrors: Demonstrating how unimplemented functions will appear
- Software bloat: Allowing successive versions of a system to demand ever more resources
General design anti-patterns
Object-oriented design anti-patterns
Programming anti-patterns
- Accidental complexity: Introducing unnecessary complexity into a solution
- Action at a distance: Unexpected interaction between widely separated parts of a system
- Accumulate and fire: Setting parameters for subroutines in a collection of global variables
- Blind faith: Lack of checking of (a) the correctness of a bug fix or (b) the result of a subroutine
- Boat anchor: Retaining a part of a system that no longer has any use
- Bug magnet: A block of code so infrequently invoked/tested that it will most likely to fail.
- Busy spin: Consuming CPU while waiting for something to happen, usually by repeated checking instead of proper messaging
- Caching failure: Forgetting to reset an error flag when an error has been corrected
- Cargo cult programming: Using patterns and methods without understanding why
- Checking type instead of interface: Checking that an object has a specific type when only a certain contract is required
- Code momentum: Over-constraining part of a system by repeatedly assuming things about it in other parts
- Coding by exception: Adding new code to handle each special case as it is recognized
- Error hiding: Catching an error message before it can be shown to the user and either showing nothing or showing a meaningless message
- Exception handling: Using a language's error handling system to implement normal program logic
- Full Monty: a software application garnished with the unfortunate combination or mix of too many anti-patterns
- Ghost of VS: Using patterns such as (On Error ... Resume Next) to hide errors. Often blamed on system ghosts or previous employees.
- Hard code: Embedding assumptions about the environment of a system at many points in its implementation
- Lava flow: Retaining undesirable (redundant or low-quality) code because removing it is too expensive or has unpredictable consequences
- Loop-switch sequence: Encoding a set of sequential steps using a loop over a switch statement
- Magic numbers: Including unexplained numbers in algorithms
- Magic strings: Including literal strings in code, for comparisons, as event types etc.
- Packratting: Consuming excess memory by keeping dynamically allocated objects alive for longer than they are needed
- Parallel protectionism: Infrastructure teams that are so adverse to risk that it becomes easier to clone a parallel infrastructure than to convince them to add a trivial attribute to their existing infrastructure
- Programming by Accident: (Or Debugging by Accident) - Resolving program bugs by blindly 'correcting' items, like removing white space or rearranging lines. Instead of spending time researching root causes of bugs, time is wasted trying to fix things blindly.
- Ravioli code: Systems with lots of objects that are loosely connected
- Spaghetti code: Systems whose structure is barely comprehensible, especially because of misuse of code structures
- Superboolean logic: unnecessary comparison or abstraction of boolean arithmetic
- Superthreading: the belief that code will run faster by increasing the number of threads
- Useless exception handling: Inserting conditions to prevent a runtime-exception, but throw it manually if the condition fails. (
if A not null then process(A) else throw null-exception endif)
Methodological anti-patterns
Configuration management anti-patterns
- Dependency hell: Problems with versions of required products
- DLL hell: Problems with versions, availability and multiplication of DLLs, specifically on Microsoft Windows
- JAR hell: Problems with different versions or locations of JAR files, usually caused by a lack of understanding of the classloading model
- Extension conflict: Problems with different extensions to Mac OS attempting to patch the same parts of the operating system
Organizational anti-patterns
- Analysis paralysis: Devoting disproportionate effort to the analysis phase of a project
- Cash cow: A profitable legacy product that often leads to complacency about new products
- Continuous obsolescence: Devoting disproportionate effort to porting a system to new environments
- Cost migration: Transfer of project expenses to a vulnerable department or business partner
- Design by committee: The result of having many contributors to a design, but no unifying vision
- Escalation of commitment: Failing to revoke a decision when it proves wrong
- Creeping featurism: Adding new features to the detriment of the quality of a system
- Hero-Mode: A policy of continuously relying on the heroic efforts of staff in order to meet impossible deadlines, whilst ignoring the long term cost of failing to build in software quality from the outset.
- I told you so: When the ignored warning of an expert proves justified, and this becomes the focus of attention
- Management by numbers: Paying excessive attention to quantitative management criteria, when these are non-essential or cost too much to acquire
- Management by perkele: Army-style management with no tolerance for dissent
- Moral hazard: Insulating a decision-maker from the consequences of his or her decision.
- Mushroom management: Keeping employees uninformed and abused (kept in the dark and fed on manure)
- Scope creep: Allowing the scope of a project to grow without proper control
- Stovepipe: An organisation structure that supports mostly up-down flow of data but inhibits cross organizational communication
- Vendor lock-in: Making a system excessively dependent on an externally supplied component
- Violin string organization: A highly tuned and trimmed organization with no flexibility
No comments:
Post a Comment