Entwicklung von Webanwendungen

Sie benötigen eine Webanwendung und sind auf der Suche nach einem kompetenten, fairen und zuverlässigen Full-Stack-Webentwickler für die Umsetzung Ihres Vorhabens?

Dann sind Sie bei mir richtig! Ich entwickle mit Ihnen zusammen eine massgeschneiderte Webanwendung für Ihr Unternehmen.

Vorteile von Individualsoftware

Heutzutage gibt es ein breites Angebot an freien und kommerziellen Softwarelösungen, die Sie in Ihrem Unternehmen einsetzen können. Dennoch kommt es immer wieder vor, dass keine Anwendung Ihren Anforderungen vollständig gerecht wird. Falls Sie die vorhandene Software dennoch einsetzen möchten, müssen Sie Ihre Arbeitsabläufe gegebenenfalls an die Software anpassen.

Bei massgeschneiderten Softwarelösungen ist dies umgekehrt. Hier passt sich die Software an Ihre Arbeitsabläufe an. Lassen Sie nicht zu, dass Software die Entwicklung Ihres Unternehmens hemmt, sondern nutzen Sie Software zur Entwicklung Ihres Unternehmens.

Webanwendungen sind flexibel und vielseitig einsetzbar und eignen sich daher für sehr viele Einsatzbereiche. Dank moderner Webstandards können sie sich auf Smartphones und Tablets sogar wie eine native App verhalten.

Durch die Optimierung von Unternehmensprozessen ermöglichen Webanwendungen beispielsweise die Steigerung der Produktivität Ihres Unternehmens oder können in Form eines interaktiven Kundenportals einen Mehrwert für Ihre Kunden bieten und der Kundenbindung dienen.

Ihrer Kreativität sind bei der individuellen Entwicklung von Webapplikationen keine Grenzen gesetzt.

So kann ich Ihnen helfen

Ich biete Ihnen die Umsetzung benutzerfreundlicher Webanwendung mit modernen Technologien zu fairen Bedingungen. Meine im Vergleich zu grösseren Softwareunternehmen schlanke Infrastruktur ermöglicht individuell entwickelte Webanwendungen auch für kleine und mittlere Unternehmen.

Bei mir erhalten Sie von der Planung über die Entwicklung bis hin zum Betrieb alles aus einer Hand. Die Sicherheit Ihrer Anwendung kommt dabei nicht zu kurz und wird von Beginn an in den Entwicklungsprozess einbezogen.

Was bringe ich mit?

Ich verfüge über langjährige Erfahrung in der Softwareentwicklung und habe in den letzten Jahren viele Tools und Bibliotheken zur Steigerung der Effizienz bei der Entwicklung neuer Anwendungen entwickelt.

Meine ersten Schritte in der Softwareentwicklung machte ich im Jahr 1999. Ab 2009 bis 2014 konnte ich meine Fähigkeiten während des Studiums der Informatik an den Fachhochschulen Enschede (Niederlande) und Bern (Schweiz) vertiefen. An der Fachhochschule Bern belegte ich mehrere Vertiefungsmodule mit dem Schwerpunkt IT-Sicherheit.

Eine detaillierte Beschreibung meines Werdegangs und eine Übersicht meiner Kompetenzen findet sich auf der Seite Über mich.

Wie arbeite ich und auf was lege ich Wert?

Wartbarkeit und Weiterentwicklung

Bei der Entwicklung von Software lege ich viel Wert darauf, dass die entwickelte Software einfach zu warten ist, sodass auch langfristig mehr Zeit in die Weiterentwicklung als in die Wartung investiert werden kann und die Weiterentwicklung nicht von einem hohen Wartungsaufwand gehemmt wird.

Verzicht auf Frameworks

Dies wird unter anderem durch den weitgehenden Verzicht auf Frameworks erreicht. Frameworks können zwar die Anfangsphase der Entwicklung stark beschleunigen, prägen die Architektur einer Anwendung jedoch stark und geben einen engen Rahmen vor, innerhalb dessen man sich bei der Entwicklung bewegen kann. Stösst man auf eine Limitierung des Frameworks, sind meist Verrenkungen nötig, um die gewünschte Funktion dennoch zu implementieren. Dies macht die Weiterentwicklung später unnötig kompliziert und langsam.

Zudem besteht die Gefahr, dass eine neue Version des Frameworks nicht abwärtskompatibel ist und man die eigene Software vor der Entwicklung neuer Funktionen mühsam anpassen muss, um das Framework weiter zu nutzen. Ein weiteres Risiko ist, dass die Entwicklung des Frameworks eingestellt wird. Dann müsste man die Weiterentwicklung des Frameworks selbst in die Hand nehmen, was oftmals mehr Arbeit verursacht als die Weiterentwicklung der eigentlichen Anwendung.

