Wie ich zum Coding Lawyer wurde

Erst kürzlich war es für eine Bewerbung wieder an der Zeit, meinen Lebenslauf zu aktualisieren.

Dabei stieß ich in der Rubrik EDV-Kenntnisseauf den Eintrag Microsoft Office – fortgeschrittene Kenntnisse. Anscheinend hatte ich es vor einiger Zeit für notwendig erachtet, diese heutzutage eher trivialen Fähigkeiten extra zu erwähnen. Nunmehr entschied ich mich jedoch dafür, den Eintrag schlicht ganz zu streichen und stattdessen meine Kenntnisse von Fremd- und Programmiersprachenunter einer gemeinsamen Rubrik zu erwähnen. Der Eintrag Programmiersprachenlautet nun: JavaScript / Go / Python (jeweils fortgeschritten). Das alles wäre nicht weiter erwähnenswert gewesen, hätte ich den CV für eine Bewerbung als Programmierer bzw. Softwareentwickler benötigt. In meinem Fall handelte es sich jedoch um eine Stelle in einer Wirtschaftskanzlei. Dies erklärt sich daraus, dass ich mir in den letzten 3 Jahren, neben meiner juristischen Ausbildung das Programmieren beigebracht habe und mich nun als Coding Lawyer bezeichnen kann. Da ich zudem auch schon seit geraumer Zeit als Legal Tech-Unternehmer tätig bin, war es eigentlich nur eine Frage der Zeit, bis Daniella Domokos, die Herausgeberin dieses Blogs, auf mich zukommen und um einen Gastbeitrag über meinen Weg zum Coding Lawyer bitten würde. Nun denn – hier ist das Ergebnis!

Legal Engineer vs. Coding Lawyer

Da die Begriffe Legal Engineerund Coding Lawyerjeweils recht neue Wortschöpfungen sind, lohnt sich aus meiner Sicht eine begriffliche Einordnung: Das Berufsbild eines Juristen, der neben seiner beratenden Tätigkeit auch im Bereich der Softwareentwicklung tätig ist, findet sich als Legal Engineerbzw. Coding Lawyerseit einiger Zeit in Veröffentlichungen zum Thema Legal Tech wieder. Erwähnt wird es dort meist im Kontext der Frage, wie sich die Tätigkeit von Juristen mit fortschreitender Digitalisierung wandeln wird. Freilich handelte es sich dabei mangels konkreter Beispiele bislang um eine eher abstrakte Erörterung – aber inzwischen gibt es tatsächlich schon die ersten Stellenausschreibungen dafür. Der Begriff Legal Engineer bezeichnet aus meiner Sicht ein Berufsbild einer Person, die in einer Kanzlei oder einem Unternehmen an der Schnittstelle zwischen Recht und Software tätig ist und in beiden dieser Bereiche Kenntnisse besitzt. Der Begriff Coding Lawyer beschreibt für mich hingegen ein bestimmtes Skill-Set – also einen Juristen, der programmieren kann. Dieser Beitrag widmet sich Letzterem und beschreibt, wie ich überhaupt zu solch einem Coding Lawyer wurde.

Ausreden und falsche Vorstellungen

Bevor ich mit der Schilderung meines Lern- und Leidensweges zum Coding Lawyer beginne, möchte ich noch folgendes klarstellen: Ich habe erst nach dem 1. Staatsexamen damit begonnen, mir nach und nach verschiedene Programmier-Skills beizubringen. Davor hatte ich allenfalls ein vages Verständnis davon, wie eine Website aufgebaut ist und konnte – wie oben erwähnt – ganz passabel mit Microsoft Office umgehen. Das wars! Wer dies also als Jurist liest und sich schon in einem ähnlich fortgeschrittenen Stadium der Ausbildung befindet oder gar schon berufstätig ist, dem sei gesagt: Es ist nicht zu spät – diese Ausrede zählt nicht! Gleiches gilt für den Zeitaufwand: Ich habe mir das meiste in meiner Freizeit beigebracht, während ich nebenher noch das Referendariat absolvierte. Hier ist vor allem wichtig, dass man ständig am Ball bleibt und in kleinen regelmäßigen Schritten voranschreitet, anstatt sich auf einen Schlag alles in den Kopf reinpressen zu wollen. Im Übrigen ist auch die Vorstellung falsch, dass Programmieren viel mit Rechnen zu tun hätte. Die Rechenarbeit übernimmt wenn dann ohnehin der Computer und zudem hat Programmieren vielmehr mit einer abstrakten sprachlichen Ausdrucksweise als mit Zahlen zu tun.

