1
 
 
Profil
In deinem persönlichen Profilbereich kannst du den Status deiner Bewerbung einsehen, unvollständige Bewerbungen zwischenspeichern und aktuelle News und Events einsehen
29. Mai 2017

Mit Clojure können wir eine ganze Menge Dinge erledigen. Ganz im Ernst.

Worum geht es in dem Artikel?

In diesem Beitrag möchte ich einen anderen, nicht weniger wichtigen Aspekt hervorheben: Produktivität. Mit Clojure bekommen wir eine ganze Menge Dinge erledigt. Ganz im Ernst.

Zugegeben, ich war leicht schockiert und ein wenig erschrocken, als ich kürzlich über den Tweet von @ZackMaril stolperte, in dem er behauptete, Clojure sei eine sterbende Sprache. Eine riesige Diskussion wurde ausgelöst, und seitdem wurde viel geschrieben. Eine Zusammenfassung findet sich im Beitrag von Arne Brasseur, der auch einen guten Einblick in die Gemeinschaft hinter Clojure bietet. Eric Normand hat heute eine weitere Abstraktionsebene hinzugefügt und einige weitere Links in der Drama-Ausgabe des purelyfunctional.tv-Newsletters dieser Woche gesammelt.

Ich teile Dan Lebreros Meinung über Clojure. Clojure hat mir Lektionen erteilt und Konzepte vorgestellt, die ich nicht mehr missen möchte. Zuallererst liebe ich die eingebauten unveränderlichen Sammlungen. Unveränderlichkeit als Standard ist ein Meilenstein in meinem Leben als Entwickler. Ich vergleiche es mit Git-Pair-Programming, kontinuierlicher Integration und IntelliJ IDEA (jetzt natürlich mit Cursive ). Es gab eine Zeit, in der ich von all diesen Dingen noch nicht einmal wusste. Jetzt kann ich mir nicht mehr vorstellen, jemals ohne eines dieser Tools zu arbeiten.

Lernen


Mein Team arbeitet nun schon seit fast drei Jahren mit Clojure. Wir kamen aus einer reinen Java-Welt und beschlossen, ein polyglottes Team Wir wählten Clojure, Scala und Python als unsere Hauptsprachen. Keiner der Entwickler, die seither zu uns gestoßen sind, hatte zuvor Erfahrung mit Clojure oder Scala. Mit unserer Pair Programming-Routine und unserer Microservice-Architektur gelingt es uns jedoch, Neulinge schnell einzuarbeiten.

Aus dieser Erfahrung heraus kann ich bezeugen, dass Clojure mehr als einfach zu erlernen ist. Neue Teammitglieder - von studentischen Praktikanten bis hin zu erfahrenen Hackern - sind in der Regel innerhalb von Tagen und nicht Wochen produktiv. Unsere "nicht-technischen" Teammitglieder - Produktionsleiter, Geschäftsdesigner und dergleichen - haben ebenfalls angefangen, Clojure zu hacken und sind nun in der Lage, einige ihrer Aufgaben zu automatisieren und den Entwicklern zu helfen.

Die Tatsache, dass Clojure kaum Syntax hat, und sein Streben nach radikaler Einfachheit tragen dazu bei, dass es leicht erlernt werden kann. Dies steht im Gegensatz zu z.B. dem syntaxlastigen Scala.

Implementierung von


Stell dir die folgende Situation vor: Du willst eine Änderung an deiner Software vorzunehmen. Nach deinem Bauchgefühl könnte es den Nachmittag dauern. Du setzt dich mit deinem Pair/Buddy zusammen und diskutierst das Problem.  Du bist TDD-Anhänger, also schreibst du einen Test, der die noch zu entwickelnde Funktionalität voraussetzt. Er ist rot. Du sagst: "Ok. Bevor wir mit der Codierung beginnen, lass' mich das schnell in einem einfachen Pseudocode formulieren". Dein Partner führt den Test aus. Er ist grün. Ihr seht euch an: "Sind wir fertig? " Ihr seht euch den Code noch einmal an. Ihr seid fertig. Es sind jetzt 20 Minuten vergangen.

Diese Erfahrung hättest du meinem ehemaligen Java-Entwickler-Ich nicht erklären können, egal wie sehr du dich bemüht hättest. Und doch passiert es jeden Tag. Clojure hat diese Art, die eigenen Gedanken scheinbar mühelos in funktionierenden Code zu verwandeln, die ich von keiner anderen Sprache kenne. (Es gibt natürlich eine Menge Sprachen, die ich nicht kenne).

Fehlersuche


Bei der Analyse eines Clojure-Codes tritt der Code selbst schnell in den Hintergrund und gibt den Blick auf das eigentliche Problem frei. Auch hier sind es die minimalistische Syntax und der Fokus auf Einfachheit, die es leicht machen, über den Code nachzudenken. Die Sprache erfordert nur einen geringen mentalen Aufwand bei der Untersuchung von Problemen. Das gilt selbst dann, wenn man das Problem mit jemandem bespricht, der Clojure überhaupt nicht kennt. Es dauert nur wenige Minuten, bis die Diskussion von der Analyse des Codepfads zu den geschäftlichen Aspekten des Problems übergeht.

Dies gilt auch für Bibliothekscode, der oft erstaunlich prägnant ist und Ihnen eine gute Chance gibt, das Innenleben einer Bibliothek zu verstehen. Auch dies ist nicht unbedingt der Fall, wenn es sich um eine Sprache handelt, die mehr Syntaxoptionen bietet.

