Hendrik Mans

Freier Entwickler, Berater und Trainer mit Fokus auf Web-Technologien und APIs.

Eckdaten

Ort:

On-site in Hamburg & Umgebung, alternativ remote oder hybrid.

Verfügbarkeit:

ab August 2023, bis zu 4 Tage/Woche.

Kontakt:

hendrik@mans.de oder XING oder LinkedIn.

Links:

Auf meinem GitHub-Account liegen die üblichen Berge an eigenen – aktiven oder inzwischen wieder eingestellten – Open Source-Projekten.

Auf meinem Blog hmans.dev veröffentliche ich (in englischer Sprache) Neuigkeiten über meine eigenen Projekte und Artikel über Softwareentwicklung und artverwandte Themen.

Mein überwiegend privat genutzter Mastodon-Account @hmans@norden.social ist mein tagtägliches Sprachrohr in die Welt. Hier poste ich vieles, was keinen ausgewachsenen Blog-Beitrag rechtfertigen würde. Sagen Sie nicht, ich hätte Sie nicht gewarnt.

Open Source:

Immer wieder mal veröffentliche ich Code als Open Source. Eine aktuelle Auswahl:

Die Composer Suite ist eine Sammlung an Bibliotheken rund um Three.js und React, mit dem Ziel, ein paar der komplexeren Anwendungsfälle zu vereinfachen. Mit Shader Composer kann man GLSL-Shader komplett in JavaScript schreiben; mit VFX Composer baut man deklarative GPU-gestützte Partikelsysteme und Animationen.

Miniplex ist ein kompakter JavaScript-State-Manager, der auf das Entity Component System-Pattern setzt. Im Gegensatz zu den meisten anderen Lösungen in dem Space priorisiert es eine einfache API und eignet sich daher vor allem für ECS-Neulinge.

three-elements bildet die API von Three.js als Web Components ab und erlaubt das Programmieren interaktiver 3D-Szenen mithilfe von einfachen HTML-Tags.

Statery ist ein reaktiver State Container für React-Anwendungen. Davon gibt es ziemlich viele, aber mir gefielen die APIs der anderen nicht, also baute ich meinen eigenen. ;-)

Technologien

Seit über 20 Jahren entwickle ich Software, berate Unternehmen, und schule Teams in gängigen Technologien. Mein Fokus liegt dabei primär auf Web-Technologien, sowohl im Frontend als auch im Backend. In den letzten Jahren arbeitete ich vorrangig mit:

Backend:
  • Ruby on Rails
  • Ruby
  • Node.js
  • Next.js
  • Elixir
  • Phoenix
  • Nim
  • Rust
  • Lua
  • GraphQL
  • AMQP
  • RabbitMQ
Frontend:
  • TypeScript
  • JavaScript
  • React
  • Next.js
  • Three.js
  • WebGL
  • WebGPU
  • PWA
  • HTML5
  • CSS3
  • Responsive Design
Datenbanken:
  • PostgreSQL
  • MySQL
  • MongoDB
  • Redis
  • ElasticSearch
  • Firebase
  • Supabase
etc.:
  • Docker
  • Git
  • TDD
  • BDD
  • CI
  • Agile
  • Scrum
  • Kanban
  • GameDev
  • IndieWeb

Referenzen

Tim Adler
Head of Development, Greenhouse Innovation Lab
"In einem konzeptionell anspruchsvollen Projekt zur Interaktion mit einer Vielzahl von sozialen Netzwerken hat Hendrik es sowohl verstanden, das Frontend, als auch den Backend-Stack als Lead-Entwickler im Griff zu haben. Gleichzeitig führte er das Entwicklungsteam und den Projektprozess mit dem richtigen Blick für Pragmatismus und Effizienz. Seine Fähigkeit, dabei auch die Entscheider kommunikativ 'an Bord' zu behalten, machen Hendrik zu einer herausragenden Wahl für die unterschiedlichsten Entwicklungsprojekte auf hohem Niveau."
Volker Junginger
Senior Product Manager, XING SE
"Hendrik hat uns bei der Neuentwicklung des XING Nachrichtenbereichs als Technical Manager unterstützt. Seine organisatorischen Skills, sein tiefes technisches und konzeptionelles Verständnis und sein motivierendes Naturell haben maßgeblich zum erfolgreichen Launch beigetragen. Wer einen technischen Sparringspartner mit Hands-on-Mentalität für POs, Konzepter oder das Developer Team sucht, ist bei Hendrik gut aufgehoben.”
Nermin Caluk
Director Engineering, XING SE
"Hendrik's technical skills enable him to work on a broad spectrum of software topics, from outlining the architecture, designing the APIs, to making technical decisions in the daily business; while his people skills help building a network of motivated and energized people around him. Hendrik’s approach is a highly pragmatic one, focusing on delivery and contributing to improvements and tweaks in the development processes."
Ivan Petkovic
Senior Agile Project Manager, XING SE
"Hendrik commands a rare mix of technical, process and communication skills that make him suitable for many different roles: software developer, technical consultant, project or product manager, and more. He knows how to balance technical and business requirements, but also understands the people around him and cares about their needs. And that is one of the things I appreciated the most."

Beispiel-Projekte

Hier eine Auswahl an Projekten aus den letzten Jahren, an denen ich maßgeblich beteiligt war:

"Public API":

Betreuung und Weiterentwicklung der Public & Mobile API eines großen deutschsprachigen Social Networks (Ruby on Rails, MySQL).