Wichtig ist schließlich, dass man Programmieren vor allem dadurch lernt, dass man es auch wirklich macht. Ich wage zu behaupten, dass die grundlegenden Programmierkonzepte für Juristen recht simpel zu verstehen sind, zumal sie solch abstraktes Denken gewohnt sind. Um sie wirklich zu verinnerlichen, muss man sie aber konkret anwenden und – darum kommt man leider nicht drumherum – auch mal ein ganzes Wochenende nach einem Bug im Code gesucht haben, nur um dann am Sonntagabend schließlich zu merken, dass die scheinbar fehlerhafte Funktion überhaupt nicht aufgerufen wird oder dass man = anstatt == geschrieben hatte. Alles schon erlebt

Die ersten Schritte – Web-Entwicklung

Meine ersten Gehversuche im Programmieren machte ich Mitte des Jahres 2015. Ich hatte damals gerade mein 1. Staatsexamen absolviert, wollte aber nicht gleich mit dem Referendariat weitermachen. Auch die sonst bei Juristen üblichen Alternativen Promotion oder LL.M. kamen für mich nicht in Betracht, da ich mich für Ersteres mangels wissenschaftlichen Eifers nicht begeistern konnte und ich mir von Letzterem aufgrund meines einjährigen Auslandsstudiums in London keinen greifbaren Mehrwert mehr erhoffte. Glücklicherweise hatte ich mit einem ehemaligen Kommilitonen damals aber schon den Entschluss gefasst, ein Startup zu gründen (der Begriff Legal Techwar damals übrigens noch weitaus weniger geläufig).

So begann ich also, mir mittels eines dicken Wälzers (typisch Jurist) die Grundlagen der Web-Entwicklung anzulesen, machte dabei aber im Grunde schon den ersten Fehler: Ich lasdarüber und verstand auch viel davon. Eigentlich hätte ich neben dem lesen, aber auch gleich genauso viel machensollen. Einen wirklichen praktischen Zugang zu der Materie erlangte ich daher auch erst ein paar Monate später, als ich auf einer Hackschool in Mannheim dieselbe Materie von der praktischen Seite her kennenlernte. Hier wurden statt Büchern Online-Tutorials, wie z.B. Codecademy oder NodeSchool, verwendet, mit denen man ohne viel Theorie gleich loslegen und in die Tasten hauen kann.

Diesen Ansatz, also sowohl den Besuch einer Hackschool als auch das Verwenden von Online-Tutorials, kann ich jedem, der Programmieren lernen will,  nur wärmstens empfehlen! Glücklicherweise gab/gibt es inzwischen auch bereits an einigen Juristischen Fakultäten (z.B. an der Bucerius Law School mit Coding for Lawyers) und von studentischen Legal Tech-Gruppen (z.B. vom Legal Tech Lab Frankfurt am Main mit Coding for Law Students) Angebote speziell für Juristen. Ein Informatikstudium ist also in keiner Weise erforderlich, um Programmieren zu lernen. Sicherlich werden in Zukunft nicht alle Jurastudenten auch noch einen Programmierkurs belegen müssen, aber wenn ich sehe, dass die juristische Ausbildung heutzutage immer noch in wesentlichen Teilen auf Stift und Papier basiert, gibt mir das schon etwas zu denken.

Das nächste Level – Angular und App-Entwicklung

