Dienstag, 16. Januar 2018

Mit Firebase schnell Prototypes erstellen

Prototyping

Die beste Definition von Prototyping fand ich im Buch "Sprint: Wie man in nur fünf Tagen neue Ideen testet und Probleme löst". Dort wird ein Gleichnis mit den Requisitenbauern in Westernfilmen beschrieben. Für die Filmproduktion reicht es, nur die Fassade eines Saloons zu erstellen, um dem Zuschauer den Eindruck zu vermitteln, dass dort ein Saloon steht. Es gibt keinen Barkeeper, keine Tische und keine Drinks. Aber man hat den Eindruck, dass es alles dort hinter der Tür vorhanden ist.

Ganz ähnlich ist das in der Entwicklung. Jedwede Lösung muss zügig Vorgesetzten, Investoren oder Kunden  präsentiert werden, um Feedback für die Funktionen einzuholen, die gerade entwickelt werden. Dabei muss alles so wirken, als ob es schon tatsächlich funktioniert. Der Faktor Zeit ist oft ein wesentliches Problem bei der Erstellung.

Gerade in neuen Projekten oder Startups fehlt es gerne an einer Benutzermanagementlösung, hier bieten einige Anbieter, wie zB Auth0[1] oder Firebase[2] vorgefertigte, einfach zu integrierende Lösungen, die es ermöglichen die zeit besser zu nutzen.

Firebase

Firebase ist eine Service- Plattform, welche zunächst auf Mobile Anwendungen ausgelegt war, 2014 von Google übernommen wurde und im letzten Jahr für Webanwendungen geöffnet wurde.

Da wir hier aber von Webanwendungen reden, möchte ich hier nur auf die Funktionen eingehen, welche für Webanwendungen aktuell verfügbar sind.
  1. Firebase Auth - Benutzermanagement
  2. Cloud Firestore - RealTime Datenbank mit Synchronisierung
  3. Firebase Storage - Dateimanagment
  4. Firebase  Hosting - Hosting von statischen Seiten
  5. Firebase Functions - FaaS Hosting

Firebase Auth

Warum sollte man nun für Prototypen auf Firebase Auth setzen?

Zeitersparnis


Lösungen für Integrationen gibt es zu Hauf, evtl. kann auch mein Starter- Projekt für Angular[3] eine Vorlage sein, die in wenigen Minuten eingerichtet ist. Minuten, nicht Tage!  Gerade bei Prototypen kommt es auf die Zeit an, denn jedwede Ablenkung von der eigentlich zu präsentierenden Funktion ist hinderlich.

Kostenersparnis


Viele der Anbieter für Cloud- Authentifizierung bieten eine kostenlose Einstiegsstufe an. Bei Firebase scheint für Auth die Stufe bei unendlich zu liegen (ausser man nutzt Telefon Authentifizierung), bei auth0 ist man bei 7.000 Benutzern, bis Kosten anfallen.

Funktionsumfang


Firebase Auth bietet nicht nur die Möglichkeit an, sich über E-Mail und Passwort anzumelden, man kann sich auch mit externen Authentifizierungsmöglichkeiten anmelden, z.B. Google, Facebook, Twitter und GitHub.

Hier liegen unglaubliche Vorteile. Zum einen ist die "Registrierung" für potentielle Kunde eine Hürde, welche durch die Einbindung von Google oder Facebook als Alternativen deutlich reduziert wird. 

Zum anderen gibt es die "Unart" sich mit Wegwerf-  E-Mails zu registrieren, da man keine Lust auf Marketingmails hat. Google und Facebook liefern hier verifizierte E-Mails.

Zusätzlich beinhalten die externen Authentifizierungen schon Daten, die man sonst mühselig sammeln müsste, Klarnamen, Geschlecht, Geburtsdatum, Sprache und Wohnort zum Beispiel. Jeder weiß, dass jedes zusätzliche Feld bei der Registrierung eine zusätzliche Hürde für den Benutzer darstellt.

Fazit

Firebase Auth ist eine sehr gute Lösung für Prototypen und auch darüber hinaus. Die Integration gelingt schnell, der Funktionsumfang ist für die meisten Anwendungsfälle mehr als ausreichend und die Kosten sind 0. Gerne würde ich auch deine Meinung dazu hören. Schon mal mit Firebase gearbeitet oder zu mindestens drüber nachgedacht?

Links




Sonntag, 7. Januar 2018

Ständiges Lernen

