www.wikidata.de-de.nina.az
Ein Anti Pattern aus dem Englischen ubersetzt etwa Antimuster ist ein Oberbegriff fur Verhaltensmuster die speziell in der Softwareentwicklung anzutreffen und zumeist auch allgemein auf Organisationen ubertragbar sind Als Anti Pattern werden Losungsansatze bezeichnet die ungunstig oder schadlich fur den Erfolg eines Projektes oder einer Organisation sind Sie bilden das Gegenstuck zu Pattern englisch Muster welche gute und bewahrte Problemlosungsansatze darstellen Das Konzept von Mustern wurde vor allem durch die Entwurfsmuster aus dem Buch von 1994 Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Originaltitel Design Patterns Elements of Reusable Object Oriented Software bekannt Diese umfassen jeweils eine Beschreibung einer prototypischen Problemsituation samt Losungsvorschlag Nachdem Muster in der Softwareentwicklung zunehmend erfolgreich eingesetzt wurden wurden auch Negativbeispiele thematisiert um wiederkehrende Fehler zu identifizieren zu dokumentieren und Massnahmen zur Behebung aufzuzeigen So wie sich Muster nicht nur auf den Entwurf von Software beschranken und es auch beispielsweise Kataloge fur Analysemuster Architekturmuster oder Organisationsmuster gibt beschranken sich auch Anti Pattern nicht nur auf den Quelltext und die Softwarearchitektur sondern haben haufig Projektmanagement und Unternehmensprozesse zum Gegenstand In der Regel entstehen Anti Pattern durch mangelhafte Erfahrung oder fehlende Qualifikation Zu beobachten ist auch der bewusste Einsatz von Anti Pattern um zum eigenen Vorteil einen bestimmten vom eigentlichen Projektziel abweichenden Zweck zu erreichen Inhaltsverzeichnis 1 Kategorisierung 1 1 Projektmanagement Anti Pattern 1 1 1 Blendwerk 1 1 2 Aufgeblahte Software 1 1 3 Feature creep 1 1 4 Scope creep 1 1 5 Brooks sches Gesetz 1 1 6 Death Sprint 1 1 7 Death March 1 2 Architektur bzw Entwurfs Anti Pattern 1 2 1 Big Ball of Mud 1 2 2 Gasfabrik 1 2 3 Gottobjekt 1 2 4 Innere Plattform Effekt 1 2 5 Spaghetticode 1 2 6 Sumo Hochzeit 1 2 7 Integrationsdatenbank 1 3 Programmierungs Anti Pattern 1 3 1 Doppelt uberprufte Sperrung 1 3 2 Zwiebel 1 3 3 Copy and Paste 1 3 4 Lavafluss 1 3 5 Magische Werte 1 3 6 Reservierte Worter 1 3 7 Unbeabsichtigte Komplexitat 1 4 Organisations Management bzw Prozess Anti Pattern 1 4 1 Wunderwaffe 1 4 2 Das Rad neu erfinden 1 4 3 Das quadratische Rad neu erfinden 1 4 4 Body ballooning 1 4 5 Empire building 1 4 6 Warme Leiche 1 4 7 Single head of knowledge 1 4 8 Mushroom management 1 4 9 Noch ein Meeting mehr wird es losen 1 4 10 Net Negative Producing Programmer 1 4 11 Management nach Zahlen 1 4 12 Angst vor Erfolg 1 4 13 Falscher System Architekt 1 4 14 Crocodile Management 1 4 15 Programmer Interrupt 1 4 16 Weitere 1 5 Meta Muster 1 5 1 Programmer Experience Clumping 1 5 2 Zersetzung 2 Literatur 3 Siehe auch 4 Weblinks 5 EinzelnachweiseKategorisierung BearbeitenMittlerweile werden die Vorkommen von Anti Pattern immer feiner unterschieden Sie fachern sich auf von der reinen Software Programmierung hier spricht man auch von Code Smells die bei Existenz und Identifikation durch Refactorings entfernt werden konnen gehen weiter zu Architektur und Design wirken im Projektmanagement und in Unternehmensprozessen und organisation sowie im Management Daruber hinaus konnen in der Praxis haufiger sogenannte Meta Patterns identifiziert werden Diese vereinen einzelne Muster zu neuen abstrakteren Mustern oder fuhren weitere Dimensionen oder abstraktere Kategorisierungen ein Projektmanagement Anti Pattern Bearbeiten Blendwerk Bearbeiten Das Blendwerk englisch Smoke and mirrors bezeichnet nicht fertige Funktionen welche als fertig vorgetauscht werden Aufgeblahte Software Bearbeiten Hauptartikel Bloatware Aufgeblahte Software bezeichnet Software die mit unnotigen Zusatzfunktionen oder Ressourcenverschwendung aufgeblaht wird und damit den eigentlichen Anwendungszweck kaum oder gar nicht verbessert Feature creep Bearbeiten Feature creep Einschleichen von Funktionalitat bezeichnet es wenn der Umfang der zu entwickelnden Funktionalitat in einem Projektplan festgehalten wird diese aber dauernd erweitert wird Der Kunde versucht nach der Erstellung des Projektplanes weitere Funktionalitat in der Version mit unterzubringen Dies fuhrt zu Problemen wenn die in Arbeit befindliche Version nicht das notwendige Design aufweist Termine nicht eingehalten werden konnen oder die realen Kosten uber die planmassigen Kosten wachsen Bei schwergewichtigen Prozessen ist dies sehr gefahrlich Bei leichtgewichtigen Prozessen wie Extreme Programming XP mussen bei allen Beteiligten die Konsequenzen klar sein Ein systematisches Anforderungsmanagement und Anderungsmanagement sind obligatorisch Gewisse Anderungen am Projektplan wahrend der Entwicklung sind in grosseren Projekten schwer vermeidbar denn die Spezifikationen bis ins letzte Detail auszuarbeiten ist meist noch aufwendiger als etwas Reserve einzuplanen Auch konnen Anforderungen erst wahrend der Entwicklung entdeckt werden Extreme boswillige und grob fahrlassige Anwendung dieses Musters kann dadurch motiviert sein dass der Auftraggeber der immer neue Funktionalitat fordert das Produkt boykottieren mochte und dessen Abschluss zu verhindern sucht oder er hat bei der Planung bewusst eigentlich benotigte Funktionalitat unterschlagen um eine gunstigere Offerte zu erhalten Durch ein Wortspiel dessen Inhalt die Wandlung von Creeping Feature zu Feeping Creature umfasst wird der Umstand ausgedruckt dass eine Verselbststandigung von Anforderungen und Implementierungen unnotiger oder nicht in das Gesamtkonzept passender Leistungsmerkmale stattgefunden hat Scope creep Bearbeiten Der Scope creep Einschleichen weiterer Anwendungsbereiche ist ahnlich dem Feature creep jedoch nicht auf Funktionalitat bezogen sondern auf den Anwendungsbereich Auch hier zeichnet sich der Auftraggeber dadurch aus dass er geschickt und versteckt den Umfang der Software nachtraglich erweitern mochte ohne dass er dies explizit zugibt Beispiel nicht diskutierte Anwendungsbereiche sind plotzlich sehr wichtig bzw das Fehlen eines Bereiches wird sogar als Fehler dargestellt der dringendst behoben werden muss Brooks sches Gesetz Bearbeiten Das Brooks sche Gesetz besagt dass ein hinter seinem Zeitplan herhinkendes Projekt langer benotigt wenn neue Mitarbeiter eingestellt werden weil die neuen Mitarbeiter Zeit benotigen um sich einzuarbeiten und sie dabei die etablierten Kollegen abbremsen Adding manpower to a late software project makes it later Mitarbeiter zu einem verspateten Softwareprojekt hinzuzufugen verzogert das Projekt nur noch weiter Frederick Brooks 1 Death Sprint Bearbeiten Bei einem Death Sprint Uberhitzter Projektplan wird Software iterativ bereitgestellt Die Bereitstellung erfolgt hierbei in einer viel zu kurzen Zeitspanne Nach aussen sieht das Projekt zunachst sehr erfolgreich aus da immer wieder neue Versionen mit neuen Eigenschaften abgeschlossen werden Allerdings leidet die Qualitat des Produktes sowohl nach aussen sichtbar wie auch technisch was allerdings nur der Entwickler erkennt Die Qualitat nimmt mit jeder erfolgreichen neuen Iteration ab Der Death Sprint ist das Gegenstuck zum Death March Death March Bearbeiten Ein Death March Todesmarsch gelegentlich auch Himmelfahrtskommando ist das Gegenstuck zu einem Death Sprint Uberhitzten Projektplan s o Ein Todesmarschprojekt zieht sich ewig hin In einem optimalen Fall werden zwar Vorabversionen bereitgestellt welche aber von schlechter Qualitat sind Der Misserfolg ist objektiv sichtbar Es konnen keine Meilensteine gehalten werden bzw es existieren gar keine Schlimmstenfalls kann eine Konsequenz daraus sein dass das Projekt kein Projekt mehr ist sondern nur eine zeitlich nicht abgeschlossene Aneinanderreihung von Aktivitaten Es fehlen konkrete Zusagen fur Termine und Lieferung von Eigenschaften Ein Todesmarschprojekt kann auch bewusst in Kauf genommen werden um von Defiziten in der Organisation abzulenken und Entwicklungen zu verschleppen d h so lange an etwas zu entwickeln bis eine nicht genau spezifizierte Eigenschaft in irgendeiner Form subjektiv funktioniert Wenn sowohl Anforderungsmanagement als auch Anderungsmanagement nicht vorhanden sind und das Projekt kein Projekt mehr ist so schlenkert das Entwicklungsprodukt orientierungslos umher und seine Qualitat nimmt stetig ab Ein Todesmarschprojekt kann auch mit einem Uberhitzten Projektplan s o kombiniert werden um nach aussen von Planungslosigkeit und Defiziten bei Organisation und Technik abzulenken Es wird dann Funktionalitat als neu dargestellt die bereits lange existiert oder es existiert keine Kontrollinstanz die Notwendigkeit Relevanz Form Korrektheit und Wichtigkeit von bereitgestellter Funktionalitat bewertet Beispiel Neuanforderungen von gestern sind nicht beinhalten die Bugs von morgen Ein Todesmarschprojekt kommt haufig vor wenn es keine Stakeholder gibt die Interesse an dem Produkt haben oder wenn der in das Produkt einfliessende Aufwand oder sogar das ganze Produkt letztendlich keine Bedeutung Wichtigkeit hat In diesem Fall beschaftigt sich die Unternehmung oder die Entwicklungsabteilung nicht selten mit sich selbst Architektur bzw Entwurfs Anti Pattern Bearbeiten Big Ball of Mud Bearbeiten Hauptartikel Big Ball of Mud Software die keine erkennbare Softwarearchitektur besitzt wird als Big Ball of Mud Grosser Matschklumpen bezeichnet Gasfabrik Bearbeiten Als Gasfabrik englisch Gas factory werden abwertend unnotig komplexe Systementwurfe fur relativ simple Probleme bezeichnet 2 Gottobjekt Bearbeiten Hauptartikel God object Die Begriffe Gottobjekt englisch god object Gottklasse God class und Blob bezeichnen ein Objekt das zu viel weiss bzw macht Die Aufteilung nach Verantwortlichkeiten Kapselung und die Einhaltung von Entwurfsmustern helfen diesem Muster zu begegnen Innere Plattform Effekt Bearbeiten Der Innere Plattform Effekt englisch Inner platform effect tritt auf wenn ein System derartig weitreichende Konfigurationsmoglichkeiten besitzt dass es letztlich zu einer schwachen Kopie der Plattform wird mittels derer es gebaut wurde Ein Beispiel sind Datenmodelle die auf konkrete anwendungsbezogene Datenbanktabellen verzichten und stattdessen mittels allgemeiner Tabellen eine eigene Verwaltungsschicht fur die Datenstruktur implementieren mit dem eigentlichen Ziel die Flexibilitat zu erhohen Derartige Systeme sind allerdings typischerweise schwer zu beherrschen und leiden haufig unter zusatzlichen Performanceproblemen Spaghetticode Bearbeiten Hauptartikel Spaghetticode Spaghetticode ist eine sehr kompakte Systemstruktur die von Sprungbefehlen gepragt ist deren Kontrollfluss einem Topf Spaghetti ahnelt Der Code ahnelt einem monolithischen Block und weist eine besonders schlechte Wartbarkeit und Wiederverwendbarkeit auf Sumo Hochzeit Bearbeiten Als Sumo Hochzeit englisch Sumo Marriage bezeichnet man es wenn ein Fat Client unnaturlich stark abhangig von der Datenbank ist In der Datenbank ist hierbei sehr viel Logik in Form der datenbankeigenen Programmiersprache positioniert Beispielsweise in Oracle mit der Programmiersprache PL SQL Die ganze Architektur ist dadurch sehr unflexibel Soll die Anwendung zu einer Internet Anwendung migriert oder die Datenbank gewechselt werden so mussen auf beiden Schichten Client und Datenhaltung viele Bereiche neu entwickelt werden Die Systeme sind nicht entkoppelt Integrationsdatenbank Bearbeiten Eine Integrationsdatenbank englisch integration database ist eine Datenbank welche von mehreren Anwendungen direkt verwendet wird um die Synchronisierung zwischen den Anwendungen sicherzustellen Integration databases don t do it Seriously Not even with views Not even with stored procedures Michael T Nygard Release It 3 Die Alternative zu einer Integrationsdatenbank ist eine Shared Database Hierbei handelt es sich um eine Datenbank auf welche ein einziger Webservice zugreift Der Webservice stellt die Funktionalitat der Datenbank in Form einer REST oder SOAP Schnittstelle bereit und kann von verschiedenen Anwendungen verwendet werden Take it up a level and wrap a web service around the database Then make the web service redundant and accessed through a virtual IP Build a test harness to verify what happens when the web service is down That s an enterprise integration technology Reaching into another system s database is just icky Michael T Nygard Release It 3 Programmierungs Anti Pattern Bearbeiten Doppelt uberprufte Sperrung Bearbeiten Hauptartikel Doppelt uberprufte Sperrung Unerfahrene Entwickler implementieren oft eine als fehlerhaft anzusehende doppelt uberprufte Sperrung englisch double checked locking Dies gilt als Antimuster Zwiebel Bearbeiten Als Zwiebel englisch Onion bezeichnet man Programmcode bei dem neue Funktionalitat um oder uber die alte gelegt wird Haufig entstehen Zwiebeln wenn ein Entwickler ein Programm erweitern soll das er nicht geschrieben hat Der Entwickler mochte oder kann die bereits existente Losung nicht komplett verstehen und setzt seine neue Losung einfach druber Dies fuhrt mit einer Vielzahl von Versionen und unterschiedlichen Entwicklern uber die Jahre zu einem Zwiebel System Copy and Paste Bearbeiten Hauptartikel Quelltextklon Programmierung mittels Kopieren und Einfugen englisch Copy And Paste Programming bezeichnet es wenn der Programmierer den Code nicht neu entwickelt sondern sich bereits existenter Quelltexte bedient aus denen er Passagen herauskopiert Die Gefahr ist hierbei sehr gross dass er Fehler mitkopiert oder die Kopie fur den neuen Bereich nicht optimal einsatzbereit ist Der Entwickler reflektiert weniger uber sein Programm als wenn er jede Zeile selbst entwickeln wurde Hierbei handelt es sich um ein fehleranfalliges Vorgehen wenn der Entwickler nicht weiss was er eigentlich macht Die Wartbarkeit des Codes wird reduziert wenn der fast gleiche Programmcode an vielen Stellen vorkommt Anstatt zu kopieren sollte eine gemeinsame Funktion ins Auge gefasst werden Lavafluss Bearbeiten Ein Lavafluss englisch Lava flow oder Dead Code beschreibt den Umstand dass in einer Anwendung immer mehr toter Quelltext herumliegt Dieser wird nicht mehr genutzt Statt ihn zu loschen werden im Programm immer mehr Verzweigungen eingebaut die um den besagten Quelltext herumlaufen oder auf ihm aufbauen Redundanter Code ist der Uberbegriff zu totem Code Er enthalt neben dem toten Code englisch dead code ausgefuhrter Code dessen Ergebnis nie verwendet wird 4 auch unerreichbaren Code englisch unreachable code das ist Code der aufgrund der Ablaufsteuerung des gesamten Programms in keinem moglichen Programmablauf erreicht und darum nie ausgefuhrt werden kann Oft wird die Bezeichnung toter Code auch synonym mit redundantem Code verwendet Magische Werte Bearbeiten Bei Magischen Werten englisch Magic Values handelt es sich um Daten Literale mit besonderer Bedeutung Sie sind hartkodiert englisch hardcoded und nur mit besonderem Wissen uber die konkrete Verwendung zu verstehen Solche Werte sollten zentral als Konstante oder Variable definiert werden optimalerweise als typsicheres Objekt public class Bar public static void main String args Bar bar new Bar bar go 7 hart codierter Wert public void go int param switch param case 1 System out println a break case 3 System out println b break case 7 System out println c break case 12 System out println d break default System out println x break Siehe auch Magische Zahl Informatik Reservierte Worter Bearbeiten Die Verwendung von reservierten Wortern etwa in SQL Anweisungen kann zu schwer zu findenden Fehlern fuhren Ein Austausch der Datenbank eines Herstellers gegen ein anderes Produkt kann dazu fuhren dass weitere Namen als reserviert betrachtet werden mussen Dem lasst sich entgegenwirken indem Bezeichner und Zeichenketten durchgangig mit entsprechenden Start und Endmarkern z B Anfuhrungszeichen versehen werden Unbeabsichtigte Komplexitat Bearbeiten Als Unbeabsichtigte Komplexitat englisch Accidental complexity wird eine programmierte Losung bezeichnet welche komplexer ist als es fur das zu losende Problem erforderlich und angemessen ware Dieses Anti Pattern ist verwandt mit der Gasfabrik Organisations Management bzw Prozess Anti Pattern Bearbeiten Wunderwaffe Bearbeiten EineWunderwaffe englisch Golden hammer ist ein bevorzugter Losungsweg der als universell anwendbar angesehen wird if all you have is a hammer everything looks like a nail Wenn man nur einen Hammer hat sieht alles wie ein Nagel aus Abraham Maslow 5 Das Rad neu erfinden Bearbeiten Hauptartikel Not invented here Syndrom Mit das Rad neu erfinden englisch Reinventing the wheel bzw Not invented here Syndrom wird die stetige Neuerstellung von Software ohne bestehende Losungen oder Frameworks zu nutzen bezeichnet Da keine Wiederverwendung erfolgt erhoht sich der Entwicklungsaufwand was zu unreiferer und teurerer Software im Vergleich zu der Nutzung der bestehenden Software fuhrt Das quadratische Rad neu erfinden Bearbeiten Mit das quadratische Rad neu erfinden englisch Reinventing the square wheel bezeichnet man die Bereitstellung einer schlechten Losung wenn eine gute Losung bereits existiert Body ballooning Bearbeiten Beim Body ballooning handelt der Vorgesetzte ausschliesslich aus der Bestrebung heraus seine Machtposition auszubauen welche sich entweder aus der Unternehmensstruktur oder auch rein subjektiv aus der Anzahl der Mitarbeiter unter sich definiert Dies kann dazu fuhren dass der Vorgesetzte bewusst arbeitsintensivere Losungen und Arbeitstechniken den effizienten vorzieht Empire building Bearbeiten Durch sachlich nicht nachvollziehbare und nicht konstruktive Massnahmen versucht eine einzelne Person ihre Macht auszubauen bzw zu erhalten Dies kann Body ballooning sein aber auch das standige Beschuldigen anderer gerade derer die nicht mehr fur die Unternehmung arbeiten die Ausfuhrung von pathologischer Politik Diskreditierung Mobbing und sonstige Facetten die nur darauf abzielen die eigene Position zu starken bzw den eigenen Status zu halten Dieses Muster zeichnet sich auch dadurch aus dass die Person es vermeidet Verantwortung zu ubernehmen und schriftliche Beweise fur Vorkommnisse und Entscheidungen zu verhindern weiss Somit muss sie sich an diesen nicht messen lassen was es auch erleichtert die Verantwortung fur das Misslingen eines Projektes an eine andere Person einfach weiter zu delegieren Hier wird auch bevorzugt jemand ausgewahlt der faktisch nur die Entscheidungen umgesetzt hat wie ein Programmierer die Entscheidungen des Vorgesetzten oder ein Projektleiter die Anforderungen des Kunden umsetzt Warme Leiche Bearbeiten Eine warme Leiche englisch warm body bezeichnet eine Person die einen zweifelhaften oder keinen Beitrag zu einem Projekt leistet Single head of knowledge Bearbeiten Ein Single head of knowledge ist ein Individuum welches zu einer Software einem Werkzeug oder einem anderen eingesetzten Medium als einziges unternehmensweit das Wissen besitzt Dies zeugt haufig von fehlendem Wissensmanagement mangelndem Austausch zwischen den Kollegen oder Defiziten in der Organisation kann aber auch von dem Individuum bewusst angestrebt worden sein Wenn das Individuum die Unternehmung verlasst nimmt es bildlich gesprochen das Wissen mit was fur die Unternehmung sehr gefahrlich ist Die Unternehmung blutet metaphorisch aus bleeding Das Muster kann durch geeignete Massnahmen verhindert werden Beispielsweise durch Entwicklung nach XP und Teambuilding Veranstaltungen zusammen mit Mitarbeiterbindung Motivation und Forderung der Identifikation mit der Unternehmung um die Fluktuation zu minimieren Auch eine ordnungsgemasse Dokumentation auf die alle betroffenen Mitarbeiter Zugriff haben verhindert einen Single head of knowledge Mushroom management Bearbeiten Beim Mushroom management werden Mitarbeiter uninformiert und klein gehalten Hierbei gilt sinngemass der Grundsatz Keep them in the dark and feed them full of shit Lass sie im Dunkeln und futter sie mit Scheisse Urban Dictionary 6 Entfaltung und Selbstverwirklichung finden beim Mushroom management kaum statt Die Analogie der Belegschaft zu einem Pilzfeld zeichnet sich dadurch aus dass die Mitarbeiter bildlich mit Mist bedeckt und im Dunkeln gehalten werden und wenn sie zu gross geworden sind zu viel Erfahrung zu gute Leistungen etc klein gemacht unter Druck gesetzt oder gar entlassen werden Diese Assoziation beinhaltet ferner dass die Fuhrung Entscheidungen fallt ohne die Spezialisten zu konsultieren bzw die Belegschaft uber diese Entscheidungen nicht informiert Haufig ist auch zu beobachten dass das Management die individuellen Fahigkeiten Starken Schwachen und Rollen der Teammitglieder nicht kennt und manchmal sogar auch nicht kennen will Personen werden gleichgeschaltet Zugeben dass jemand mehr kann als die anderen macht ihn machtiger was vermieden werden soll Noch ein Meeting mehr wird es losen Bearbeiten Noch ein Meeting mehr wird es losen englisch Yet Another Meeting Will Solve It bezeichnet es wenn ein Meeting in einem verspateten Projekt d h ein Projekt mit Verzug einberufen wird wodurch sich der Verzug nur noch mehr erhoht 7 Net Negative Producing Programmer Bearbeiten Ein Net Negative Producing Programmer ist ein unperformanter unproduktiver Entwickler Diesen aus einem Team zu entfernen kann die Projektproduktivitat mehr erhohen als einen guten Entwickler hinzuzufugen und den unproduktiven zu belassen Management nach Zahlen Bearbeiten Management nach Zahlen 8 englisch Management by numbers ist eine Anspielung auf Malen nach Zahlen Beim Management nach Zahlen wird ein ubermassiger Schwerpunkt auf das quantitative Management gelegt Insbesondere wenn Fokus auf Kosten gelegt wird wahrend andere Faktoren wie Qualitat vernachlassigt werden Bei diesem Muster werden Programmierer gerne als Gebrauchsgut englisch commodity gesehen und als austauschbar betrachtet Dies ist eine sehr kurzfristige Denkweise die nicht berucksichtigt dass fehlende Mitarbeitermotivation oder Mitarbeiterfluktuation mittel bis langfristig deutlich hohere Kosten fur das Unternehmen nach sich ziehen konnen als eine kurzfristige Investition in diese Hier ist auch der Begriff der Softwarefabrik Software Factory anzufuhren der Versuch die Softwareentwicklung zu automatisieren und den Programmierer als austauschbaren Produktionsfaktor zu betrachten Dies berucksichtigt allerdings nur unzureichend dass die Softwareentwicklung zu einem grossen Teil ein kreativer kunstlerischer Prozess ist der Freiraum und optimalerweise auch hohe Entfaltungsmoglichkeit sowie optimalerweise intrinsische Motivation des Entwicklers voraussetzt Ferner gilt es zu bedenken dass Mitarbeiter uber die Zeit viel Erfahrung bei der Arbeit an einem Produkt aufbauen die dem Unternehmen zu einem grossen Teil verloren geht wenn denn die Person die Unternehmung verlasst Angst vor Erfolg Bearbeiten Angst vor Erfolg englisch Fear Of Success auch Atmosphare der Angst bezeichnet es wenn das Management fur eine verangstigte defensive Atmosphare sorgt Dies gleicht einem Fussballteam das nur das eigene Tor verteidigt ohne Bestrebungen zu haben selbst ein Tor zu schiessen In einer Kultur voller Angst kann kaum etwas Konstruktives entstehen Auch etwas Gutes erstellende Personen brechen ihr Vorhaben ab weil sie davon ausgehen dass sie sowieso verlieren oder die gute Losung nicht honoriert bzw als schlecht dargestellt wird Unternehmen unter Angst wirken gelahmt und versaumen es neue Markte und Losungen aktiv anzugehen Sowohl ganze Unternehmungen als auch Abteilungen oder einzelne Personen verlieren so ihre Wettbewerbsfahigkeit Angst durch Erfolge aufzufallen und so den Argwohn der Kollegen oder des Managements auf sich zu ziehen verhindert ebenfalls dass Mitarbeiter und Unternehmungen ihre volle Leistungsfahigkeit abrufen Nicht selten sehen schlechte Manager in sehr guten Angestellten eine Gefahr da diese eine Konkurrenz auf ihre Position sind Typische Aussage Ich mache das heimlich Es ist zwar die beste Losung ich will aber nicht dass der Chef davon erfahrt Falscher System Architekt Bearbeiten Ein falscher Systemarchitekt englisch Faux System Architects kann entstehen wenn das Management erkennt dass es bei den Fahigkeiten der Programmierer grosse Unterschiede gibt Das Management sucht sich hierbei eine Person aus die vermeintlich uberwaltigende Fahigkeiten hat etwa sowohl bei der Software Entwicklung als auch beim Umgang mit Leuten gerade mit Personen deren Qualifikation unterdurchschnittlich ist Die Person wird mit einer hohen Erwartungshaltung des Managements eingesetzt und ist haufig ein Architekt oft aber auch ein anderer fachlicher Vorgesetzter Bei der Auswahl werden interne Spezialisten nicht gefragt sondern das Management entscheidet selbst und alleine obwohl es nur schwer selbst entscheiden kann ob jemand ein guter Software Entwickler ist Lange Zeit lauft dies auch recht gut da sich der vermeintliche Experte recht gut verkaufen kann und sich auch verbal sehr geschickt auszudrucken weiss Uber die Zeit wird aber immer deutlicher dass die Erwartungen an den Architekten zu hoch waren Einerseits an der nicht eingetretenen Verbesserung der Software oder der gleichbleibend schlechten Qualitat der schlechten Programmierer andererseits an einer Unzufriedenheit der guten Programmierer Er kann die blumigen fast blinden Erwartungen in ihn nicht erfullen Bei der Beurteilung des Systemarchitekten gilt es insbesondere immer das Projekt als ein Ganzes zu betrachten So kann die gleichbleibend schlechte Qualitat schlechter Programmierer sehr wohl auch in Umstanden begrundet sein auf die auch ein guter Systemarchitekt absehbar keinen Einfluss nehmen kann Gute System Architekten konnen ihrer Position entsprechend auch Opfer von Body ballooning oder Empire building s o werden Ein guter Systemarchitekt wird z B nicht uber Wochen oder Monate hin versuchen die Qualitat schlechter Programmierer zu verbessern wenn sich fur ihn absehbar kein Potential erkennen lasst Von einem schlechten Management vorgegebene unrealistische Rahmenbedingungen degradieren u a auch den besten Systemarchitekten Sollten solche Umstande bekannt sein der Systemarchitekt aber trotzdem keine Anzeichen machen das Unternehmen zu verlassen konnte es sich tatsachlich um einen schlechten Systemarchitekten handeln Crocodile Management Bearbeiten Beim Crocodile Management ist der Projektleiter nur teilweise im Projekt anwesend und kummert sich nur um Details die der Projektmitarbeiter nicht erledigt hat In Bezug auf das Verhalten eines Krokodils kennzeichnet sich das des Projektleiters hierbei durch auftauchen Maul aufreissen abtauchenProgrammer Interrupt Bearbeiten Ein Programmer Interrupt 9 liegt dann vor wenn der Programmierer wahrend seiner Arbeit unterbrochen wird Hierzu gehoren Ausserungen von Kollegen E Mails anstehende Meetings und ahnliches Studien zufolge benotigt ein Programmierer nach einer Unterbrechung zwischen 10 und 15 Minuten um wieder effektiv weiterarbeiten zu konnen bekommt aber nur etwa einmal am Tag die Moglichkeit fur mehr als zwei Stunden ohne Unterbrechung arbeiten zu konnen 10 Die Unterbrechung ist umso schwerwiegender je hoher die geistige Beanspruchung des Programmierers wahrend seiner Tatigkeit ist 11 Besonders problematisch sind hierbei Unterbrechungen 12 wahrend der Bearbeitung von mehreren Codeabschnitten gleichzeitig wahrend Suchaktivitaten zu Programmierproblemen wahrend des Durchdenkens des Programmablaufs insbesondere bei parallelem Code durch die der Entwickler die Integrierte Entwicklungsumgebung aus dem Sichtbereich verliert Typischerweise versuchen Entwickler moglichen Unterbrechungen mit Kopfhorern dem Schliessen des E Mail Programms und teilweise dem Abschalten des Mobiltelefons zu begegnen Weitergehend wenden Entwickler Methoden an um sich moglichst schnell wieder einarbeiten zu konnen hierzu gehoren To do Listen bewusst hervorgerufene Kompilierungsfehler etwa durch Modultests und Klebezettel Unterbrechungen des Arbeitsablaufs lassen sich jedoch nicht nur bei Entwicklern sondern bei allen Buroangestellten beobachten 13 Weitere Bearbeiten Software verrotten lassenMeta Muster Bearbeiten Programmer Experience Clumping Bearbeiten Unerfahrene Programmierer sind meistens bereit fur eine relativ geringe Vergutung fur ein Unternehmen zu arbeiten z B aus Unwissenheit oder um dort Erfahrung zu sammeln Haufig werden in solchen Unternehmen die Programmierer vom Management nicht geschatzt meistens in Firmen in denen Management by numbers vorherrscht Es liegen schlechte Arbeitsbedingungen vor Die unerfahrenen Programmierer konnen sich nicht weiterentwickeln Erfahrene Spezialisten sehen was passiert und konnen dies objektiv und kritisch einschatzen Diese werden den Arbeitsplatz wechseln um eine Herausforderung anzunehmen in der die Programmierung besser verstanden und gute Arbeit gewurdigt wird Dies produziert einen Gruppierungseffekt in dem sich unerfahrene Programmierer im Unternehmen gruppieren bzw dort verbleiben und die erfahrenen Leute sich woanders gruppieren Es kommt zu einer hohen Fluktuation bei der immer mehr gute Leute das Unternehmen verlassen Ohne die Fuhrung der erfahrenen Kollegen konnen die unerfahrenen oder neu eingestellten Entwickler sich nicht verbessern Ein Teufelskreis entsteht der auch dadurch verstarkt wird dass der Arbeitgeber seine vermeintlich weniger loyalen Angestellten zu immer weniger Schulungen schickt da er Angst hat die Personen verlassen das Unternehmen sowieso und das Geld ware fehlinvestiert Irgendwann weiss niemand im Unternehmen mehr wie ein erfahrener guter Entwickler aussieht bzw es fehlt der Benchmark die unerfahrenen Entwickler merken immer weniger dass sie eigentlich unerfahren sind Programmer Experience Clumping ist nicht auf Programmierer beschrankt auch IT fremde Fachabteilungen konnen betroffen sein Ein Derivat des Anti Patterns ist dass die guten Leute aus Bequemlichkeit oder anderen personlichen Grunden zwar im Unternehmen verbleiben ihre enorme Leistungsfahigkeit allerdings so drosseln dass sie nur noch ein kleines Stuck besser sind als die schlechten Mitarbeiter Da dies ausreicht um sich abzugrenzen und die Position zu sichern schopfen die guten Mitarbeiter bei weitem ihr Potential nicht aus Dies ist letztendlich fur alle Beteiligten vor allem aber fur das Unternehmen sehr bedenklich Zersetzung Bearbeiten Eine Zersetzung englisch Corrosion bezeichnet die gewollte oder ungewollte Nutzung einer Vielzahl von Anti Pattern aus allen Bereichen Dies geht einher mit konsequenter Verteidigung des Vorgehens ist meist unsachlich brachial und ohne Diskussion Man kommt unweigerlich zu dem Schluss der Anwendende mochte der Unternehmung oder dem Softwareprodukt grob fahrlassig Schaden zufugen bzw dessen erfolgreiche kostengunstige Einfuhrung verhindern Dies kann auch dadurch motiviert sein dass der Anwendende einer anderen involvierten Partei schaden mochte Literatur BearbeitenFrederick P Brooks Vom Mythos des Mann Monats Essays uber Software Engineering mitp Bonn 2003 ISBN 3 8266 1355 4 William J Brown et al Anti patterns Refactoring Software Architecture and Projects in Crisis John Wiley amp Sons New York 1998 ISBN 0 471 19713 0 Martin Fowler Refactoring Improving the Design of Existing Code Addison Wesley Reading Massachusetts 1999 ISBN 0 201 48567 2 Joshua Kerievsky Refactoring to Patterns Addison Wesley Boston 2004 ISBN 0 321 21335 1 Bruce A Tate Bitter Java Manning Greenwich Connecticut 2002 ISBN 1 930110 43 X Bruce A Tate et al Bitter EJB Manning Greenwich Connecticut 2003 ISBN 1 930110 95 2 Gerald M Weinberg Psychologie des Programmierers mitp Bonn 2004 ISBN 3 8266 1465 8 Siehe auch Bearbeitensyntaktischer Zucker und Salz technische SchuldGegenbeispiel bedeutungsahnliches Wort auch in anderen FachbereichenWeblinks BearbeitenAnti Pattern Definition Portland Pattern Repository englisch Anti Pattern Katalog Portland Pattern Repository englisch Bruce Eckel Programmer Experience Clumping und Faux System Architects englisch Memento vom 4 Februar 2010 im Internet Archive Einzelnachweise Bearbeiten Frederick P Brooks Jr The Mythical Man Month Addison Wesley 1995 1975 Guido Stepken Anti Patterns in der Softwareentwicklung Memento vom 15 Februar 2015 im Internet Archive PDF 308 kB auf der Webseite little idiot de a b Michael T Nygard Release It Design and Deploy Production Ready Software O Reilly 2007 ISBN 978 0 9787392 1 8 Dependencies between Systems Databases englisch 326 S A W Appel Modern Compiler Implementation in Java Cambridge University Press 1998 The Psychology of Science a reconnaissance englisch von Abraham H Maslow erstveroffentlicht 1966 First Edition Januar 1966 uber den HarperCollins Verlag ISBN 0 06 034145 9 mushroom management In Oford Reference Abgerufen am 30 November 2022 YetAnotherMeetingWillSolveIt In wiki c2 com 17 April 2011 abgerufen am 7 Januar 2018 englisch Harold S Geneen The case for managing by the numbers Hrsg Fortune Band 110 Nr 7 1984 S 78 81 Programmer Interrupted Ninlabs Research 19 Januar 2013 abgerufen am 8 Februar 2013 Chris Parnin Spencer Rugaber Resumption strategies for interrupted programming tasks In 17th International Conference on Program Comprehension IEEE 2009 doi 10 1109 ICPC 2009 5090030 cc gatech edu Memento vom 21 Oktober 2018 im Internet Archive PDF 266 kB Shamsi T Iqbal Xianjun Sam Zheng Brian P Bailey Task evoked pupillary response to mental workload in human computer interaction 2004 abgerufen am 8 Februar 2013 englisch James Fogarty Andrew J Ko Htet Htet Aung Elspeth Golden Karen P Tang Scott E Hudson Examining task engagement in sensor based statistical models of human interruptibility 2005 abgerufen am 8 Februar 2013 The hidden cost of interrupting knowledge workers 5 Oktober 2009 abgerufen am 8 Februar 2013 Abgerufen von https de wikipedia org w index php title Anti Pattern amp oldid 239603581 Magische Werte