Nachdem ich meine ersten Schritte in der Web-Entwicklung erfolgreich absolviert hatte und ich mit Hilfe von Bibliotheken wie jQuery und Bootstrap schon recht ansehnliche Webseiten basteln konnte, war ich Mitte 2016 bereit für den nächsten Schritt: JavaScript-Frameworks. Dabei handelt es sich grob gesagt um eine Art Programmiergerüst für auf JavaScript basierende Projekte, mit denen der Code in einzelne Komponenten aufgeteilt und mithilfe von Plugins ausgebaut werden kann. Das hat den Vorteil, dass man einerseits stets den Überblick auch über große Projekte behält (zumindest in der Theorie) und andererseits nicht alles komplett selbst entwickeln muss, sondern auf eine Vielzahl von Open Source-Plugins zurückgreifen kann. Der Nachteil hieran ist jedoch, dass der erste Zugang hierzu weitaus schwieriger ist, als zum herkömmlichen Web-Design, da man beispielsweise mit Tools wie Node.js und npm arbeitet. Für mich persönlich war dies jedoch etwas einfacher, da unsere App LEX superior zu diesem Zeitpunkt ohnehin mit dem Framework Angular entwickelt wurde. Ich hatte damit stets konkretes Anschauungsmaterial und konnte zudem auch immer unseren Softwareentwickler im Team um Rat fragen, wenn ich gar nicht mehr weiter wusste.  

Das meiste über Angular lernte ich jedoch durch ein Video-Tutorial des Anbieters Academind – sowohl deren Kurse auf Udemy als auch den YouTube-Channel kann ich wärmstens empfehlen. Fortan tauchte ich immer tiefer in die Angular-Welt ein und mein iPad samt Video-Tutorials war ein steter Begleiter beim Pendeln zwischen Heidelberg und Frankfurt. Darüber hinaus kam ich durch Angular auch erstmals mit der App-Entwicklung in Berührung. Hier gibt es verschiedene Ansätze, die für sich genommen schon einen Artikel wert wären. Was Angular bzw. JavaScript-Frameworks betrifft, so bieten diese jedenfalls die Möglichkeit nicht nur eine herkömmliche statische Website, sondern eine sogenannte Web-App, also eine Website, die aussieht wie eine App und sich auch so verhält, zu bauen.

Diesen Ansatz verfolgten wir zu dieser Zeit auch mit unserer App LEX superior, sodass ich einmal mehr ein konkretes Projekt vor Augen hatte. Daneben konnte schließlich eigenständig Projekte verwirklichen, die mich noch dazu in meiner täglichen Arbeit im Referendariat unterstützten, wie z.B. ein Automatisierungs-Tool für Tenorierungen zivilgerichtlicher Entscheidungen, dessen Beta-Version seit Kurzem online ist.

RichtigesProgrammieren – Go und Python

Anfang 2017 wagte ich mich schließlich daran, richtigesProgrammieren zu lernen. Der Grund, warum ich hier Anführungszeichen verwende, ist folgender: Web-Design (d.h. die Entwicklung mit HTML, CSS und JavaScript) wird bisweilen nicht als Programmieren im eigentlichen Sinne bezeichnet bzw. belächelt. Richtig daran ist, dass beispielsweise HTML und CSS keine Programmiersprachen, sondern Auszeichnungssprachen sind. JavaScript hingegen ist zwar eine Programmiersprache, wurde jedoch als Skriptsprache zunächst hauptsächlich für die Frontend-Entwicklung (d.h. für Browser-Anwendungen) eingesetzt. Allerdings gibt es beispielsweise mit dem bereits erwähnten Node.js auch zahlreiche Möglichkeiten, sie im Backend (d.h. auf Serverseite) zu verwenden. Im Backend ist die Programmierung hingegen deutlich hardwarenäher und es kommen Programmiersprachen zum Einsatz, bei denen man nicht zwingend eine grafische Ein- oder Ausgabe hat, sondern nur Daten verarbeitet und diese dann vom Server an einen Client schickt. Sieht man einmal von der Web-Entwicklung ab, so gibt es auch noch ganz andere Einsatzgebiete, wie z.B. Data Science – hier ist die Programmiersprache Python ein prominenter Vertreter. Im Einzelnen gibt es hier zahlreiche Unterschiede und Gemeinsamkeiten zwischen den Programmiersprachen. Einen guten Überblick darüber, welche Programmiersprache gerade auf dem aufsteigenden Ast ist, bietet übrigens der Tiobe-Index.