Dinge zu Ende bringen


In der jüngsten Diskussion wurde oft gesagt, dass Clojure ein Team nicht per se produktiver macht. Ich denke, das Gegenteil ist der Fall. Die Designentscheidungen von Clojure führen zu einer erstaunlich produktiven Sprache.

Es ist effizient, neue Funktionalität zu entwickeln. Es gibt wenig Hindernisse bei der Analyse von Problemen und der Erforschung von unbekanntem Code. Sie verfügt über ausgezeichnete Werkzeuge. Sie macht Spaß. Stirbt sie aus? Nein, verdammt! Wenn man es töten wollte, müsste man es mir erst aus meinen kalten, toten Händen entreißen.

Ich kann nur vermuten, dass wir stellvertretend für eine ganze Reihe von Teams in einer ganzen Reihe von Unternehmen stehen, die sich glücklich und still an der Produktivität von Clojure erfreuen. No Drama

PS: In diesem Beitrag habe ich eine Menge Eigenschaften von Clojure ausgelassen, die ebenfalls dazu beitragen, dass es eine ausgezeichnete Wahl ist. Dazu gehören die hervorragende Abwärtskompatibilität, einfache und dennoch leistungsfähige Nebenläufigkeitsprimitive, JVM und Javascript als Ziellaufzeit und vieles mehr. PPS: Wir verwenden immer noch Scala. Wir mögen es sogar. Zumindest - aber nicht nur - wegen der sehr unterschiedlichen Herangehensweise an die Programmierung. Ein Problem aus zwei verschiedenen Blickwinkeln zu betrachten, ist ein Wert an sich. Polyglott rockt! PPPS: Hupe , wenn du Clojure liebst!

9Kommentare

  • […] With Clojure we get a whole lot of stuff done. Seriously. […]

  • Christian Stamm
    06.06.2017 10:43 Uhr

    Hi Peter, great question!

    We as a team were in the fortunate position to build a new thing from scratch. We were used to developing rather large systems and and decided to go for a microservice architecture now. So there were two paradigm shifts to handle at the same time. Luckily they were of mutual benefit. Treating an HTTP-response as the function of the request is an excellent stepping stone to FP. Doing so in a small, simple service makes it easier to do so in a new programming paradigm.

    Generally I see three ways in that teams are transitioning from Java to Clojure:

    1) Build something new from scratch.
    2) Factor out some functionality from a monolithic software into smaller services.
    3) Adopt some tools (like lambdacd-pipelines, or oscillator) that are written and configured in Clojure.

    For the first the transition seems to be the easiest. For the third least so. Still it is not a big problem.

  • Gunnar Kiesel
    06.06.2017 09:38 Uhr

    Schöner Artikel - macht neugierig auf Clojure!

  • stkeller69
    19.09.2017 16:45 Uhr

    I’m desperately trying to get clojure into our company – it’s a tough sell, with no success so far:
    People simply do not believe that it will be way better that their existing environment.
    Thank you very much for your post – it’s very encouraging!

  • 29.05.2017 22:18 Uhr

    Honk honk!

  • Burhan
    30.05.2017 20:23 Uhr

    Honk!

  • 03.06.2017 00:13 Uhr

    Honk Honk!
    Just wrote first lines of clojure again today.
    I love it

  • Peter Makumbi
    05.06.2017 17:30 Uhr

    To Christian. How did you manage the paradigm shift? Its a huge shift from OO to Lisp. From object interaction to functional composition, from mutable to immutable data structures. How much re-learning was involved?

  • Juschko
    04.12.2018 16:56 Uhr

    Hi, what are your Scala use cases - in contrast to Clojure? And because I'm getting used to Scala: 1/2 honk ;)

Dein Kommentar
Antwort auf:  Direkt auf das Thema antworten

Geschrieben von

Christian Stamm

Ähnliche Beiträge

We want to improve out content with your feedback.

How interesting is this blogpost?

We have received your feedback.

Cookies erlauben?

OTTO und drei Partner brauchen deine Einwilligung (Klick auf "OK") bei einzelnen Datennutzungen, um Informationen auf einem Gerät zu speichern und/oder abzurufen (IP-Adresse, Nutzer-ID, Browser-Informationen).
Die Datennutzung erfolgt für personalisierte Anzeigen und Inhalte, Anzeigen- und Inhaltsmessungen sowie um Erkenntnisse über Zielgruppen und Produktentwicklungen zu gewinnen. Mehr Infos zur Einwilligung gibt’s jederzeit hier. Mit Klick auf den Link "Cookies ablehnen" kannst du deine Einwilligung jederzeit ablehnen.

Datennutzungen

OTTO arbeitet mit Partnern zusammen, die von deinem Endgerät abgerufene Daten (Trackingdaten) auch zu eigenen Zwecken (z.B. Profilbildungen) / zu Zwecken Dritter verarbeiten. Vor diesem Hintergrund erfordert nicht nur die Erhebung der Trackingdaten, sondern auch deren Weiterverarbeitung durch diese Anbieter einer Einwilligung. Die Trackingdaten werden erst dann erhoben, wenn du auf den in dem Banner auf otto.de wiedergebenden Button „OK” klickst. Bei den Partnern handelt es sich um die folgenden Unternehmen:
Google Inc., Meta Platforms Ireland Limited, elbwalker GmbH
Weitere Informationen zu den Datenverarbeitungen durch diese Partner findest du in der Datenschutzerklärung auf otto.de/jobs. Die Informationen sind außerdem über einen Link in dem Banner abrufbar.