7 wichtige Codierungsmethoden für agile Entwickler

Bei der agilen Softwareentwicklung geht es nicht nur um agile Prinzipien und Praktiken. Um erfolgreich Software zu veröffentlichen, die sich positiv auf Endbenutzer auswirkt, technische Schulden behebt und zuverlässig bereitstellt, muss das Entwicklungsteam auch die agilitätsfördernden Codierungspraktiken und Architekturstandards berücksichtigen.

Eine noch wichtigere Überlegung steht für Technologieunternehmen auf dem Spiel. So schwierig es auch ist, Software zu entwickeln, es ist noch schwieriger, Verbesserungen und Upgrades über einen längeren Zeitraum regelmäßig bereitzustellen. Die Praktiken von Devops CI / CD und IAC (Infrastruktur als Code) behandeln teilweise einen kritischen Faktor, da die Automatisierung zuverlässige und wiederholbare Möglichkeiten zur Bereitstellung von Anwendungen ermöglicht. Fügen Sie kontinuierliche Tests hinzu, und Entwicklungsteams können überprüfen, ob Codeänderungen keine Auswirkungen auf vorhandene Funktionen haben.

Mit zunehmendem Alter der Anwendungen wechseln die ursprünglichen Entwickler jedoch zu anderen Projekten und manchmal auch zu anderen Unternehmen. Wenn neue Entwickler dem Team beitreten, müssen sie die Architektur der Software kennen und den Code verstehen, bevor sie ihn zuverlässig und effizient ändern können.

Darüber hinaus möchten Entwickler, die Anwendungen erstellen, häufig neue entwickeln. Es mag sich angenehm und sicher anfühlen, an den von Ihnen entwickelten Anwendungen festzuhalten, aber an Ihren Code gebunden zu sein, ist für Ihre Karriere oder das Unternehmen nicht gesund.

Der beste Weg, um zu neuen und aufregenden Softwareentwicklungsinitiativen überzugehen, besteht darin, Ihre Architektur, Anwendung und Ihren Code von anderen Entwicklern problemlos zu unterstützen. Agile Teams und Entwickler müssen Codierungspraktiken festlegen und durchsetzen, die die laufende Softwareentwicklung unterstützen.

1. Das Rad nicht neu erfinden

Die erste Regel beim Codieren: Codieren Sie nichts, was nicht codiert werden muss! Wie?

  • Stellen Sie Fragen zu den Anforderungen. Warum ist eine Funktion wichtig? Wer profitiert? Untersuchen Sie insbesondere nicht codierende Optionen, um das Problem zu lösen. Manchmal ist die beste Lösung überhaupt keine Lösung.
  • Hat jemand in Ihrer Organisation bereits eine ähnliche Lösung codiert? Vielleicht gibt es einen Microservice, der nur eine Erweiterung benötigt, oder eine Softwarebibliothek, die ein kleines Upgrade benötigt? Sehen Sie sich unbedingt die Codebasis Ihres Unternehmens an, bevor Sie etwas Neues codieren.
  • Gibt es Lösungen von Drittanbietern, einschließlich erschwinglicher SaaS-Tools oder Open Source-Optionen, die minimale Anforderungen erfüllen?
  • Haben Sie in Open-Coding-Repositorys wie GitHub nach Codebeispielen und Snippets gesucht, die die Compliance-Anforderungen Ihres Unternehmens erfüllen?

2. Berücksichtigen Sie Entwicklungsoptionen mit geringem Code

Wenn Sie eine Lösung codieren müssen, können alternative Low-Code-Plattformen möglicherweise eine effizientere Entwicklung der Funktionen ermöglichen als das Codieren in Entwicklungssprachen wie Java, .Net, PHP und JavaScript.

Low-Code-Plattformen wie Caspio, Quick Base, Appian, OutSystems und Vantiq bieten Tools zum Entwickeln von Anwendungen mit wenig Code und manchmal sogar ohne Codierung. Jede Plattform ist auf unterschiedliche Funktionen spezialisiert und eignet sich daher für eine bestimmte Anwendungsklasse. Mit Caspio können Sie beispielsweise Formulare und Workflows einfach in Websites einbetten. Quick Base verfügt über robuste Workflow- und Automatisierungsfunktionen. Die ereignisgesteuerte Architektur von Vantiq eignet sich für IoT- und andere Echtzeitdatenanwendungen.

Es gibt Zeiten, in denen Codierung erforderlich ist, aber Entwickler sollten auch eine oder mehrere Entwicklungsoptionen mit geringem Code beherrschen und diese für geeignete Anwendungsfälle in Betracht ziehen.  

3. Testen automatisieren

Neben dem Schreiben von Code, der die Anforderungen erfüllt, ist es eines der wichtigsten Dinge, die Entwickler tun müssen, ihn zu testen. Testgesteuerte Entwicklungspraktiken und automatisierte Testtools sind ausgereift, und Entwicklungsteams sollten Einheiten-, Regressions-, Leistungs- und Sicherheitstests als Teil ihrer agilen Schätzungen einbeziehen.

