I'm a coder - Lessons Learned anwenden

Während der Software Entwicklung lernt man viel, teils in Bezug auf neue Programmiersprachen und ähnliches und teils allgemeine Dinge. Zu letzteren zähle ich so etwas wie: “Keine IDE Updates kurz vor einem Release”, nicht “einfach so Libraries aktualisieren” und “das sollte einfach so funktionieren” ist meistens nicht wahr. Die Liste geht noch weiter, quasi unendlich lang, doch worum es mir geht ist diese Lesson Learned auch anzuwenden.
Wir wissen diese Dinge, doch wir vergessen, wir sind im Stress und missachten eigentlich klare Abläufe und dadurch machen wir Fehler. Ich selber habe erst vor kurzem auf meinem privaten System ein Update von IntelliJ Idea 18.1 auf 19.2 gemacht, ohne auch nur eine Sekunde über aktuelle Projekte nachzudenken. Dies wurde natürlich prompt damit quittiert, dass das Projekt nicht mehr baute und ich erstmal das Projekt und die IDE debuggen musste, statt ein neues Feature zu entwickeln.
Um Lessons Learned anwenden zu können muss man sich erst einmal an sie erinnern, somit hilft es im ersten Schritt sie aufzuschreiben. Egal ob in einem Wiki oder auf einem Post-It am Monitor, man sollte den für sich persönlich richtigen Platz finden. Denn hier geht es vor allem um Sichtbarkeit im Alltag. Im nächsten Schritt versuche ich aktuell meine Aufzeichnungen zu bestimmten Kontexten von Zeit zu Zeit erneut zu betrachten, denn was hilft die beste Dokumentation, wenn man sie nicht liest. Um die entsprechenden Dinge dann final anwenden zu können bleibt eigentlich nur der gesunde Menschenverstand. Nicht überstürzt handeln, Backups erstellen, erst prüfen ob z.B. mit Updates Probleme bekannt sind und ähnliches kann helfen Probleme zu vermeiden. Auch Automatisierung in Form von Skripten oder ähnlichem kann hier und da vor Fehlern schützen. Generell fasse ich für mich die Abläufe in Document (z.B. Wiki), Repeat (regelmäßig erneut lesen), Apply (denken und anschließend handeln) und Protect (Skripte, Berechtigungen restriktiv setzen) zusammen.
Mich würden eure Lesson Learned im Bereich der IT interessieren und ich würde mich freuen einige in den Kommentaren finden zu können, denn wir alle lernen nicht aus.
Flutter App Development - Einleitung und Setup

Seit dem Jahresstart entwickle ich aktiv Flutter Apps und meine Erfahrungen und Learnings möchte ich gerne mit euch teilen. Aus diesem Grund starte ich heute meine Newsreihe zum Thema Flutter App Development. Der Fokus liegt dabei vorerst auf dem Smartphone Teil von Flutter, auch wenn die ersten Flutter Desktop open_in_new und Flutter Web open_in_new Vorschauversionen bereits zu haben sind.
Als kleine Einleitung zum Thema ein paar Worte zu Flutter selbst. Flutter ist ein Framework für die Programmiersprache Dart open_in_new. Diese beiden Komponenten bilden die Basis für Googles Cross-Platform Lösung. Flutter ist sehr User Interface zentriert und erlaubt entsprechend diverse Dinge einfach und schnell umzusetzen. Dabei wird eine eigene Rendering-Engine eingesetzt, um alles mit flüssigen 60+ Frames anzeigen zu können. Die nativen UI-Elemente werden dafür vom Flutter Team nachprogrammiert. Die Entwicklung selbst erfolgt mit bekannten IDEs wie Visual Studio Code, Xcode oder Android Studio. Hot Reload macht die Entwicklung dabei extrem schnell. Im unteren Teil der News findet ihr ein kurzes Teaser Video, welches euch diverse relevante Punkte zu Flutter in unter drei Minuten präsentiert.
Microservices und das Twelve-Factor Apps Prinzip

Microservices sind nicht erst seit gestern ein Trend. In den letzten Jahren entstanden und entstehen mehr und mehr modulare Anwendungen, die eher klein sind und miteinander interagieren und sich ergänzen, anstatt als ein großes monolithisches Programm zu funktionieren.
Doch Microservices sind keine problemlose und wartungsfreie Lösung, denn vor allem wenn man Dinge nicht ordentlich strukturiert und dokumentiert kann es schnell in einem absoluten Chaos enden. Um genau diesen Aufbau der Microservices selbst, den Einsatz und die Wartung kümmert sich das Twelve-Factor App Prinzip.
Die Prinzipien starten mit der Codebase, welche in einem Versionsmanagementsystem liegen soll. Weiter geht es mit Abhängigkeiten, die explizit deklariert und isoliert genutzt werden sollen. An der dritten Stelle steht die Konfiguration, welche durch Umgebungsvariablen definiert werden soll. Ebenso wie der Microservice selbst, sollen Unterstützende Dienste behandelt werden, also als unterstützende und angehängte unabhängige Ressourcen.
I'm a coder - Der Wert einer guten Community

