Hendrik Mans

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

Eckdaten

Ort:

Hamburg, Deutschland. Lieber on-site als remote.

Verfügbarkeit:

ab Januar 2018, bis zu 5 Tage/Woche

Kontakt:

hendrik@mans.de oder XING oder LinkedIn

Links:

Auf meinem Blog hmans.io schreibe ich (in englischer Sprache) über Software-Entwicklung und artverwandte Themen.

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

Auf Quora beantworte ich immer wieder gerne Fragen zu Software-Entwicklung, Unternehmenskultur und Kuchen.

Mein überwiegend privat genutzter Twitter-Account @hmans 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.

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
  • Elixir
  • Phoenix
  • ElasticSearch
  • AMQP
  • RabbitMQ
  • GraphQL
  • OpenResty
  • Node.js
  • Lua
  • Crystal
Frontend:
  • HTML5
  • CSS3
  • Sass
  • PostCSS
  • Responsive Design
  • PWA
  • JavaScript
  • CoffeeScript
  • Vue.js
  • React.js
  • Nuxt.js
  • Virtual DOM
  • PIXI.js
  • WebGL
  • Canvas
  • jQuery
  • Elm
  • Microformats
Datenbanken:
  • PostgreSQL
  • MySQL
  • MongoDB
  • RethinkDB
  • Redis
  • Firebase
etc.:
  • Git
  • TDD
  • BDD
  • CI
  • Agile
  • Scrum
  • Kanban
  • IndieWeb

Beispiel-Projekte

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

"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 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 zu Höchstleistungen antreiben, und für die ich mich in Projekten stets einsetze.

Technik:

Wie viele Kollegen arbeite ich primär auf macOS – mein aktueller Arbeitsrechner ist ein MacBook Air aus dem Jahre 2011, das schon erstaunlich lange hält.

Der Editor meiner Wahl ist aktuell Atom, vorrangig aus Gewohnheit. Davor war es 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. :)