Diese Tests bieten nicht nur Tests zur Validierung von Builds und Releases, sondern tragen auch dazu bei, den Code besser zu unterstützen. Tests sind Dokumentationen und legen einen Vertrag darüber fest, wie sich der Code verhalten soll. Wenn neue Entwickler Teams beitreten und versehentlich eine fehlerhafte Änderung implementieren, wird der Build durch kontinuierliche Tests angehalten und dem Entwickler ein aussagekräftiges Feedback gegeben, um das Problem schnell zu beheben.

4. Externalisieren Sie alle Konfigurationsparameter

Es sollte keine Entschuldigung für Entwickler geben, Einstellungen, Benutzernamen und Kennwörter auf Systemebene oder andere Konfigurationsinformationen im Code jemals fest zu codieren. Ich habe gesehen, wie Entwickler Verknüpfungen verwendeten, während sie Prototypen entwickelten, die ihren Weg in Produktionsumgebungen finden. In heutigen Architekturen sollte dies niemals getan werden. Hardcodierung ist keine technische Schuld, sondern eine faule, verantwortungslose Codierungspraxis, die erhebliche Konsequenzen haben kann. Wenn versehentlich auf Code zugegriffen wird, entsteht eine Sicherheitslücke, wenn Endpunkte oder Zugriffsdaten offengelegt werden.

Wenn bei der Bearbeitung von Legacy-Code noch ein Schritt weiter gegangen wird, sollte die Behandlung fest codierter Konfigurationen und Parameter eine nicht verhandelbare Priorität für technische Schulden sein.

5. Befolgen Sie die Namenskonventionen und fügen Sie Kommentare hinzu, um den Code lesbar zu machen

Ich habe einmal mit einem unglaublich talentierten Entwickler zusammengearbeitet, der kein gutes Englisch konnte und nicht der beste Schreibkraft war. Er instanziierte Objekte mit Namen wie a , b und c und erstellte dann lokale Variablen mit den Namen zz , yy , xx . Er würde sich verpflichten, dies vor der Veröffentlichung zu bereinigen, aber selten durchzuhalten.

Sie sollten keine Pair- oder Mob-Programmierung einrichten müssen, um zu erkennen, dass dies eine schreckliche Praxis ist.

Teams sollten Namenskonventionen wie den JavaScript Style Guide und den Java Style Guide von Google anwenden und sich dazu verpflichten, Code zumindest auf modularer Ebene und idealerweise auf Klassenebene zu kommentieren. Darüber hinaus sollten Unternehmen in Betracht ziehen, statische Code-Analyse-Tools zu verwenden, die Entwicklern Feedback geben, wenn Code hinsichtlich Struktur- und Lesbarkeitsfaktoren umgestaltet werden muss.

6. Überprüfen Sie den Code regelmäßig in der Versionskontrolle

Wenn Sie den Code nicht täglich oder häufiger in die Versionskontrolle einchecken, kann dies zu Konflikten und anderen Blockaden führen, die sich auf das Team auswirken. Ein kleiner Fehler kann dazu führen, dass agile Teams ihre Sprint-Verpflichtungen verpassen oder zusätzliche Arbeit zur Lösung von Abhängigkeiten leisten.

Die Teams sollten sich auf Konventionen zum Einchecken von Code einigen, der nicht für die Produktion bereit ist. Herkömmliche Ansätze umfassen Feature-Flags und Git-Verzweigungen.

7. Vermeiden Sie es, Heldentaten und Komplexitäten zu codieren

Die meisten Entwickler, die ich kenne, wurden professionelle Softwareentwickler, weil sie es lieben, Codierungsprobleme zu lösen. Codierung ist eine Kunst, Wissenschaft und Handwerk, und bessere Entwickler suchen nach zum Nachdenken anregenden Codierungsaufgaben und eleganten Implementierungen.

Außer, dass es eine graue Linie zwischen dem Lösen herausfordernder geschäftlicher und technischer Aufgaben und dem Codieren von Heldentaten gibt, die den nächsten Entwicklern Code geben, der schwer zu verstehen und kompliziert zu warten ist.

Für diejenigen von uns, die einige Zeit programmiert haben, erinnern wir uns an die Bequemlichkeit von Perl-Einzeilern oder die Verwendung verschachtelter Vorlagen in C ++. Manchmal gibt es gute Gründe, diese Ansätze zu verwenden, aber wenn eine neue Gruppe von Entwicklern diese Techniken nicht versteht, ist es schwieriger, den Code zu ändern. Manchmal sind einfache, aber weniger elegante Codierungspraktiken besser.

Steigerung der Agilität in der agilen Softwareentwicklung

Die in Scrum und agile Entwicklung eingebetteten Rituale, einschließlich Verpflichtungen, Stand-ups, Sprint-Reviews und Retrospektiven, sind jetzt bewährte Methoden, um die Zusammenarbeit im Team zu ermöglichen und eine erfolgreiche Implementierung voranzutreiben. Um jedoch über einen langen Zeitraum hinweg Flexibilität zu demonstrieren, müssen Entwickler Verantwortlichkeiten und Codierungspraktiken übernehmen, die eine längerfristige Unterstützung und Erweiterbarkeit des von ihnen entwickelten Codes ermöglichen.

Entwicklungsteams müssen ihre Codierungspraktiken kritisch betrachten. Es ist nicht nur gut genug, um heute zu demonstrieren und zu veröffentlichen. Es ist auch wichtig, dass andere Benutzer die Anwendung und den Code problemlos warten können.