Skip to content

KI Erfahrungsbericht

Emma Danko edited this page Jun 30, 2026 · 17 revisions

1. Analyse Verwendung KI im Projekt

Hat Ihr Team für die Umsetzung des Projekts KI verwendet?

  • Wenn Ja (Hilfe beim Einarbeiten in neue Technologien bitte ebenfalls anführen):
    • Wo wurde KI eingesetzt?
    • Welche Services und Modelle wurden verwendet?
    • Wie hilfreich/zuverlässig waren die Resultate?
  • Wenn Nein: Warum nicht. Diskutieren Sie, ob eine gezielte Verwendung von KI hilfreich gewesen wäre.

Adriano:

Ja, ich habe KI bei der Umsetzung des Projekts verwendet. Der Einsatz war für mich vor allem unterstützend: Ich habe KI genutzt, um einen Einstieg in neue Konzepte und Technologien zu bekommen, Ideen zu überprüfen, Designentscheidungen zu reflektieren und konkrete Implementierungsprobleme schneller einzugrenzen.

Ein wichtiger Anwendungsbereich war für mich die Einarbeitung in neue Technologien. Beim Arduino-Projekt habe ich zum Beispiel zum ersten Mal C++ verwendet. Obwohl mir viele grundlegende Konzepte bereits aus C bekannt waren, war ich mit der konkreten Semantik, typischen Patterns und Best Practices in C++ noch nicht ausreichend vertraut. KI hat mir hier geholfen, erste Erklärungen, Beispiele und Orientierungspunkte zu bekommen.

Darüber hinaus habe ich KI besonders für Sanity-Checks von Ideen, Workflows und Architekturentscheidungen eingesetzt. Ein Beispiel dafür ist der Authentifizierungsmechanismus für den Arduino, der vergleichsweise komplex war. Mithilfe von KI konnte ich verschiedene Ansätze vergleichen, mögliche Trade-offs besser verstehen und daraus nachvollziehbare Designentscheidungen ableiten.

Auch beim Debugging war KI für mich hilfreich, insbesondere bei langen Stacktraces oder Fehlermeldungen, bei denen nicht sofort klar war, wo die eigentliche Ursache liegt. Zusätzlich habe ich KI für Refactoring, kleinere Code-Anpassungen und spezifische Frontend-Änderungen verwendet, die mir beim Testen und Durchklicken aufgefallen sind.

Verwendet habe ich hauptsächlich ChatGPT 5.5, sowohl als klassischen Chat-Assistenten als auch in einer agentischen Variante mit direktem Zugriff auf meinen Code. Die agentische Nutzung war besonders beim Troubleshooting angenehm, da die KI den Codekontext direkt analysieren und dadurch gezieltere Vorschläge machen konnte.

Die Resultate waren insgesamt sehr hilfreich und in vielen Fällen gut verwendbar, vor allem dann, wenn ich die Prompts präzise formuliert und den Kontext bewusst klein und thematisch fokussiert gehalten habe. Hilfreich war es außerdem, verschiedene Chats für unterschiedliche Themenbereiche zu verwenden, damit der Kontext übersichtlich bleibt.

Die Zuverlässigkeit der Ergebnisse war allerdings nicht uneingeschränkt. Ein wiederkehrendes Problem war, dass die KI teilweise „zu viel“ machen wollte: Selbst bei kleineren Fragen oder Code-Anpassungen wurden gelegentlich sehr komplexe oder unnötig umfangreiche Lösungen vorgeschlagen. Daher musste ich die Ergebnisse immer kritisch prüfen und an die tatsächlichen Anforderungen des Projekts anpassen. Insgesamt war KI für mich aber eine deutliche Unterstützung, insbesondere beim Einstieg in neue Technologien, bei der Ideenprüfung, beim Debugging und bei der Strukturierung technischer Entscheidungen.

Emma:

Für den Raspberry wurde KI vor allem für das Besprechen von Architekturentscheidungen genutzt. Auch für die Erstellung von Testcases wurde es genutzt. Außerdem war es sehr hilfreich beim Hinzufügen von aussagekräftigen Logstatements beim Troubleshooten und Troubleshooten allgemein (Fehlermeldungen analysieren. Ich habe es auch genutzt, um mir Bibliotheken für meine Usecases vorschlagen zu lassen (FastAPI etc.). Es was zudem nützlich für die Erstellung von Boilerplatecode, zum Beispiel bei HTTP Anfragen und Datenbankoperationen. Ich habe Claude Code benutzt und es hat gut funktioniert und Zeit gespart.

Prahbdip:

AI was used throughout the project to support development. As I was primarily responsible for the backend, I used AI mainly as a learning and productivity tool rather than something that directly produced large parts of the final system. The main AI tools (Tech Stack) used were ChatGPT-4 and Claude. They helped with technical discussions, code suggestions, debugging, documentation, and testing.

During the early stages of development, AI helped me explore different backend architectures and code structures. It provided useful starting points and helped me understand new technologies and design patterns. AI was also useful for generating boilerplate code, writing documentation, and handling other repetitive tasks, which sped up development considerably. One area where AI was particularly valuable was designing data aggregation logic. Several backend components required collecting, processing, and transforming data from different sources. AI helped generate ideas for structuring these pipelines and often suggested approaches that accelerated implementation. The final solutions were always reviewed and adapted manually.

AI also played an important role in testing and debugging. It helped generate test cases, identify edge cases, and structure testing documentation. When bugs occurred, I often used AI to analyse code, logs, and error messages. Although its suggestions were not always correct, they frequently helped narrow down the root cause and saved time during troubleshooting.

During development, I personally noticed some limitations of current AI systems. While AI was effective at solving specific problems, it was less reliable when making larger architectural decisions. Suggestions that seemed reasonable in isolation did not always fit well within the wider application and occasionally introduced unnecessary complexity. For this reason I often had to go back and change large parts of the codebase. However, I believe this is influenced by the tech stacks used, as I never used a real "coding agent", and perhaps there are more powerful models out there.

I would personally say that AI had a positive impact on the project, especially in this era of AI Driven Development. It helped me learn new technologies, speed up development, improve testing, and solve problems more efficiently. However, it worked best as a supporting tool and brainstorming partner rather than a replacement for software engineering expertise/architecture decisions.

Fabienne:

Ja, ich habe bei der Umsetzung des Projekts KI eingesetzt. Da ich im Projekt Teil des Frontend-Teams bin, vorher auch keine Erfahrung mit React, PrimeReact, etc. hatte, war es eine gute Unterstützung diesbezüglich. Ich habe vor allem Claude Opus 4.8 verwendet, jedoch bei Google Suchen auch Gemini wenn es sich angeboten hatte.

Der zentrale Nutzen war für mich das Verständnis neuer Konzepte. Mit React und insbesondere einigen neueren Mechanismen war ich zu Projektbeginn noch nicht vertraut. KI hat mir hier geholfen, mir Konzepte anhand verständlicher Erklärungen und kleiner Beispiele zu erlernen. Besonders hilfreich war, dass ich gezielt nachfragen und mir Zusammenhänge so lange erklären lassen konnte, bis ich sie wirklich nachvollziehen konnte. Weiters hat mir KI geholfen mit der PrimeReact Komponentenbibliothek zu arbeiten, der Aufbau von Komponenten und deren konkrete Verwendung bzw. Einbindung konnte ich mithilfe der Tools schnell und einfach nachvollziehen.

Beim Testen und Durchklicken der Anwendung sind mir immer wieder Fehler und unerwartetes Verhalten aufgefallen. Hier war KI hilfreich, um TypeScript-Typfehler, unklare Fehlermeldungen oder unerwartetes Rendering-Verhalten schneller einzugrenzen. Gerade bei längeren Fehlermeldungen, bei denen die eigentliche Ursache nicht sofort ersichtlich war, hat KI beim Suchen möglicher Fehlerquellen geholfen.

Insgesamt war das Nutzen von KI für mich vor allem beim Einstieg, Verständnis neuer Konzepte und Debugging eine große Hilfe. Natürlich ist die Ausgabe nicht fehlerfrei, es kam vor dass veraltete oder nicht existierende Props/Methoden oder unnötig komplexe Varianten zum Lösen von Fehlern vorgeschlagen wurden. Jedoch waren die Tools an sich als Lern-, Einarbeitungs- und Debugging-Hilfe eine Bereicherung.

Maria:

Ja, ich habe KI im Projekt eingesetzt. Zu Beginn vor allem, um eine Basis für das Frontend zu schaffen: Ich habe mir Ideen geholt wie man die Struktur aufbaut, Design Ideen überlegt, usw.

Ich habe Claude Code von Anthropic verwendet, als VS Code Extension mit direktem Zugriff auf den Code. Das Modell war Claude Sonnet 4.6. Der Vorteil war, dass ich keinen Kontext manuell kopieren musste; die KI konnte den relevanten Code direkt lesen.

Später, bei konkreten Problemen, war mein Ansatz ein anderer: Ich habe zuerst versucht, das Problem mit Hilfe der KI wirklich gut zu verstehen, bevor irgendetwas geändert wurde. Dann habe ich es Schritt für Schritt selbst oder mit KI-Unterstützung umgesetzt. Mein typischer Prompt war zum Beispiel: „Fasse zusammen, was hier zu tun ist, wo man das reparieren sollte, warum und wie – mache nichts bis ich es bestätige." Das hat gut funktioniert, weil ich so die Kontrolle behalten habe und die Vorschläge immer zuerst verstanden und bewertet habe.

Die Resultate waren meistens direkt verwendbar, besonders bei klar abgegrenzten Aufgaben wie das Umbenennen von UI-Sektionen, das Verstecken von Buttons für dekommissionierte Geräte, das Anpassen von BLE-Scan-Timern, usw. Es gab aber auch Bereiche, wo die KI wenig hilfreich war. Bei visuellen und designbezogenen Anforderungen konnte sie meine konkreten Vorstellungen meistens nicht gut umsetzen, das musste ich manuell angepasst werden. Auch beim Device Management war KI-Unterstützung begrenzt, da dieser Teil stark an einen konkreten Hardware-Workflow gebunden ist. Da das nur mit echter Hardware getestet werden konnte und das nicht immer möglich war, konnte ich KI-Vorschläge dort kaum zuverlässig überprüfen und musste vieles vorsichtig selbst angehen. Bei komplexeren Aufgaben mit mehreren Abhängigkeiten musste ich insgesamt relativ oft korrigierend eingreifen. Insgesamt war der Einsatz aber eine Hilfe, sowohl beim Aufbau des Projekts als auch beim gezielten Lösen von Problemen später im Entwicklungsprozess.

2. Prompts und Resultate

Führen Sie hier relevante Prompts und Resultatsauszüge an.

Adriano:

Prompt:

Explain how Bosch BME680/BME688 works with Arduino. Compare the normal raw sensor libraries with the Bosch BSEC library. I especially want to understand IAQ, IAQ accuracy, eCO₂, bVOC, calibration/burn-in behavior, and which values are useful for a room climate dashboard and database.

Result:

Bosch BME680/BME688 on Arduino: Normal Sensor Library vs Bosch BSEC

The Bosch BME680 and BME688 are environmental sensors that can measure temperature, humidity, pressure, and gas resistance.
When using them with Arduino, there are two common approaches:

  1. Using a normal sensor library, such as Adafruit_BME680 or the basic Bosch driver
  2. Using the Bosch BSEC library

The main difference is that the normal library gives you mostly raw sensor values, while the BSEC library adds Bosch’s closed-source algorithm that calculates higher-level air quality values such as IAQ, eCO₂, and bVOC.

...

1. Normal sensor library

A normal BME680/BME688 library usually gives you values like:

  • temperature
  • humidity
  • pressure
  • gas resistance

Example values:

Temperature: 22.4 °C
Humidity: 48 %
Pressure: 1012 hPa
Gas resistance: 120 kΩ

Emma: help me decide which library to use for my http server in a python project. It should be lightweight, the project is small

Antwort: For a small, lightweight Python HTTP server, here are the top options: Built-in (no install needed)

http.server — Python's standard library module. Good for simple file serving or quick local servers, but not production-ready and lacks routing.

Lightweight frameworks

Flask — The classic choice for small projects. Minimal boilerplate, great ecosystem, easy routing. Slightly more than "micro" but very manageable. FastAPI — Modern, async-first, auto-generates docs. A bit more setup than Flask but excellent if you need an API with validation. Bottle — Single-file framework, zero dependencies. As minimal as it gets for a real web framework. Starlette — Async, lightweight, and what FastAPI is built on. Good middle ground if you want async without FastAPI's extra layer.

My recommendation For a small project, go with Flask if it's straightforward request/response, or FastAPI if you're building an API and want type safety + auto-docs. Both are well-documented and widely used, so you won't hit dead ends. If you truly want zero dependencies and minimal footprint, Bottle is the pick — the entire framework is one .py file. A few quick questions that might sharpen the choice: is this a REST API, a web app serving HTML, or just handling a few internal endpoints? And do you need async support?

Prahbdip:

  • Based on the following service implementation, suggest unit tests and edge cases that should/could be covered. How would I set up Mockito/Unit/Integrations tests?
  • Review the following implementation and identify potential issues related to maintainability, performance, or code quality
  • Fix the JavaDoc comments not compiling in this class
  • Looking at this file, the GlobalExceptionHandler contains more logic than it probably should, and several methods appear to be duplicated. How would you refactor this implementation to improve maintainability and reduce code duplication? (AI suggested grouping together exceptions based on status code and we removed all duplicated methods as the class was too fine grained)

Fabienne:

Ich möchte mittels PrimReacts Charts zur Darstellung von Temperaturverlufen nutzen, kannst du mir bitte einen Überblick verschaffen, welche Möglichkeiten es gibt?

Antwort: PrimeReact stellt die Chart-Komponente bereit, die auf Chart.js basiert. Für Temperaturverläufe über die Zeit eignet sich ein Line-Chart am besten. Die Komponente erwartet ein data- und ein options-Objekt: tsx Alternativ sind auch Bar- oder Area-Darstellungen möglich; für mehrere Sensoren …

In der Anwendung verhält sich das Scrollen in den Fenstern komisch, manchmal scrollt die Ansicht außerhalb des Fensters obwohl der Pointer im Fenster ist. Kannst du mir bitte erklären was der Grund sein könnte?

Antwort: Solches Verhalten entsteht häufig, wenn der Scroll-Zustand beim Re-Rendern verloren geht oder ein useEffect ungewollt auslöst. Du kannst die Scroll-Position über eine ref gezielt steuern bzw. erhalten: tsxconst containerRef = useRef(null); // gezielt scrollen, z. B. ans Ende: containerRef.current?.scrollTo({ top: containerRef.current.scrollHeight }); Achte außerdem darauf, dass abhängige Effekte nur bei den ...

Maria:

  • Mir wurde fürs Frontend noch folgendes Problem angegeben (siehe Screenshot); fasse zusammen, was da zu tun ist, wo man das reparieren sollte, warum und wie. Mache nichts bis ich es bestätige

  • In der DeviceManagementView sollen dekommissionierte Sensor Stations nicht mehr bearbeitbar oder löschbar sein. Schau dir den Code an und erkläre mir, wie man das sauber umsetzt, und was ich alles beachten muss

  • Ich will die Bezeichnung "Deleted" überall in der Device Management Ansicht durch "Decommissioned" ersetzen. Wo müsste ich das überall ändern?

  • Der BLE-Scan dauert in der Praxis länger als der aktuelle Timer erlaubt, der Scan bricht zu früh ab. Schau dir an, wo der Timer gesetzt ist und was ein sinnvoller Wert wäre

  • Wenn ich im Absence view eine Änderung mache / Abwesenheit eintrage (oder lösche, etc.), wird das in der DepartmentAbsenceView nicht sofort angezeigt, also man muss die Seite neu laden. Warum ist das so? Könnte ich das durch Polling oder Ports lösen? Wie würde das konkret aussehen?

Clone this wiki locally