Niemand weiß alles und deswegen ist es in der Softwareentwicklung meiner Meinung nach sehr wichtig eine aktive Community zu haben. In einer solchen kann man sich bezüglich der genutzten Sprache, Frameworks und ähnlichen Dingen austauschen. Denn auch wenn es Dokumentationen gibt, die erklären wie man performant eine Sprache nutzt oder wie man in einem Framework konkrete Use-Cases umsetzen kann, so gibt es zu viele unterschiedliche Aufgaben, als das alles dokumentiert sein könnte.
Community-Portale wie Stack Overflow open_in_new, Gitter open_in_new oder auch öffentliche Slack oder RocketChat Channels bieten hier eine Möglichkeit sich asynchron oder synchron auszutauschen und sich gegenseitig zu helfen. Vor allem Stack Overflow dürfte fast jedem Entwickler ein Begriff sein, denn z.B. im Android Bereich findet man quasi alles was man braucht dort.
I'm a coder - Grafiken sagen mehr als Texte

Obwohl ich aktuell eigentlich viel im Coding Bereich zu sagen hätte, komme ich zurzeit leider nicht wirklich dazu umfangreiche I’m a coder Beiträge zu erstellen. Doch heute nehme ich mir, bei entspannten 32°, einfach mal wieder etwas Zeit.
Thema ist heute die Erstellung von Grafiken und Diagrammen zur Erklärung von Konzepten oder Abläufen innerhalb von Software. Denn wer kenn es nicht, man hat Software entwickelt, verschiedene Konzepte und Ansätze angewendet und dann vergehen einige Monate und vieles gerät in Vergessenheit oder aber ein neues Teammitglied möchte eingearbeitet werden. Bei mir trifft aktuell beides zu, denn bei meinen privaten Projekten vergesse ich durch häufige Kontextwechsel gerne Dinge und auf der Arbeit versuche ich gerade neue Kollegen in mein aktuelles Projekt einzubinden.
GitHub Satellite - Was gab es neues?

Vor wenigen Tagen fand das GitHub Satellite Event in Berlin statt. Dort gab es Informationen zu neuen Features und generellen Plänen der Code Plattform. Die drei Hauptkategorien Security, Enterprise und Community bildeten die Basis für die Ankündigungen.
Im Community Bereich gab es die Vorstellung von GitHub Sponsors. Mit diesem Vorstoß ist es möglich Entwickler oder Projekte direkt via GitHub finanziell zu unterstützen und fürs erste Jahr verdoppelt GitHub Spenden sogar. Meiner Meinung nach eine extrem gute und passende Idee, denn es gibt zwar z.B. mit Patreon open_in_new ähnliche Dienste, aber eine direkte Integration in die Plattform selbst schadet meist nicht. Aktuell befindet sich GitHub Sponsors in der Beta Phase. Ebenfalls neu sind einige Social Tools, welche euch mehr Metriken bieten und z.B. zeigen wer euren Code nutzt.
Im Enterprise Bereich gibt es nun mehr Einstellungsmöglichkeiten in Bezug auf Berechtigungen. Die dazugehörigen neuen Rollen und die Internal Repositories bieten Firmen darüber hinaus mehr Möglichkeiten mit internem Code zu arbeiten.
Lohnen sich neue Programmiersprachen?

Durch meine Besuche in der Flutter Welt bin ich in der letzten Zeit offener für neue Sprachen, neue Ansätze und Versuche selbige bei meinen aktuellen Projekten einzusetzen. Entsprechend baue ich gerade ein kleines privates Projekt in Flutter und sammle dabei Ideen für eine Tutorial / How To Reihe zu Flutter und der Entwicklung mit Googles Cross-Platform Framework.
Doch nicht nur Dart, was die Basis von Flutter ist, ist aktuell ein Thema für mich. Auch Go ist ein sehr wichtiges Thema für mich, denn ich schreibe gerne Microservices. Entweder für meinen Blog oder für andere Projekte die ich noch plane oder bereits umsetze. Und für diese Art von Projekten ist Go extrem praktisch. Ideen habe ich viele, Zeit leider eher wenig.
Doch durch einige lange Wochenenden hatte ich in den letzten Wochen etwas Zeit, mir vor allem Go mal etwas näher anzusehen und war sehr angetan. Denn vieles von dem was ich plane kann Go, teilweise von Haus aus und ohne zusätzliche externe Abhängigkeiten. Ein Umstand der kein Muss ist, aber durchaus praktisch sein kann. Alles in allem freue ich mich auf jeden Fall die Zeit investiert zu haben, denn insgesamt bin ich glaube ich auf längere Sicht schneller und kann bessere Software schreiben, als ich mit Java umsetzen könnte.
VSCode Shortcuts + Keymaps + Cheat Sheet

