Viele haben super Ideen für neue Web-Platformen oder neuartige Software, aber ihnen fehlt das Wissen um den Ablauf einer qualitativ hochwertigen Softwareentwicklung. Der Artikel richtet sich an solche Startups sowie an Software-Entwickler und versucht eine Einführung in die wichtigsten Punkte.

Verwenden Sie ein System zur Versionsverwaltung

Jede Person, die am Projekt beteiligt ist, benötigt eine Versions-Verwaltung für ihre Dateien.

Was?? Egal ob Sie mit Excel, Photoshop oder Quellcode-Dateien arbeiten. Alles sollte an zentraler Stelle abgelegt und versioniert werden.

Warum?? Wann haben Sie das letzte Mal zehn Emails mit Daten in einer neuen Version und natürlich uneinheitlichen Namen erhalten? Die Versionsverwaltung, als zentraler Knoten, vermeidet solch leidige Sucherei. Daneben können Sie bei z.B. Fehlern zu früheren Versionen zurückgehen, den Schuldigen identifizieren und insgesamt viel ruhiger schlafen, da Sie wissen, dass es stets ein zentrales Backup gibt.

Nutzen Sie Git, Subversion oder Services wie DropBox und Amazon S3. Die jeweilige Software zu installieren und sich mit ihr vertraut zu machen, dauert zwischen 5 min und einer Stunde, abhängig von Ihren Fähigkeiten.

Verwenden Sie ein Ticket- / Projektmanagementsystem

Zusammenarbeit ohne Projektmanagementsoftware ist ein Blindflug, vor allem weil man vieles so schnell vergisst. Zentraler Teil solcher Software ist das Ticketsystem mit der ToDo-Liste. Es verteilt die Arbeit und ist bildet die Controlling-Basis. Sie haben den Überblick, können Fortschritte sehen, Zeiten schätzen oder Problembereiche identifizieren aber vor allem reduziert es E-mail-CC Spam. Daneben kann es als Kunden-Feedback-System oder auch der Kostenkontrolle dienen.

Meine Empfehlung ist Redmine, welches auch als Hosted-Service z.B. bei plan.io angeboten wird.

 

Verwenden Sie automatisierte Tests

Bei Software-Tests neigt man dazu, zu denken: „Ich habe alles mindestens einmal angeklickt, also funktioniert es.“ Nun ja, das ist sicher richtig, aber lässt sich jede Funktion einer Software vor dem Release auf diese Weise testen? Definitiv nicht. Deswegen benötigt man automatisierte Tests. Ich hatte ursprünglich einen PHP-Background und war mir dessen nicht bewusst, bis ich mit dem Framework RubyOnRails angefangen habe. In Ruby und anderen Sprachen(python, java) gibt es eine Test-Kultur, die PHP lange Zeit völlig fehlte. Dies ist seltsam, da für PHP seit langem Test-Frameworks verfügbar sind (Simpletest oder Phpunit).

Eine weitere gute und einfache Testmethode bietet Selenium, das als Firefox-Plugin sogar „normale Nutzer“ in die Lage versetzt, automatisierte Tests durchzuführen. Ich will das Thema Software-Tests oder sogar Test-getriebene Entwicklung nicht weiter vertiefen. Merken Sie sich einfach folgendes: „Automatisierte Tests verlängern Ihre Schlafzyklen!“


Verwenden Sie einen automatisierten Workflow für die Auslieferung von Software

Das Ausliefern von Software kann mit diversen Aufgaben verbunden sein: Sie müssen aus dem Versionierungs-System den aktuellen Quellcode herunterladen, die Daten auf den Webspace transferieren, Quelldateien komprimieren, Datenbank-Updates oder automatisierte Tests durchführen, das System bei Fehlern zurücksetzen oder gar Serverprozesse neustarten. Das alles manuell zu erledigen ist ziemlich mühsam, und vermutlich wird ein Schritt oder die richtige Reihenfolge vergessen. Diese Aufgaben zu automatisieren ist nicht trivial, aber es gibt kostenlose Tools, wie zum Beispiel ANTCapistrano oder Chef, die dabei helfen. Ein anderer Aspekt ist der Zeitaufwand. Leicht geht ein halber Tag für die Installation drauf und, falls Fehler auftreten, ein Weiterer um alles zurückzusetzen.

Quellcode Kommentieren

