Softwareentwicklung

Auf einen Blick:
  • Als promovierter Experimental-Physiker und langjähriger IT-Experte bekommen Sie mit mir zwei Experten in einem!

  • Sie profitieren von meinem Wissen und meiner Erfahrung aus mehr als 20 Jahren erfolgreicher Tätigkeit als professioneller Softwareentwickler und Freelanceer. Davor habe ich bereits einige Jahre in Studium und Forschung programmiert.

  • Sauber erstellte Software ist Ihre solide Basis für die Zukunft. Weder Perfektionismus noch das rücksichtslose Eingehen technischer Schulden sind akzeptabel: wie ein immer weiter wachsender Schuldenberg belastet es die Entwicklung der Firma. Stattdessen ist es wünschenswert, übersichtliche, zuverlässige und leicht wartbare Software zu entwickeln.

  • Ich biete Leistungen in Analyse, Design, Implementierung, Dokumentation, Tests und auch Benutzertraining an, zugeschnitten auf Ihren Bedarf.

  • C/C++, Java, Skriptsprachen (Python, shell, awk, Perl, make, Ruby), html und xml, Versions- und Änderungsmanagement, auf UNIX, Linux, Windows

  • Spezialwissen: Universitäts- und Industrieforschung, Logistik, Automobil, Produktionssteuerung, Bildanalyse in schwierigen Szenen, Röntgen- und Millimeterwellen-Optik, Performance Tuning, Softwarequalität

Wie erreicht man eine übersichtliche, zuverlässige und leicht wartbare Software?

Wann hatten Sie zuletzt dieses Gefühl / Gedanken?

  • "Hier sollte man eigentlich mal aufräumen, das gibt bestimmt mal Ärger."
  • Diese Schnittstelle sollte klarer dokumentiert werden
  • Diese Quellcode-Module sind viel zu eng verknüpft, geradezu "verwurstelt"
  • Unser Coding Standard hilft uns, übersichtlichen Code zu schreiben und ist gut verständlich.
  • Dieser Teil ist schlecht getestet. Die vorhandenen Tests sind nicht aussagefähig genug
  • Die Dokumentation ist veraltet, wichtige Konzepte sind nicht dokumentiert und stehen nur irgendwo in Emails.
  • Jetzt habe ich ewig gebraucht, um diesen Fehler zu finden. Das hätten wir uns sparen können wenn wir ...
  • Das Projekt war so chaotisch, wir hatten so viele unvorhergesehene Schwierigkeiten, und nur um es fertig zu bekommen, haben wir gepfuscht.
  • Dieses Ereignis hat der Firmenkultur und dem Team nicht gut getan.
  • Alle stehen unter Druck, deswegen gibt es häufig Streit.
  • Ich bin dankbar für die offene Kommunikation und die vertrauensvolle Zusammenarbeit in meinem Team: dieses Problem war sehr schnell und unbürokratisch zu lösen

Technische Schulden sind eine in der Informatik gebräuchliche Metapher für die möglichen Konsequenzen "schlechter" Software: man versteht darunter den zusätzlichen Aufwand, den man für Änderungen und Erweiterungen einplanen muss. In einem positiven Bereich zu bleiben und nicht in technische Schulden zu rutschen ist Aufgabe nicht nur der Software-Entwickler, sondern auch der Projektmanager. Sie versuchen, auch in Zeiten schwieriger Randbedingungen eine positive Arbeitskultur im Team aufrecht zu erhalten:

  • Befolgen gängiger Designprinzipien nach dem Stand der Technik
  • Ein durchdachtes Konzept von Code Standards, das von den Entwicklern auch gelebt wird
  • Sinnvoller Level von Dokumentation, die regelmässig gepflegt wird und allen Team-Mitgliedern zugängich ist
  • Gute Infrastruktur
  • Ausreichende und sinnvolle Tests
  • Übersichtliche Struktur des Quellcodes
  • Gemeinsame "best-practice" Strategien sind allen Mitgliedern des Teams vertraut
  • Statische Quellcode-Analyse und Beachtung von Compilerwarnungen
  • Offene und vertrauensvolle Zusammenarbeit im Team und gute Fehlerkultur
  • Ein Gleichgewicht von agilem Vorgehen und Vorausschau auf zukünftige Anforderungen
  • Sinnvolle Gewichtung von kurzfristigen Anforderungen des aktuellen Projekts und langfristigem Erfolg
  • Angenehme äußere Arbeitsbedingungen: Klima, Helligkeit, kein Lärm, genug Arbeitsplatz
  • Continuous Integration (CI) Prozess und Gebrauch von Software-Metriken