Mein persönlicher Einstieg in diese Art des Programmierens erfolgte nicht mit dem Klassiker Python, sondern über die von Google entwickelte Programmiersprache Go (oftmals auch als golangbezeichnet). Diese ist primär für Webserver entwickelt und zeichnet sich neben einer sehr schlichten Syntax dadurch aus, dass sie für paralleles Programmieren besonders geeignet ist. Paralleles Programmieren bedeutet, dass mehrere Aufgaben von verschiedenen Prozessorkernen gleichzeitig und unabhängig voneinander erledigt werden können. Das ist in etwa so, als hätte man als Mensch noch mehrere externe Gehirne zwecks Multi-Tasking  zur Verfügung. Diese Sprache verwende ich aktuell vor allem dazu, um die Gesetze und Urteile für unsere App von der Seite des BMJ automatisch herunterzuladen und in eine für unsere Zwecke kompatibles Format aufzubereiten.

Hierzu entwickelte ich beispielsweise einen Algorithmus, mit dem die in den Rohdaten des BMJ größtenteils nicht enthaltenen (aber vom Gesetzesanwender erwarteten) hochgestellten Satzzahlenangaben automatisch eingefügt werden. Daneben verfolge ich auf Grundlage derselben Daten auch einige Projekte im Bereich Data Science und Machine Learning. Dazu verwende ich Python, die aufgrund der großen Anzahl an frei zugänglichen Bibliotheken zu einer der hierfür am häufigsten verwendeten Programmiersprachen zählt. Die Einarbeitung in Python fiel mir trotz einiger Unterschiede in der Syntax aufgrund meiner Erfahrung mit Go übrigens recht leicht. Auch hier zeigt sich eine Parallele zu Jura: Wenn man den Dreh erst einmal raus hat, kann man sich auch in andere Rechtsgebiete bzw. Programmiersprachen einarbeiten.

Fazit

Zusammenfassend kann ich jeden Juristen, der sich zumindest die Grundkenntnisse des Programmierens aneignen möchte, nur ermutigen, dies zu tun. Die Angebote hierfür sind sowohl online als auch offline vielfältig – man muss sie nur wahrnehmen. Gerne gebe ich auch persönlich Auskunft und Hilfestellungen, um die ersten Hürden zu überwinden. Meine persönliche Begeisterung für das Programmieren schöpfe ich übrigens daraus, dass es mir vieles von dem bietet, was ich an Jura immer vermisst habe: Anstatt theoretische Diskussionen zu führen und Gutachten im Konjunktiv zu schreiben, kann ich nun auch reale Programme erschaffen, um praktische Probleme zu lösen. Nach nunmehr knapp drei Jahren Programmiererfahrung sehe ich die aktuellen Entwicklungen im Bereich Legal Tech aus einer etwas anderen Perspektive. Mit großer Aufmerksamkeit verfolge ich insbesondere, wie sich die juristischen Berufsbilder und Geschäftsprozesse innerhalb von Kanzleien mit fortschreitender Digitalisierung entwickeln werden. Denn das stundenbasierte Geschäftsmodell der Anwaltstätigkeit und die theoretisch beliebige Skalierbarkeit digitaler Produkte stehen in einem bisher ungelösten Widerspruch zueinander. Wie dieser Widerspruch aufgelöst werden kann, wird eine der wesentlichen zukünftigen Herausforderungen der Branche sein.

 

//Der Autor Johannes Maurer studierte Rechtswissenschaften in Heidelberg und London. Das Refererendariat absolvierte er in Frankfurt am Main und New York. Er ist Mitgründer und Geschäftsführer des Heidelberger Legal Tech-Startups LEX superior. Daneben arbeitet er als Teilzeit-Associate in einer Wirtschaftskanzlei in Frankfurt am Main.//

Teile diesen Beitrag

Ein Kommentar

  1. Ich bin Dipl. Volkswirt. Ich hab seit 15 Jahren Erfahrung mit Softwareentwicklung. Insbesondere in PHP, Javascript ES15 bis heute, CSS, Html. Seit dem es Node.js gibt auch damit. Entsprechend der Konvention bin ich dann ein Coding Economist, oder?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.