Den Quellcode zu kommentieren, ist die wohl grundsätzlichste Regel, die Entwickler befolgen sollten. Es ist nicht sehr angenehm stundenlang herauszufinden was der Code eigentlich macht, ganz zu schweigen von der Suchen nach Fehlern. Als Kunde sollten Sie auf Kommentare bestehen, vor allem da Ihr Programmierer morgen von einem Lastwagen überfahren werden kann.

Ein weiterer Grund für Kommentare ist die Möglichkeit, automatisiert eine Software-Dokumentation zu erstellen. Mittels einer spezielle Textformatierung können dann Tools wie Javadoc, PhpDocumentor oder Rdoc einfach zu lesende Webseiten generieren.

Programmier-Richtlinien

Als Anwender müssten Sie sich darüber eigentlich keine Gedanken machen, sollten aber zumindest sicher stellen, dass solche Richtlinien existieren. Diese Regeln beinhalten z.B. die Namensgebung für Dateien, Datenbanken, Tabellen, Klassen und Funktionen. Darüber hinaus sollten sie den Programmierstil in Bezug auf Einrückung, Leerzeichen, Tabs oder Kommentare definieren.
Ziel all dieser Maßnahmen ist es, den Code einheitlich und „schöner“ zu machen, so dass ein Entwickler die Software schneller lesen und verstehen kann.

Nutzen Sie (OpenSource-)Frameworks

Der Einsatz von Frameworks bewahrt Entwickler davor das Rad neu zu erfinden. Ganz nebenbei hilft die Abstraktions-Schicht Codezeilen und damit Zeit zu sparen.

Auftraggeber können auf eine gewisse Stabilität in Bezug auf die Qualität des Codes oder auch des (Community) Supports vertrauen. Noch wichtiger aber, ist die Reduzierung der Abhängigkeit vom Entwickler. Es gibt nichts Schlimmeres als das Durcheinander eines anderen zu beseitigen. Weshalb es ziemlich teuer werden kann einen Programmierer zu finden, der freiwillig seine Nase in den Code-Schlamassel eines anderen steckt.

Frameworks gibt es für jede Programmmiersprache. In einem durchschnittlichen Web-Projekt werden Sie voraussichtlich mehrere verwenden. Ich nenne Ihnen nur einige Beispiele:

  • Model / View / Controller (MVC) Framework wie CakePHP, Ruby on Rails, Django für die Main Intelligence

Meiden Sie die Vermischung von Programmiersprachen

Jede Sprache dient einem bestimmten Zweck. In einem Web-Projekt kommen zum Beispiel folgende zum Einsatz:  CSS visualisiert, HTML strukturiert die Inhalte, JavaScript verbessert das Handling und eine serverseitige Sprache(php, Ruby) sorgt für die Hauptintelligenz. Diese Sprachen sollten in jeweils eigenen Dateien, so weit wie möglich voneinander getrennt werden.

Es hat lange gedauert bis sich die vollständige Trennung von CSS(in Stylesheet Dateien) und HTML durchgesetzt hat, aber die Vermischung von JavaScript mit HTML, PHP, Ruby etc. ist immer noch ziemlich beängstigend. Ich weiß, dass die meisten Entwickler nur langsam in die Geheimnisse von JavaScript eintauchen und auch ich habe es gehasst. Daneben erleichtern Frameworks wie Ruby on Rails Einstieg, da sie im Hintergrund Javascript generieren und der Programmierer bei seiner gewohnten Sprache bleibt. Nachgelagert birgt eine solche Mixtur allerdings Zündstoff zum Beispiel wenn es Browser-spezifische Bugs gibt, bei XSS-Attacken, bei Fragen der Performance oder ganz einfach wenn JavaScript deaktiviert ist.

Weitere Gründe die auch für die Trennung anderer Sprachen gelten:

  • einfachere Wartung
  • besserer Umgang mit Bugs
  • ein besseres Profiling
  • höhere Qualität des Codes, weil getrennt getestet werden kann
  • Sie brauchen nur einen Experten für eine einzelne Programmiersprache
  • Teile können dynamisch ausgetauscht werden z.B.  ein eigenes CSS Stylesheet für mobile Browser oder ein spezielles iPhone-JavaScript


Fazit

Als Kunde bekommen Sie bessere Software und eine größere Kontrolle darüber

Als Entwickler können Sie für eine bessere Qualität höhere Preise verlangen, bei gleichzeitig geringeren Kosten