Sie haben sich als Entwickler einen Beruf ausgesucht, bei dem unser aktuelles Wissen in wenigen Jahren veraltet sein wird und Sie sind damit gezwungen, ihr ganzes Berufsleben weiter zu lernen. So oder zu mindest so ähnlich beschrieb mein damaliger Studienleiter das Berufsleben eines Entwicklers. 14 Jahre nach dem er das gesagt hat, kann ich ihm uneingeschränkt Recht geben. Dieses Jahr ist auch wieder ein Jahr, in dem es neue Trends, Frameworks und Sprachen geben wird, die ich unbedingt erforschen muss.




Angular + Typescript

Angular[1] hat schon in der ersten Version, die noch komplett auf Javascript basierte, die Entwicklerwelt im Sturm erobert. Mit Version 2 wurde Typescript[2] als Sprache zum Standard erkürt und der Siegeszug ging weiter. Ende des letzten Jahres wurde die Version 5 (Vorgänger war 4, Version 3 gab es aber nicht.) veröffentlicht. Typescript gehört nicht nur wegen des Einsatzes in Angular zu den aufstrebenden Sprachen. 

MEAN und Nest.JS

MEAN, also MongoDB + Express Framework + Angular.js + Node js ist eines dieser Sachen, die zu meinem Studiumstart noch undenkbar gewesen sind.

MongoDB als NoSQL - Dokumentendatenbank, welche einfach zu verarbeitende JSON-Dokumente speichert ist das wohl am meisten verbreitete Datenbanksystem der NoSQL Bewegung

Node.js ist ein Javascript Server auf Basis von V8, Google's Javascriptlaufzeitumgebung, welche auch schon im Chrome Browser zum Einsatz kommt.

Express ist das bekannteste Framework um Webanwendungen zu erstellen.

Weil diese 4 Techniken besonders gut zusammenarbeiten, bilden diese den MEAN-Stack.

Nest.js[3] ist ein Aufsatz auf Node.js und das Express Framework, welcher nicht nur auf Typescript als Sprache setzt, sondern auch mit Hilfe der Typescript-eigenen Decorators (ähnlich den Annotationen in Java) uns Entwicklern einiges an Schreibarbeit abnehmen will. Das Projekt ist zwar noch sehr "jung", aber hat mit über 3000 GitHub- Sternchen schon einiges an Aufmerksamkeit erzeugt.


Das sind zu mindestens meine Ziele für dieses Jahr, aber in der schnelllebigen Zeit der Entwickler, kann das schon in wenigen Wochen ganz anders aussehen. Mein Berufsleben ist ständiges Lernen, und ich liebe es.

Links

[1] https://angular.io/
[2] https://www.typescriptlang.org/
[3] https://nestjs.com/

Freitag, 5. Januar 2018

Mein Vorsatz 2018


Alle Jahre wieder



Zu Beginn eines neuen Jahres beginnt jeder damit sich irgendetwas vorzunehmen, dass er am Ende des Jahres auf einer "Erledigt- Liste" abhaken kann. Das ist bei mir nicht anders. Dabei gibt es 2 Arten von diesen Vorhaben: Projekte und Veränderungen.

Projekte

Als Entwickler habe ich eine einfache Definition von dem Wort Projekt: es hat ein zeitliches Ende.

Typische Beispiele sind Sprachen lernen, Ort besuchen oder sich etwas besonderes trauen.

So habe ich mir zum Beispiel vorgenommen, dass ich mehr Bücher lese. Ich habe im letzten Jahr einige Bücher zum Thema Startup gelesen, vielleicht stelle ich das ein oder andere hier auch mal vor.

Letztes Jahr habe ich mir auch vorgenommen eine Diät zu machen. 10 Wochen mehr Sport und auf gewisse Lebensmittel verzichten. Dieses Projekt habe ich auch durchgezogen und 10 Kilogramm verloren. Doch nun ist wieder Januar und ich wiege genau soviel wie vor der Diät.

Mein eigentliches Ziel, dauerhaft etwas weniger Gewicht zu haben, habe ich aber nicht erreicht.

Veränderungen

Im Gegensatz zu Projekten haben Veränderungen keinen Zeitlichen Rahmen. Man will dauerhaft etwas verändern. Natürlich zum Guten. Man will mit dem Rauchen aufhören, dauerhaft. Man will weniger wiegen, dauerhaft.

Im Gegensatz zu Projekten liegt hier die Schwierigkeit darin, dran zu bleiben, durchzuhalten und sich immer wieder neu zu motivieren.

Mein Vorsatz

Für das Jahr 2018 habe ich mir vorgenommen "Running and Reading", also Laufen und Lesen.
Jeder Woche mindestens zweimal 30 Minuten Sport und 30 Minuten Lesen.

Und natürlich lernen, denn als Entwickler muss man immer auf dem neuesten Stand sein. Und von meinen Fortschritten berichten.










Foto von JESHOOTS.com von Pexels https://www.pexels.com/de/foto/brille-champagner-dekoration-drinnen-714703/