Oft werden Frameworks in diesen Fällen einfach nicht mehr aktualisiert. Dadurch werden zwischenzeitlich entdeckte Sicherheitslücken aber nicht mehr geschlossen und es besteht ein nicht unerhebliches Sicherheitsrisiko. Ich setze Frameworks daher nur ein, sofern sie einen erheblichen Mehrwert für das Projekt bringen und die Weiterentwicklung im Ernstfall mit den Ressourcen des Projekts gestemmt werden könnten.

Statt auf Frameworks setze ich auf Software-Bibliotheken. Diese stellen meist genau eine Funktion bereit und können bei Bedarf mit vertretbarem Aufwand durch eine andere Bibliothek oder eine Eigenentwicklung ersetzt werden.

Seiteneffekte

Neben einem geringen Wartungsaufwand ist mir wichtig, dass der Entwicklungsaufwand für neue Funktionen über die Zeit möglichst konstant bleibt oder durch eine gute Architektur sogar geringer wird. Bei vielen Softwareprojekten ist genau das Gegenteil der Fall und der Aufwand für die Entwicklung neuer Funktionen steigt mit der Zeit exponentiell an, da die Software komplexer und unbeherrschbarer wird.

Eine Strategie um dieses Ziel zu erreichen ist die weitgehende Vermeidung von Seiteneffekten bei der Programmierung. Dies bedeutet unter anderem, dass dem Programmfluss einfach gefolgt werden kann und dass bei späteren Anpassung am Code die Auswirkung einer Änderungen direkt klar sind und die Änderung keine anderen Funktionen unvorhersehbar beeinflusst.

Code-Lesbarkeit

Zudem achte ich darauf, dass mein Code gut lesbar ist und möglichst ohne gross nachzudenken verstanden werden kann. Dabei verzichte ich bewusst auf elegante beziehungsweise clevere Lösungen, die eine Aufgabe zwar mit weniger Codezeilen lösen, aber dafür eine grössere Denkleistung beim Lesen und Verstehen erfordern.

Hintergrund dieser Entscheidung ist, dass Code öfter gelesen als geschrieben wird und sich die gesparte Tipparbeit der cleveren Lösung daher nicht rechnet.

Reduzierung der Optionen

Oftmals wird in Software mit Optionen inflationär umgegangen. Wenn ein Nutzer sich eine neue Option wünscht, wird diese einfach hinzugefügt, ohne sich Gedanken über die Folgen für die Komplexität der Software zu machen.

Falls sich Optionen gegenseitig beeinflussen können, verdoppelt sich die Anzahl der möglichen Pfade durch den Code mit jeder zusätzlichen Option. Bei einer Option gibt es zwei Pfade, bei zwei Optionen vier, bei drei Optionen acht, und bei vier Optionen bereits 16 Pfade, und jeder Pfad benötigt mindestens einen Test.

Es erhöht sich aber nicht nur der Aufwand beim Testen, auch die Komplexität bei Änderungen am Code wird für den Entwickler deutlich erhöht, da er bei Änderungen alle möglichen Pfade im Kopf durchspielen muss, um sicherzustellen, dass er die Auswirkung der Änderung auf alle Pfade versteht.

Ich versuche daher jede zusätzliche Option zu vermeiden, indem ich genau evaluiere, ob die gewünschte Option einen echten Mehrwert bringt oder ob eine Standardvariante für alle Nutzer gar die bessere Lösung ist.

Tests

Mit automatisierten Tests stelle ich sicher, dass Anpassungen möglichst sorgenfrei vorgenommen werden können, da neu eingeführte Fehler mit den Tests bereits vor der Veröffentlichung einer neuen Version entdeckt werden können.

Falls zu Projektbeginn, zum Beispiel bei der Entwicklung eines Prototypes, aus Kostengründen auf umfangreiche automatisierte Tests verzichtet werden soll, entwickle ich in der Regel nach Fertigstellung der ersten Version für jeden gefunden Fehler einen Test, sodass derselbe Fehler auf keinen Fall mehrfach vorkommt.

Als Ergänzung zu automatisierten Tests oder als Kompensation für fehlende Tests können auch Testpläne zur manuellen Durchführung von Tests vor der Veröffentlichung neuer Versionen genutzt werden. Die Testpläne müssen nicht von mir und können beispielsweise unternehmensintern verfasst werden.

Trennung von Backend und Frontend mit einer API