Egal wie gut ein neuer Editor oder eine neue IDE ist, neue Shortcuts sind immer problematisch. Denn eben diese machen die meisten Programmierwerkzeuge erst wirklich performant in der täglichen Nutzung. Doch meistens unterscheiden sie sich in den verschiedenen Tools und können so für die eine oder andere Verwirrung sorgen.
Ich habe bekanntlich vor kurzem angefangen VSCode zu nutzen und interessiere mich entsprechend für die dort genutzten Shortcuts. Selbige unterscheiden sich wie erwartet teils stark von IntelliJ Idea, bzw. Android Studio. Aus diesem Grund freue ich mich sehr das es einen übersichtlichen Cheat Sheet gibt, welchen ich für ebenfalls interessierte in den Related Links hinterlegt habe. Es ist darüber hinaus natürlich auch möglich Shortcuts in den Einstellungen zu ändern, dies ist mir persönlich aber meist zu aufwendig.
Was allerdings sehr spannend ist, ist die Möglichkeit komplette Keymaps aus dem Marketplace einzubinden. Dies geht direkt in VSCode oder aber über die Marketplace Website (siehe Related Links). Ein extrem praktisches Feature, da man sich den Editor entsprechend der eigenen Gewohnheiten anpassen kann.
Ich wechsle zu Visual Studio Code

Vor einiger Zeit schrieb ich über meinen Wechsel zum Editor Atom für Web-Angelegenheiten und heute geht die IDE / Editor Reise wieder einmal weiter. Denn die Nutzung wurde in den letzten Monaten leider immer unkomfortabler. Grund dafür ist die Menge an Dateien, welche der Editor verwalten muss. Ich habe mittlerweile über 3500 Beiträge geschrieben und entsprechend viele Dateien existieren in meinem Posts Ordner.
Hier kommt nun Visual Studio Code ins Spiel. Der Editor von Microsoft lief mir schon das eine oder andere Mal über den Weg, allerdings hatte ich bis dato nie Bedarf. Diese Situation hat sich nun geändert und nach einigen Gesprächen mit Kollegen auf der FOSDEM entschied ich mich das Ganze mal zu probieren. Visual Studio Code ist dabei schnell, bietet eine flexible und nach Wunsch sehr minimalistische UI, kann erweitert werden und bietet zugleich von Haus aus schon einige sehr praktische Funktionen. Allem voran ist der Editor dabei extrem schnell.
Open Source Software und ich - Teil 3

Der dritte Teil meiner Open Source Software und ich Reihe beschäftigt sich mit ein paar allgemeinen Punkten rund um das Thema Open Source. Beginnen möchte ich dabei mit der Bewertung der Qualität. Diese lässt sich natürlich nicht für alle Open Source Projekte verallgemeinern, allerdings kann man über die persönlichen Erfahrungen ja durchaus berichten. Ich nutze Ubuntu open_in_new an diversen Stellen als Betriebssystem, auf selbigem entsprechend verschiedenste Tools (z.B. Firefox open_in_new)und weitere Software (z.B. Mumble open_in_new). Auch unter Windows kommen verschiedene Open Source Tools (z.B. VLC Player open_in_new) zum Einsatz. Ebenfalls nutze ich sehr aktiv diverse Android und Flutter Open Source Libraries.
Mit diesen Informationen im Hinterkopf muss ich sagen, dass ich sehr begeistert von der allgemeinen Qualität der genannten Open Source Lösungen bin. Das meiste funktioniert schnell und stabil. Ein Manko welches ich häufiger gesehen habe, bezog sich auf die UI und UX Erfahrung, aber auch in diesem Bereich gibt es diverse gute Produkte. Man könnte hier vermuten dass zu viele Köche vielleicht den Brei verderben, ich persönlich kann dies allerdings nicht bestätigen. Auf der anderen Seite will ich aber auch nicht sagen, dass Open Source Software per se besser oder stabiler ist als Closed Source Software. Hierbei gehe ich natürlich von dem aus was der Nutzer mitbekommt, denn nur dies kann man im Vergleich bewerten. In diesem Kontext muss ich sagen, dass sowohl ein Windows, wie auch ein Ubuntu durchaus Luft nach oben lassen, wenn es um die Stabilität und Performance geht. Alles in allem sind meine Erfahrungen mit der Qualität von Open Source Software aber auf jeden Fall sehr gut.

