Alle Beiträge von mic91668

Checkliste: wie erkenne ich einen Ego-Programmierer?

Ego-Programmierer schaden dem Team v.a. langfristig. Kurzfristig mögen sie dem Team erstmal Beschleunigung verschaffen, weil sie gewisse Programmierfertigkeiten besitzen und erstmal Probleme lösen. Langfristig muss ein Team diese kurzfristige Erleichterung aber teuer bezahlen, weil der Ego-Programmierer die technische Schuld der Codebase mit schwer bis gar nicht verständlichem Code erhöht. Wie aber erkenne ich solche Ego-Progammierer? Folgende Checkliste speist sich aus teuer erkaufter Erfahrung:

Dem Ego-Programmierer genügt es nicht, die Realität einfach abzubilden, weil das seine lächerlichen Kollegen auch gerade noch so hinbekommen. Erst durch zusätzliche möglichst abstrakte Entitäten mit Namen wie IntermediatorFactory, TransactionalBuilderObject, ConnectionSingleton, CompositeAdapterClass, ServiceMediatorController, usw. läßt es sich vom Programmierpöbel abheben. Ohne die Gang of Four fehlte ihm die Rechtfertigung eine verständliche Codebase in SEINE Codebase zu verwandeln. 

Schreibt ein durchschnittlicher Programmierer aus Zeitmangel oder 14-Uhr-Loch-Blut-Im-Hirn-Mangel schwerverständlichen Code, entschuldigt er sich bei Dir. Nicht so der Ego-Programmierer: er grinst dich blöd an. Und mit blöd meint er dich.

Der Ego-Programmierer packt möglichst viele Gedankengänge in eine Codezeile – weil er’s kann.

Der Ego-Programmierer verwendet häufig Abkürzungen als Bezeichner, weil nur Anfänger sprechende Namen benutzen.

Während sich die Welt schon mit 3 Schichten geschlagen gibt, läuft der Ego-Programmierer erst zur Höchstform auf, wenn sein Debugger auf einem Call-Stack mit 20+ Schichten anhält.

Der Ego-Programmierer schreibt weder Kommentare noch eine Dokumentation, weil’s einfach vor dem Chef nicht gut rüberkommt, wenn die Urlaubsvertretung auch etwas hinbekommt.

Der Ego-Programmierer denkt gar nicht daran, alles Überflüssige wegzulassen – er hat nun mal geniale Gedanken, die sich irgendwie im Code spiegeln müssen …

Neuer User in Jira CORE CLOUD hinzufügen und einführen

Hinzufügen

Das Hinzufügen ist super einfach. Einfach einen Vorgang teilen, dann die Email-Adresse des Neuen eingeben und bestätigen.

Er erhält umgehend eine Aufforderung zur Registrierung und nachdem er diese ausgefüllt und abgeschickt hat, bekommt er dank der Default-Einstellungen eines Projektes umfassende Rechte darin, v.a. alle Vorgänge anzuschauen:

Einführen

Überblick verschaffen

Die wohl initial wichtigste Funktion, die ein neuer User kennen sollte ist der Filter meine offenen Vorgänge:

Benachrichtigt werden

Per Default werden über fast alle Änderungen an einem Vorgang der Autor (also Auftraggeber), die zugewiesene Person (also Bearbeiter) und alle Beobachter per Email benachrichtigt.

Falle

Ändert man die Beschreibung eines Tickets, so wird das im Gegensatz zu vielen anderen Änderungen in Jira zwar automatisch gespeichert, aber erst durch die Bestätigung mit dem Save-Button wird die Änderung auch für die anderen sichtbar.

Prepared Statements

Der erste Zweck von Prepared Statements ist eine schnellere Ausführung von ähnlichen SQL-Statements, die mehrfach nacheinander ausgeführt werden. Der zweite Zweck ist ein Verhindern von SQL-Injektions, also einer bestimmten Angriffsmethode. Beides haut mich jetzt nicht vom Hocker, denn der letzten Millisekunde Geschwindigkeitssteigerung jage ich nicht hinterher und ich frage mich schon, ob man SQL-Injektions nicht auch eleganter verhindern kann. Aber manchmal kommt man wohl nicht umhin, sich mit ihnen zu beschäftigen. 

Prepared Statements sind erstmal völlig unabhängig von irgendwelchen Programmiersprachen (PHP, Java, etc.) und sind erstmal Dinger, die in Datenbanken leben. Die gängigen Datenbank-Systeme (z.B. mySQL und Oracle) können Prepared Statements (Quelle)

Doch was sind Prepared Statements? Prepared Statements sind  SQL-statements, die schon mal unfertig an die Datenbank vorausgeschickt werden. Unfertig, weil sie an der ein oder anderen Stelle nur mit Platzhalten (im Romme würde man Joker sagen) gefüllt sind, damit sie in der Datenbank schon mal auf ihren Einsatz (=Ausführung) vorbereitet (daher der Name prepared statement) werden.  Da sie dort schon vorbereitet sitzen, können sie eben schneller ausgeführt werden, wenn es losgeht. Los geht’s, wenn eine Anweisung kommt, die sie namentlich aufruft und sie über die Werte informiert, die bisher nur als Platzhalter vorliegen (im Romme würde man sagen, dass der Joker beispielsweise mit der Herz 8 ausgetauscht wird).

Wie die Prepared Statements genau erzeugt werden, hat Peter Kropf in seinem Tutorial schön und einfach beschrieben.