Konzeption und Entwicklung eines neuen internen Dienstes zum Speichern und Analysieren von Nutzungsmetriken (InfluxDB, Grafana).

Betreuung und Weiterentwicklung des intern genutzten API-Verwaltungstools mit Fokus auf Vereinfachung der Nutzung durch die im Unternehmen verteilten Stakeholder.

"Social Media Redaktionstool":

Technische Konzeption und Umsetzung eines Content Management Systems für Social Media-Redaktionen auf Basis von Ruby on Rails, GraphQL und React, u.A. mit Anbindung an mehrere beliebte Social Media-Dienste und automatisierter Veröffentlichung von Beiträgen auf selbigen.

"B2B-Marktplatz":

Weiterentwicklung eines internationalen B2B-Marktplatz auf Basis von Ruby on Rails, React und ElasticSearch. Kontinuierliche Ausbesserung bestehender sowie Entwicklung neuer Features.

Entwicklung eines internen Tools zur automatisierten Einrichtung einer vollständig lauffähigen, virtualisierten Entwicklungsumgebung.

"Messenger":

Technische Koordination der Entwicklung eines Instant-Messenger-Produkts durch ein 25-köpfiges, interdisziplinäres Team. Mitgestaltung und -Entwicklung des Backends mit Ruby on Rails, Elixir und Phoenix.

Integration der neuen Phoenix-Services in die Monitoring-Umgebung und das AMQP-System des Kunden.

Unterstützung des Product Owners bei der Planung und Vorbereitung von User Stories.

Vermittlung zwischen den unterschiedlichen technischen Disziplinen (Backend-APIs, Mobile Apps, Web-Client), sowie Koordination mit anderen Bereichen des Unternehmens.

"Ad-Server":

Entwicklung und Pflege eines Ad-Servers für Native Advertising in den Activity Feeds eines großen Business-Social-Networks (Ruby on Rails und ElasticSearch.)

Koordination der Integration des Produkts in die unterschiedlichen Bereiche der Plattform als zwischenzeitlicher Product Owner.

"Profiles":

Entwicklung von APIs mit Ruby on Rails für eine Backbone-Frontend-App. Besonderer Fokus auf Performance, da diese APIs jeden Tag mehrere Millionen Requests bearbeiten mussten.

Pants:

Entwicklung eines verteilten, quelloffenen Social Networks auf Basis von IndieWeb-Konzepten wie Webmention und microformats2. Ruby on Rails, PostgreSQL.

Mailcaster:

Entwicklung einer hybriden Newsletter- und Web-Publishing-Plattform mit Ruby on Rails, PostgreSQL und Sidekiq, mit automatischer Skalierung der eingesetzten Cloud-VMs.

Alchemy:

Entwicklung mehrerer Content-getriebener Websites auf Basis des Ruby on Rails-Content-Management-Systems Alchemy CMS.

Schulungen:

Eine Vielzahl an Schulungen rund um die Themen Ruby on Rails, HTML/CSS, JavaScript, Git und agile Softwareentwicklung.

Beratung:

Technische Beratung von Startups und Gründern, Ideen- und Anforderungsmanagement, Code Reviews und Entwicklung von Prototypen/MVPs mit unterschiedlichen Technologien.

Arbeitsweise

Grundsätze:

In einer Branche, die sich stetig weiter entwickelt und jedes Jahr neue, aufregende Technologien hervor bringt, ist es sehr einfach geworden, sich zu verrennen. Trotzdem kann sich niemand leisten, sich auf die Dauer den Veränderungen zu verschließen. Ich arbeite daher nach den Grundsätzen:

Gute Wartbarkeit und einfache Anpassbarkeit sind in fast allen Fällen die wichtigsten Eigenschaften von Code.

Einfache, pragmatische, potenziell "langweilige" Lösungen sind fast immer besser als aufregende, aufwändige, dogmatische.

Man muss nicht auf jeden Zug aufspringen, sollte aber auch nicht alle davon fahren lassen.

Gute Software-Entwicklung ist 90% Vorbereitung und 10% Programmieren. Sich ohne vorherige Planung in Code zu stürzen, ist gefährlich.

Teams:

Zufriedene Mitarbeiter:innen liefern auch die beste Arbeit. Geradlinige, ehrliche Kommunikation, eine Kultur der Eigenverantwortung, und ein gemeinsames Verständnis der zu bewältigenden Aufgaben sind die Faktoren, die Softwareentwickler:innen zu Höchstleistungen antreiben, und für die ich mich in Projekten stets einsetze.

Technik:

Wie viele andere in dieser Branche arbeite ich am liebsten auf macOS – bei meinem aktuellen Hauptarbeitesrechner handelt es sich um einen M1 Mac Mini, ein erstaunlich leistungsfähiges Gerät, bei dem man nie ein Lüftergeräusch hört, was ich sehr schätze. Gelegentlich werfe ich aber meinen PC an (gefühlt so groß wie ein Kühlschrank, klingt auch manchmal so), vor allem, wenn ich mich meinen Hobbies Musik-Produktion (Bitwig Studio) und Spiele-Entwicklung (Unity, Godot) widme.

Der Editor meiner Wahl ist aktuell Visual Studio Code. Davor waren es Atom und Sublime Text. Mit Terminal-basierten Editoren wie vim oder Emacs konnte ich mich bisher nicht anfreunden. Wer mich aus diesem Grund für keinen echten Entwickler hält, mit dem diskutiere ich das gerne über Kaffee aus. :)