In der Vergangenheit habe ich das Backend (Geschäftslogik und Datenbank) und Frontend (Benutzeroberfläche) meist getrennt entwickelt und auf dem Backend eine Schnittstelle (API) zur Kommunikation zwischen Backend und Frontend aufgesetzt. Dieser Ansatz hat sich in allen Projekten bewährt und bringt viele Vorteile, macht bei der Umsetzung aber auch mehr Arbeit, sodass bei kleineren Projekten unter Umständen auch eine monolitische Architektur Sinn macht.

Bei der Arbeit in einem Team mit Webdesignern oder User-Experience-Designern hat diese Architektur den Vorteil, dass die Webdesigner und User-Experience-Designer unabhängiger von den Softwareentwickler arbeiten können.

Ein weitere Vorteil ist, dass die Benutzeroberfläche und die Geschäftslogik sehr klar getrennt sind und das Frontend, welches in der Regel eine deutlich kürzere Lebenszeit als das Backend hat, einfacher modernisiert oder ausgetauscht werden kann.

Eine gute API ermöglicht auch die schnelle Entwicklung neuer Frontends, beispielsweise für neu aufkommende Geräte oder Plattformen. In der Vergangenheit wäre hier beispielsweise an das Aufkommen von Webanwendungen oder Smartphones-Apps zu denken. Für Softwaresysteme, die mit einer sauberen API ausgestattet waren, konnten mit relativ geringem Aufwand neue Weboberflächen fürs Internet oder Intranet, sowie Apps entwickelt werden.

Eine API macht auch die Integration Ihrer Software in andere Systeme möglich oder erlaubt beispielsweise Ihren Kunden eigene Anwendungen zu entwickeln, die auf Ihrer Software aufbauen.

Benutzeroberfläche

Bei der Entwicklung von Benutzeroberflächen sind mir eine einfache Bedienung und schnelle Ladezeiten wichtig. Diese beiden Faktoren erlauben eine effiziente Nutzung und steigern damit die Akzeptanz und gegebenenfalls Adoption bei den Nutzern.

Alle von mir entwickelten Webanwendungen können auch auf mobilen Geräten genutzt werden. Wie viel Zeit in die Optimierung für mobile Geräte investiert wird, hängt vom Kundenwunsch und Einsatzzweck ab. Viele Geschäftsanwendungen werden primär auf einem Desktop-PC genutzt und daher ist eine zeitintensive Optimierung oftmals nicht unbedingt nötigt.

Dank moderner Webstandards wäre es bei Bedarf jedoch sogar möglich, eine Webanwendung zu entwickeln, die sich auf Smartphones und Tablets wie eine native App verhält und mit einem Klick direkt aus der Anwendung heraus installiert werden kann.

Bei hohen Anforderungen an das Design kann auf Wunsch ein Webdesigner oder eine Webdesignerin zur Entwicklung der Anwendung hinzugezogen werden.

Benutzerfreundlichkeit

Bei der Entwicklung der Benutzeroberfläche achte ich darauf, dass sie intuitiv zu bedienen ist und die Nutzer bei der Verwendung nicht gross nachdenken müssen.

Alle für die Nutzung erforderlichen Informationen sollten im jeweiligen Kontext gegeben sein, sodass keine externe Dokumentation, die erfahrungsgemäss von den Nutzer nur selten bei Problem zu rate gezogen wird, erforderlich ist.

Um die Benutzerfreundlichkeit nach Fertigstellung der ersten Version weiter zu verbessern, evaluiere ich jede Supportanfrage und treffe Massnahmen, um ähnliche Anfragen in Zukunft zu verhindern.

Barrierefreiheit

Bei der Entwicklung der Benutzeroberfläche achte ich auf die Einhaltung von Webstandards und klar strukturierten HTML-Code. Damit ist die Anwendung beispielsweise mit einem Screenreader bereits gut nutzbar.

Falls besondere Anforderungen an die Barrierefreiheit bestehen, können diese berücksichtigt werden.

Noch nicht überzeugt?

Vielleicht kann Sie ja ein Blick auf meine Referenzen im Bereich der Softwareentwicklung überzeugen? Ich konnte in den letzten Jahren vielen kleinen und mittleren Unternehmen (KMU), aber auch führenden Konzernen, erfolgreich bei der Umsetzung ihrer Anliegen helfen und beispielsweise ihre Unternehmensprozesse optimieren.

Interessiert?

Dann schreiben Sie mir eine E-Mail direkt an email@marcobeierer.ch, kontaktieren Sie mich über das Kontaktformular oder rufen Sie mich unter 033 508 53 52 an.

Gerne können wir Ihr Anliegen zeitnah besprechen und die Möglichkeiten einer individueller Software für Ihr Unternehmen evaluieren.

Informationen zum Newsletter