Stefan Tilkovhttps://www.tilkov.com/Stefan Tilkovhttps://www.tilkov.com/Hugo gohugo.io2023-07-29T12:25:07ZPerils of CentralizationStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2023/07/27/perils-of-centralization/2023-07-28T09:44:12Z2023-07-27T16:00:00Z<p>A long time ago, I wrote <a href="https://www.innoq.com/en/blog/thoughts-on-a-canonical-data-model/">a blog post</a>
about reasons to avoid a canonical data model. It keeps getting referred
to and still creates some interesting conversations, so I thought it
might make sense to write down my current thoughts about the topic.</p>
<p>First of all, the idea of simplifying an organization’s IT structure and architecture
by “just” standardizing the data models is alive and well (though still as misguided
as ever). These days, there are two places where it appears.</p>
<p>The first one is in connection with some sort of API-first strategy. It’s still
extremely tempting to believe that once you’ve managed to <em>just</em> give everyone access to the same
pool of well-managed, well-described APIs, they’ll <em>simply</em> be able to simply build their applications
by using those APIs. It still considers efficiency by avoiding redundancy as the central tenet,
and just as described in the discussion about CDMs in my old post, misses the
much larger benefits of autonomy.</p>
<p>The second area where standardizing and centralizing models is firmly rooted as
a best practice is in the data space. Luckily, there is a counter-movement:
The <a href="https://www.datamesh-architecture.com">data mesh approach</a> fundamentally adopts the
idea of decentralized responsibility, and is a great match for organizations that have
adopted the concept of self-containend, value stream-oriented teams.</p>
<p>I believe that especially as money has become more expensive, creating
centralized pools of (meta) data will be harder and harder to justify to
stakeholders. It’s much better to do things that allow end-to-end teams
to work in fast iterations that provide immediate feedback to the value
they create. To my mind, this has been the defining characteristic of
many successful architectural approaches in the past few years.</p>Twitter ArchiveStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2022/12/20/twitter-archive/2022-12-20T16:11:40Z2022-12-20T16:00:00Z<p>I’ve created <a href="/twitter">an online archive of my Twitter content</a>, using
<a href="https://github.com/tweetback/tweetback">Tweetback</a>, a tool that turns
your <a href="https://help.twitter.com/en/managing-your-account/how-to-download-your-twitter-archive">exported data</a>
into a self-contained, searchable, nicely rendered repository suitable
for inclusion on your own site. Probably useful mostly to myself, as I
often find myself remembering that I linked to something in a Tweet
rather than the exact details. It also feels good to own this data
again, no matter how irrelevant most it may seem.</p>MastodonStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2022/12/19/mastodon/2022-12-20T15:47:02Z2022-12-19T09:30:00Z<p>It’s sad, as usual, but I haven’t blogged anything for a long time. What’s even more sad is that this is one of those meta posts – it’s kind of weird how I (and others) always end up writing about the structure I <em>would</em> use if I <em>were</em> actually producing useful content. Whatever. The big drama of December 2022 is Elon Musk’s total mismanagement of Twitter, so like many others, I’ve essentially moved to Mastodon. You can find me at <a href="https://innoq.social/@stilkov">INNOQ’s brand-new company</a> instance, <a href="https://innoq.social">innoq.social</a>, which also hosts a few dozen of my colleagues.</p>
<p>So far, I’ve found Mastodon and the Fediverse community to be much more aligned with my interests than Twitter, with a lot less drama and self-promotion. We’ll see how long this lasts, but for the moment I’m quite happy there.</p>DDD is OverratedStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2021/03/01/ddd-is-overrated/2021-03-02T14:34:47Z2021-03-01T11:00:15Z<p><em>Update: There’s a <a href="https://www.innoq.com/en/blog/is-domain-driven-design-overrated/">slightly extended version of this post</a> over at the INNOQ company blog.</em></p>
<p>There, I said it. Now that I have your attention: Domain Driven Design (DDD) has recently gained additional popularity, as evidenced by new books, conference talks (and even complete conferences dedicated to it), and lots of trainings – including some by our very own colleagues at <a href="https://www.innoq.com/">INNOQ</a>. And in contrast to my click-bait headline, I’m actually a fan. <a href="https://www.dddcommunity.org/book/evans_2003/">Eric Evans’s book</a>, the additional work writing and evangelizing it done by <a href="https://vaughnvernon.com">Vaughn Vernon</a> (e.g. in <a href="https://www.case-podcast.org/15-domain-driven-design-with-vaughn-vernon">this very good podcast</a> with my colleague Joy) and many others, are all very good additions to our industry’s body of knowledge. In the best sense of pattern languages, DDD gives clear names to things that many developers and designers know how to do, but cannot reliably and compatibly communicate about.</p>
<p>But I’m annoyed by the fact that recently, it seems that any time somebody talks about how to architect system or service boundaries, or even just mentions non-technical design, everybody feels compelled to bring in the DDD experts – as if they were the only superheroes who could possibly design anything at all. This is just as bad as any other situation where you blindly apply the solution that’s currently en vogue, just because it is the thing everyone talks about, and not because it is the right solution for the job. DDD is great, but it’s just one of many tools and techniques you should be aware of.</p>
<p>I think there is a more important aspect that people miss, especially when they get into DDD as their introduction to design in general. DDD emphasizes the importance of naming, and it suggests you should strive for a common, ubiquitous language, in the context you’re designing for. But it also uses its own language – concepts like bounded context, aggregates, entities, value objects, etc. – for our domain, the domain of designing systems. And while these are all well and good, they’re only one possible language. There’s value in calling a value object a value object, if this is a term many people understand, to facilitate communication. But the existing, common DDD concepts are not the only concepts you should consider – they are just examples of a very common trait of designing and architecting systems: Coming up with and recognizing patterns, giving them good names, and using them to give the system structure and integrity. If in your architecture, there’s a common pattern that you use a Filter to route requests to a Handler, or a concept of a Document that is handled by an Agent, then these things may occur again and again, on the same level as Services or Repositories, and end up being way more important to you. This is fine! This concept, that we can and should invent our own languages, is to me way more important than many naïve DDD practitioners think. I like to believe that DDD experts know this very well, and view any DDD material as a starting point, not an end result – but if all you’re doing is applying the by-the-book definition of existing DDD terms, and trying to shoe-horn any problem into this existing structure, yours is a very sad designer’s life.</p>
<p>There is a life beyond DDD. Not every good design needs to be Domain-Driven (though I can accept it should always be driven by the domain, just not necessarily in the DDD sense). You can design good systems even if you’re not a DDD expert.</p>Full Text Atom FeedStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2021/01/15/full-text-atom-feed/2021-01-15T21:51:44Z2021-01-15T21:30:15Z<p>Back in the old days, this would have been the very first thing I cared about, but I guess I’m either getting old or I’m actually more reasonable and spend time on content instead of meta issues. Whatever the reason, the site now has <a href="/feed.atom">a full text Atom feed</a>. That’s the saner version of RSS, but if you don’t care about the difference, it should do approximately the same thing for you. Let me know if there are any issues.</p>IT mit VernunftStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2021/01/05/it-mit-vernunft/2021-01-15T21:51:44Z2021-01-05T19:30:15Z<p>Ich habe wie viele andere auch schon häufiger über die mangelhafte Digitalisierung in der öffentlichen IT, im Gesundheits- und im Schulwesen gemotzt, z.B. <a href="/post/2020/12/06/wie-man-die-%C3%B6ffentliche-it-rettet/">hier</a> und <a href="/post/2020/12/07/%C3%B6ffentliche-it-und-die-sinnfrage/">hier</a>. Aber natürlich muss man sich die Frage stellen, was man tun könnte, um nicht immer nur herumzujammern, sondern konstruktiv etwas zur Verbesserung beizutragen.</p>
<p>Ein erster möglicher Weg wäre der politische: Man wird Mitglied einer Partei (oder sucht zumindest deren Nähe) und bemüht sich, in eine verantwortungsvolle Position zu kommen, aus der heraus man Dinge verändern kann. Mal ganz davon abgesehen, dass man erst mal eine Partei finden muss, die einem nicht zumindest in Teilen zuwider ist: Das ist sehr mühselig und langwierig, und ob man am Ende wirklich erfolgreich ist, hängt sehr stark davon ab, wie sehr man bereit ist, sich innerparteilich zu profilieren oder sich geeignete Personen zu suchen, die einen unter die Fittiche nehmen und protegieren. Muss man mögen.</p>
<p>Zweite Variante: Man versucht’s privatwirtschaftlich, indem man ein Unternehmen gründet (oder in einem bestehenden Unternehmen eine neue Sparte etabliert), die eines der Probleme mit einem Produkt oder einer Dienstleistung adressiert. Das ist durchaus denkbar, allerdings muss man sich darauf gefasst machen, dass man gegen Windmühlen kämpft: Die Interessen derjenigen, die über einen Kauf entscheiden, sind u.U. stärker auf den Erhalt des Systems als auf dessen Veränderung aus. Gleichzeitig muss man Kompromisse machen, um mit genügend großem wirtschaftlichem Erfolg die eigene Zukunft zu sichern. Nicht unmöglich, aber mühselig – und aus rein egoistischer Sicht gibt es sehr viele andere Branchen, in denen man einfacher unterwegs sein kann.</p>
<p>Aber vielleicht gibt’s noch einen dritten Weg: Man könnte versuchen, das Ganze im Rahmen eines gemeinnützigen Vereins oder einer Stiftung anzugehen, die Lösungen baut und diese der Allgemeinheit zur Verfügung stellt. Dabei könnte man sehr gezielt einfach das Richtige tun (oder das, was man dafür hält) und sich nur in sehr engen Grenzen von externen Interessen beeinflussen lassen (sprich: »opinionated« vorgehen). Mit den erstellten Produkten/Lösungen/Diensten müsste man keinen Gewinn erwirtschaften, sondern man müsste sie so anbieten, dass genügend Nutzer (im Sinne von: Schulen/Eltern, Kommunen/Ämter/Bürger, Arztpraxen/Patienten usw.) auf die Idee kommen, sie im eigenen Interesse zu verwenden. Eigenwerbung und gutes Marketing würden dazugehören, aber nur mit dem Ziel, mehr Unterstützer zu gewinnen, um wiederum in die (Weiter-)Entwicklung von Lösungen investieren zu können.</p>
<p>Aus persönlicher Erfahrung weiß ich, dass so ein »man müsste mal« immer sehr leicht gesagt ist und erst mal zu gar nichts führt. Klar kann man so etwas nebenberuflich und ehrenamtlich starten und auch bis zu einem gewissen Punkt weiterführen, aber damit es richtig Fahrt aufnimmt, braucht es Leute, die sich mit vollem Einsatz (sprich: hauptberuflich) darum kümmern können. Dafür müssen sie bezahlt werden, also braucht man Geld. Dieses Geld muss beschafft werden. Ich glaube, dass man dabei tatsächlich auf viel positive Resonanz stoßen würde – ich selbst würde etwas spenden und meine erste Stichprobe zeigt, dass es gerade im IT-Umfeld viele andere gibt, die das auch tun würden. Aber schon das Geldbeschaffen ist eine Aufgabe, die einiges an Zeit erfordert, und damit man weiß, wofür man das tut, muss man auch zunächst mindestens mal ein initiales Konzept haben, für welches »MVP« man es ausgeben möchte. Also hat man ein klassisches Bootstrap-Problem: Damit man Geld beschaffen kann, muss man zunächst einmal Geld investieren. Und das allein reicht nicht, sondern man braucht auch jemanden, der oder die es klug ausgibt.</p>
<p>Angenommen, das initiale Geldproblem könnte man lösen – welche Sorte Person bräuchte man, um so etwas zu starten? Aus meiner Sicht am besten eine gestandene Persönlichkeit mit Erfahrung im Networking, keiner Angst davor, am Anfang weitgehend allein zu arbeiten, mindestens rudimentärem IT- und vielleicht Projektmanagement-Know-how, ein paar Marketing-Skills, moderaten Gehaltsansprüchen und viel Enthusiasmus für eine gute Sache.</p>
<p>Ich könnte mir vorstellen, eine initiale Finanzierung auf die Beine zu stellen. Wer finanziert mit?</p>
<p>Und noch viel spannender: Wer bewirbt sich? :)</p>Keyboard RemappingStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/23/keyboard-remapping/2021-01-15T21:51:44Z2020-12-23T19:10:15Z<p>Sometimes I spend way too much time automating or customizing things on my computers, usually with an exceptionally bad cost/benefit relation. But hey, it’s fun, and after a while, the cost is forgotten and the benefits actually feel really good.</p>
<p>A few years ago, my poison of choice was finding the perfect keyboard layout. I know many people are fans of using a US keyboard layout even when they write other languages, such as German, because that’s so much better for programming. For most programmers, I guess that’s a very good choice, especially if you write most texts in English, too, and only occasionally need special characters for another language. For me, it’s an actual mixture of a lot of German, quite a bit of English, and (sadly) only occasional programming, so I really needed something that made all three convenient. For example, I need German characters such as ü, ä, ö, ß somewhere where I can type them quickly. I could never get used to having to type some weird dead key combination to get them.</p>
<p>So I was extremely happy to discover a rather obscure keyboard layout called <a href="https://neo-layout.org">Neo</a> (German website only), and I’ve been using it for a few years now. Needless to say, getting started was a pain, and I spent a few weeks typing with an excruciating lack of speed. But I really like the way it allows me to get all the characters I want, including real German and English typography chars such as ‘„’, ‘»’, ‘–’, etc. and type all kinds of braces, parens really quickly. I also finally learned to touch-type, because you simply have no other chance if almost none of the letters on your keyboard’s keys have anything to do with the characters that appear when you type them. Again, you need to be a little crazy to actually invest the time to relearn typing, and I’m not at all sure I’d recommend it. I’m reasonably happy, though.</p>
<p>I recently watched <a href="https://egghead.io/talks/egghead-save-your-hands-and-save-your-time-rethinking-how-to-use-a-keyboard">this video</a> of <a href="https://twitter.com/johnlindquist">John Lindquist</a> demonstrating how he uses the macOS keyboard remapping tool <a href="https://karabiner-elements.pqrs.org">Karabiner</a>, and it has led me to <a href="https://twitter.com/al3xandru/status/1340173700750925825?s=20">a new rabbit hole</a>, too. I’ve been using it as part of my Neo2 setup for a while, but I never really bothered to learn it in detail. It seems incredibly powerful, and my first experiments with the tool mentioned in the video, <a href="https://github.com/yqrashawn/GokuRakuJoudo">Goku</a>, seem to support the claim that it makes creating Karabiner configurations rather painless.</p>
<p>It’s not hard to imagine how I’ll spend my free time during the Christmas break.</p>Corona vs. DatenschutzStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/14/corona-vs.-datenschutz/2021-01-15T21:51:44Z2020-12-14T19:10:15Z<p>Es treibt mich in den Wahnsinn, dass wir jedesmal das gleiche Spiel sehen: Ständig wird ein reales Versäumnis in der öffentlichen IT damit erklärt, es wäre der übertriebene deutsche Wunsch nach Datenschutz, der einer ordentlichen Lösung im Weg stünde. Man müsste nur den aufgeben und sich ein bisschen mehr wie China, Verzeihung, Taiwan verhalten und damit anfreunden, dass wir nur mehr Überwachung durchführen und Daten zentral abgelegen müssten, dann wäre alles so viel besser.</p>
<p>Bullshit.</p>
<p>Man könnte sehr viele Dinge verbessern. Aktuell am Beispiel des Corona-Kontakt-Tracings: Vielleicht könnte man als erstes einmal die Fax-Schnittstellen loswerden, auf die viele der Gesundheitsämter heute noch angewiesen sind. Man könnte dazu die Ämter mit einer guten Software-Lösung ausstatten, die z.B. von den Ländern mandantenfähig betrieben wird, mit klarer Isolation der Daten einzelner Ämter voneinander. Personen, die für ein Gesundheitsamt arbeiten, könnten diese Anwendung auch aus dem Home-Office benutzen (ein nahezu revolutionärer Gedanke, ich weiß). Diese Anwendung könnte eine out-of-the-box funktionierende Schnittstelle zur Corona-App haben. Sie könnte an die Labore angebunden sein (bzw. eine Standard-API zur Verfügung stellen, die von gängigen Labor-Lösungen verwendet werden könnte). Die Corona-App könnte um ein freiwilliges, explizites Kontaktprotokoll-Feature erweitert werden – bei einem Treffen könnten alle Beteiligten von ihrer App kurz gefragt werden, ob sie das Treffen lokal (dezentral) ablegen wollen (mit Einwilligung der Beteiligten spricht überhaupt nichts dagegen; das gilt übrigens für die meisten Datenschutzthemen, wenn man sich eine explizite Einwilligung zur Nutzung von Daten holt, an denen man ein berechtigtes Interesse hat). Restaurants (wenn sie denn wieder geöffnet sind) könnten einen 2D-Barcode am Eingang platzieren, den man mit der App scannen kann, um den eigenen Besuch dort ins Protokoll zu schreiben.</p>
<p>Ergeben diese Vorschläge Sinn? Ehrlich gesagt: Ich bin nicht sicher, sie sind das Ergebnis eines einminütigen Brainstormings und der Teufel steckt (wie immer) im Detail. Aber der Punkt ist: Es steht uns nicht der Datenschutz im Weg, sondern der mangelnde Wille, mehr zu tun.</p>Moved to GitHub PagesStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/11/moved-to-github-pages/2021-01-15T21:51:44Z2020-12-11T19:10:15Z<p>I’ve moved this little excuse for a blog from Netlify to GitHub pages; I maintain the sources for the content there, anyway, and using it for a handful of static files seemed a little more lightweight. (At the moment, I still render the output using Hugo on the command line, but hope to figure out how to use GitHub actions to run this remotely – after all, why not spend a day or so figuring out how to automate something that will take me literally minutes otherwise?)</p>
<p>If you had some issues accessing posts, it was due my lack of DNS skills. Apologies.</p>There’s no Testing like Production TestingStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/11/theres-no-testing-like-production-testing/2021-01-15T21:51:44Z2020-12-11T19:10:15Z<p>One of the benefits of having this little domain outside of the innoq.com realm: I’m much more likely to try things out. I admit this reduces the barrier to writing something quite a bit, even though our internal barriers to publishing couldn’t be much lower than they are. In this spirit, this post might appear in my LinkedIn profile, hopefully not in the wrong place. But hey, no testing like production testing.</p>The Impossible ConferenceStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/10/the-impossible-conference/2021-01-15T21:51:44Z2020-12-10T19:10:15Z<p>I had tons of fun yesterday at INNOQ’s first <a href="https://technologyday.innoq.com">Technology Day</a>, our very own litte online conference. The idea was first discussed exactly two months ago, when my co-worker Martina approached me and suggested we might do something for our customers (and for our marketing) by assembling some of the awesome people we have on board, asking them to present something they’d possibly presented this year elsewhere, or wanted to present for the first time, and adding some interesting interactive formats that highlight how we work these days.</p>
<p>She and I met (virtually) for half an hour and decided that essentially, there was really no way this could be made to work, as we’re typically all quite busy near the end of the year; she herself was very interested in developing this, but had almost no time at all because she was super-busy in her project; essentially, without a dedicated team of people, it would probably be best to postpone it for a year.</p>
<p>But it couldn’t hurt to explore the idea a little more in what we labelled a conference creation bootcamp. We quickly identified a number of people we knew might be able to help as a program committee, but of course we also knew if we tried to find a date that worked for all of them, we’d be looking at something like 3 months from now. So we decided to pick a date a week later, where the two of us could free up a day and see how far we’d get. We’d invite the others, if only for half hour here and there. The goal would be to create something that allowed us to make a decision about whether to move forward or not at the end of the one day workshop.</p>
<p>The workshop was highly productive, with people dropping in and out as they could, the group splitting in two somewhere mid-day, and reconvening later. By the end of a day, we had created a little FAQ answering the most important questions (and thus forcing us to make the most important decisions). Everything felt good, so we decided to recommend moving forward, with a final decision due two days later. After a little more internal discussion, we made the final decision on the next day: We’d be running a conference, aiming for 400-500 attendees (including about 150 INNOQ employees).</p>
<p>In the next few weeks, an ad-hoc team, without any clear structure or decision process, created a 7-person program committee that met multiple times; acquired 30 speakers among our staff; considered about 25 different external keynote speakers before settling on one we chose to invite (and managed to get); planned 4 parallel conference tracks, an internal three-part keynote, multiple formats highlighting our trainings, and some off-topic tracks and sessions; assembled a small (two person that actually was one person as one of them was on vacation) technical team; chose a conference tool and a communication tool for lightweight interaction; built a landing page; sent out a bunch of emails to our clients, partners, and friends; orchestrated a bit of grassroots marketing; kept our own co-workers informed. Things looked good: We quickly had 500, 600, 700 signups; two weeks before the date, we broke the 1000 person pre-registration barrier. Time to become serious: With all the parallel stuff going on, we needed (and found) 8 moderators to introduce speakers, monitor chats and ask questions at the and, as well as 8 technical directors who had to learn how to capture Zoom calls to OBS and stream them to YouTube so that they could be embedded into iChair; create more than 30 YouTube streams; schedule about 50 zoom calls; and make the whole thing work on time for the (by then) close to 1400 attendees who had registered.</p>
<p>And it worked! The platform had glitches, sometimes a few seconds of sound were missing, some people had connection problems – but overall, things worked out ridiculously well for something that, given serious consideration, we should have expected to fail miserably. We had great talks, great sessions, a fantastic keynote, great interaction with our attendees. We got lots of great feedback (and of course some useful criticism), and everyone was kind of proud of themselves, and me most of all of everyone because it’s just incredibly satisfying to see how much people can achieve if they want to, and believe in it, and have fun doing it.</p>
<p>Try doing something impossible, occasionally. It’s a ton of fun.</p>Öffentliche IT und die SinnfrageStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/07/%C3%B6ffentliche-it-und-die-sinnfrage/2021-01-15T21:51:44Z2020-12-07T19:10:15Z<p>In meinem Post zum Thema <a href="/post/2020/12/06/wie-man-die-%C3%B6ffentliche-it-rettet/">IT bei der öffentlichen Hand</a> habe ich mich auf das Thema Gehalt konzentriert. Daraus könnte man schließen, dass ich das für das Wichtigste halte – aber das tue ich keineswegs. Es ist ein notwendiger, aber nicht hinreichender Bestandteil eines Gesamtpakets, und zwar der, der aus meiner Sicht im öffentlichen Dienst am schwierigsten zu ändern ist – deswegen habe ich zunächst dazu etwas geschrieben.</p>
<p>Aber es gibt natürlich noch eine Reihe weiterer Aspekte, die einen Arbeitgeber im IT-Umfeld aus meiner Sicht attraktiv machen. Ohne Anspruch auf Vollständigkeit oder Priorisierung (mit Ausnahme des letzten Punktes) habe ich dazu meine Liste zusammengestellt:</p>
<ul>
<li>Ordentliche Ausrüstung (Hardware, Software, sonstige Arbeitsmittel, Ausbildung usw.): In der Regel möchten alle Mitarbeiterinnen und Mitarbeiter das Beste, und wenn man sie das vertrauensvoll machen lässt, tun sie das auch. Die wenigsten Leute kommen auf die Idee, Dinge zu bestellen, die abwegig teuer oder beruflich nicht zu rechtfertigen sind. In der Privatwirtschaft kann man immer noch im Nachhinein korrigieren, wenn etwas aus dem Ruder läuft. Mit Steuergeldern kann man allerdings aus guten Grund nicht so umgehen wie mit privaten bzw. privatwirtschaftlichen Geldern, deswegen wird man im öffentlichen Umfeld vermutlich nie die gleiche Freiheit erzielen können. Aber man kann ein großzügiges Budget und einen einfachen und vor allem schnellen Beschaffungsprozess aufsetzen, indem man einen Rahmenvertrag verhandelt.</li>
<li>Vernünftige Arbeitsprozesse: Man schafft wenige, klare Rahmenbedingungen und überlässt es größtmöglich autonomen Teams, sich selbst zu organisieren. Man kann dabei einige Grundwerte vorgeben, wie z.B. benutzerfokussierte, von Tests gesteuerte Produktentwicklung, schnelle Zyklen/kurze Iterationen, MVP-Ansätze, stehende, interdisziplinäre Teams mit Ende-zu-Ende-Verantwortung statt kurzfristig zusammengestellten Projektteams. Diejenigen, die die Arbeit machen, wissen am besten, was funktioniert und sollten daran auch gemessen werden.</li>
<li>Teamübergreifender Austausch: Wissen verbreitet sich am besten, wenn Menschen freiwillig daran interessiert sind. Brown-Bag-Sessions, interne und externe Vorträge, Blogposts, gemeinsame Events, Interessengruppen und Workshops sind nur einige der Mittel, die dabei helfen. Die Energie, die dabei freigesetzt werden kann, ist ein großartiger Motor für Innovation. Die Erlaubnis, öffentlich über die Arbeit zu sprechen, erfordert ebenfalls Vertrauen. Auch hier wird man vermutlich mehr regeln müssen als in der Privatwirtschaft, aber ein Redeverbot ist sicher nicht notwendig.</li>
<li>Respektvolles Miteinander: Eine diverse, menschliche, freundliche, familienfreundliche, sichere Arbeitsumgebung, in der man sich gegenseitig etwas zutraut, sich hilft, Fehler nicht als Makel empfindet, Dinge offen ansprechen kann, transparent agiert – das mag für manche wie ein idealisierter Traum klingen, ist aber keine Seltenheit. Gerade, wenn man eine Organisation neu aufsetzt, lässt sich so etwas von Anfang an gleich richtig machen.</li>
</ul>
<p>Es gibt sicher noch viele Aspekte mehr, die ich im Eifer des Gefechts gerade vergesse. Aber ein letzter Punkt ist mir noch besonders wichtig:</p>
<ul>
<li>Sinn: In vielen Unternehmen und Unternehmungen ist das der kritischste Punkt. Hat das, was wir tun, wirklich Sinn? Noch ein Bankensystem, eine E-Commerce-Lösung, eine Werbeplattform – sind wir in solchen Umgebungen wirklich sicher, dass wir die Welt zu einem besseren Ort machen, wenn wir an solchen Dingen arbeiten? Ich arbeite seit knapp 30 Jahren gerne in der Privatwirtschaft und kann dort durchaus Unterschiede machen zwischen Dingen, die in Ordnung sind, solchen, die wirklich Freude machen, und solchen, an denen ich lieber nicht mitarbeiten möchte. Aber hier liegt aus meiner Sicht die größte Chance, und es ist nahezu tragisch, dass sie nicht genutzt wird: <em>Eigentlich</em> dürfte nichts die Sinnfrage so gut beantworten können wie eine Lösung, die der Allgemeinheit zugute kommt. Bessere Verteilung staatlicher Leistungen, weniger Bürokratie, einfachere Prozesse, besseres Gesundheitsmanagement, bessere Lösungen für Schule und Ausbildung … die Liste der Dinge, die die öffentliche Hand tut oder tun könnte, die ohne jede Frage <em>sinnvoll</em> sind, ist eigentlich paradiesisch. Das ist deswegen so schön, weil genau die Frage nach dem Sinn die ist, deren positive Beantwortung für Motivation von Mitarbeiterinnen und Mitarbeitern am allerwichtigsten ist.</li>
</ul>
<p>Was ich damit sagen will: <em>Eigentlich</em> müsste das Mitwirken an Lösungen im öffentlichen Dienst der tollste Job überhaupt sein. Dass es das nicht ist, ist tragisch und schadet uns allen. Und bevor mich jemand bezichtigt, auch nur einer von den »Die-da-oben-sind-alle-so-doof«-Schreiern zu sein: Das meine ich keinesfalls. Es ist unser Staat, gestaltet von den durch uns demokratisch gewählten Kräften, der hier die falschen Ergebnisse produziert, und deswegen sind wir auch alle daran mitschuld. Wir sollten das ändern. Eine Partei, die sich das auf die Fahnen schreibt, fände ich sehr unterstützungswürdig. Eine parteiübergreifende Initiative dazu noch viel mehr.</p>Wie man die öffentliche IT rettetStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/06/wie-man-die-%C3%B6ffentliche-it-rettet/2021-01-15T21:51:44Z2020-12-06T19:10:15Z<p>Die meisten IT-Fuzzis sind gar nicht so dämlich. Es gibt genügend Leute, die gute Ideen haben und sinnvoll dazu beitragen könnten, Dinge besser zu machen. Zum Beispiel die Corona-Infektionsnachverfolgung, über die ich gerade <a href="https://www.welt.de/politik/deutschland/article221852030/Corona-Nachverfolgung-Bund-verweigert-Robert-Koch-Institut-IT-Kraefte.html">diese Meldung</a> gelesen habe, die mich schier in den Wahnsinn treibt (sorry für das Medium):</p>
<blockquote>
<p>»Der Bund verweigert dem Robert Koch-Institut (RKI) während der zweiten Corona-Welle eine dringend notwendige Aufstockung des Personals. […] Der Haushaltsausschuss des Bundestags bewilligte dem RKI für den IT-Bereich nach Informationen von WELT AM SONNTAG Ende November lediglich vier neue Stellen – von 68, die das Institut beantragt hatte.«</p>
</blockquote>
<p>In einer Zeit wie der aktuellen an der IT, die sich um die Bekämpfung der Pandemie kümmert, zu sparen, ist an Blödheit durch wirklich nichts zu übertreffen. Wer auch immer diese Entscheidung getroffen hat, gehört selbstverständlich strafversetzt, das ist für mich überhaupt keine Frage. Aber es hat mich daran erinnert, dass ich schon länger einmal meine Meinung dazu aufschreiben wollte, was man eigentlich tun müsste, um die öffentliche IT zu verbessern. Mehr Geld zu investieren erscheint mir fast die einfachste Aussage dabei. Aber was macht man mit dem Geld? Wem gibt man es?</p>
<p>Entwickler und Entwicklerinnen, die gut darin sind, IT-Lösungen zu konzipieren und umzusetzen, gibt es selbstverständlich auch bei den großen Systemintegratoren und Unternehmenberatungen in Deutschland, McKinsey, T-Systems, Accenture, BCG usw., die typischerweise öffentliche Aufträge bekommen (so wie z.B. bei der Corona Warn App). Ich persönlich glaube, es gibt noch mehr davon bei kleineren Unternehmen wie z.B. <a href="https://www.innoq.com/de/">dem, für das ich selbst tätig bin</a>. Aber mir ist klar, dass man es mir mit einiger Berechtigung als tendenziöse Aussage auslegen kann, wenn ich lieber kleinere Unternehmen als große bei öffentlichen Aufträgen sehen würde. Aber das ist gar nicht das, worauf ich hinaus will.</p>
<p>Was dann? Sehe ich das Heil in Open-Source-Lösungen, vertraue ich darauf, dass die Community magisch gute Lösungen baut? Quatsch. Natürlich gibt es tolle Open-Source-Software, aber ohne Incentives entstehen hier (zu recht) nur genau die Dinge, auf die Leute Lust haben, und sobald die Aufgaben unangenehm werden, wird man lange suchen müssen, bis man jemanden findet, der die Dinge freiwillig, dauerhaft und zuverlässig erledigt. Warum auch? Die meisten Menschen haben schon einen Job, der für sie an erster Stelle steht. Ehrenamtliche Tätigkeit ist toll, sollte aber immer nur so genutzt werden, dass man auf sie im Zweifelsfall auch verzichten kann.</p>
<p>Was brauchen wir also eigentlich wirklich? Aus meiner Sicht sind die Antworten darauf eindeutig:</p>
<ol>
<li>Öffentliche Auftraggeber brauchen Geld, um es in IT investieren zu können.</li>
<li>Viel wichtiger jedoch: Sie brauchen IT-Kompetenz, und zwar ganz massiv und in allen Bereichen, in denen sie Aufträge vergeben. Es gibt heute keine einzige Behörde, kein einziges Amt, keine Stadt-, Kreis-, Landes- oder Bundesbehörde, die nicht in ganz erheblichem Umfang von IT abhängt (bzw. es tun sollte, um sich zu verbessern).</li>
<li>Der einzige Weg, solche Kompetenz dauerhaft aufzubauen und zu halten, ist durch festangestellte, gute, motivierte Mitarbeiter und Mitarbeiterinnen, die die wichtigen Entscheidungen treffen. Natürlich können diese externe Expertise oder Kapazität hinzuziehen, wenn es nötig ist, aber sich von Externen abhängig zu machen, ist ein sicherer Weg ins Verderben. Inkompetenz wird von Anbietern ausgenutzt, zum Schaden aller (mancher mag ergänzen: mit Ausnahme des Anbieters).</li>
<li>Eine starke, interne IT, die sowohl selbst Lösungen entwicklen als auch kompetent Aufträge vergeben kann, ist der entscheidende Erfolgsfaktor. Idealerweise entwickelt sie diese Lösungen dann als Open Source, damit sie von anderen Institutionen wiederverwendet werden können.</li>
<li>Die öffentliche Hand muss nicht nur Stellen genehmigen, sondern sie muss auch ein attraktiver, konkurrenzfähiger Arbeitgeber sein. Natürlich sind Beamtenstatus, Arbeitsplatzgarantie, Pensionsansprüche usw. eine tolle Sache und lassen sich zu einem gewissen Grad in Gehalt umrechnen. Aber IT-Spezialisten und -Spezialistinnen, die in der freien Wirtschaft das zwei- oder dreifache verdienen können, werden sich zu recht sehr genau überlegen, ob sie bei einem Amt anheuern.</li>
</ol>
<p>Die Krise in der öffentlichen IT wird nicht zu beseitigen sein, bevor man Punkt 4 nicht aggressiv angeht. Ich habe wenig Hoffnung, dass das kurzfristig passiert – schließlich müssten Entscheidungsträger dafür kämpfen, Menschen mehr zu bezahlen, als ihre eigenen »Untergebenen« oder vielleicht sogar sie selbst verdienen. Aber ich bin fest davon überzeugt, dass das der einzig sinnvolle Weg aus der Misere wäre. Und <a href="https://www.gov.uk/government/organisations/government-digital-service">manche Länder</a> <a href="https://www.usds.gov">haben</a> <a href="https://www.dta.gov.au">vorgemacht</a>, dass so etwas funktionieren kann.</p>
<p><em>Update 2020-12-07:</em> Gehalt ist natürlich nur ein Aspekt, und weder der einzige noch der wichtigste. Ein paar meiner Gedanken dazu finden sich <a href="/post/2020/12/07/%C3%B6ffentliche-it-und-die-sinnfrage/">in diesem Follow-up</a>.</p>AccessibilityStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/03/accessibility/2021-01-15T21:51:44Z2020-12-03T19:10:15Z<p>A long time ago, I recorded a podcast episode with <a href="http://www.heise.de/developer/artikel/Episode-38-Barrierefreiheit-1780121.html">Artur Ortega</a> (in German, but we’ve actually got <a href="https://www.case-podcast.org">another one coming up in English</a>, although not about this topic; also, Artur is active on Twitter as <a href="https://mobile.twitter.com/DesignedByBlind">@DesignedByBlind</a> and worth following, just saying.) We talked about accessibility, and the discussion we had before we actually started recording really opened my mind to a world I had only known extremely superficially. What was especially mind-blowing to me was that Germany, my own country, turned out to be rather not at all the model environment I had expected it to be. In fact, when you look a little more closely, Germany is actually a disaster. For example, it’s still perfectly acceptable for schools, public buildings, or cultural venues to not be accessible to wheelchair users. There is still no law mandating private web sites are accessible (although there is one for the public sector, but it’s still pretty new).</p>
<p>I find this completely unacceptable. I think it’s a disgrace that it’s still up for debate whether someone who is visually impaired, or someone who can’t hear, or someone who can’t use a mouse, can be excluded from using some service <em>even though there would be perfectly good ways for them to use those things if people made a bit of an effort</em>. Worse, sometimes it’s more a case of people <em>ruining perfectly good accessibility</em> that’s built into things already, simply out of ignorance.</p>
<p>This is one of the cases <a href="/post/2020/12/01/speaking-up/">I referred to</a> before: I think we as an industry have a resonsibility here, a responsibility to refuse to build things that exclude people. And of course “the industry” here is just a placeholder: I think it should be each individual’s responsibility to care about those aspects, and to refuse to build inaccessible things if they’re asked to do so.</p>
<p>Now of course, this may not always be feasible, and I don’t subscribe to the view that indididual action is enough to heal the lack of legal rules and regulations. But being loud-mouthed about it, talking about it, trying to advocate it wherever you can, voting appropriately, and simply <em>caring</em> about this should be a moral duty.</p>Speaking upStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/12/01/speaking-up/2021-01-15T21:51:44Z2020-12-01T19:10:15Z<p>Here’s one of the things I’ve started to believe in the last few years: Society has been very good to us, and we owe it to society to become more active to change it for the better (or prevent it from becoming worse). By <em>us</em>, I refer to us tech people – developers, software architects, anyone remotely connected to the highly successful “digitalization” industry. Sure, we used to be the unhappy nerds noone wanted to party with, and maybe at some point in time, self-pity was justified. But those days are long gone. These days, people in this industry make something between a comfortable and a ridiculous amount of money, and often have the luxury of being able to take their pick from multiple job offers. We’re respected, possibly envied, and not only financially: We’re also the ones who know how most of the new-fangled stuff works, at least to a larger degree than most “normal” people; we’re never the ones who are threatened by new technological developments – we’re the ones helping to create the thread. It’s nice to be in that position, and I enjoy it quite a bit. (Not threatening people; you know what I mean.)</p>
<p>I am not saying that the IT industry is inherently bad, or that progress can be stopped, or that work that can be trivially automated shouldn’t be. What I am saying is that we need to start doing those things more responsibly than we did in the past.</p>
<p>On the more trivial side of things, it means that some tech people need to shut up. Just because you’ve been lucky enough to be in the tech industry at the right place and time enabling you to make a metric shit-ton of money doesn’t make you more worthy of attention, or your ramblings on whatever ethical or political problem you write or talk about relevant. When I was younger, I used to believe in the awesomeness, the general genius of some of my tech heroes, independently of what it was they talked about. It turns out that’s a really bad idea, and there are numerous examples of brilliant tech people who turn out to be complete fools when it comes to topics any politics, sociology or psychology major learns within their first university year.</p>
<p>On the more relevant side of things, I believe that we need to speak up, specifically in those cases when our expertise is important to arrive at good decisions. Some examples include the capabilities and limits of machine learning and the related risk of bias, end-to-end encryption and the foolishness of trying to break it a little bit to support law enforcement, the risks of algorithms driving user engagement on social media platforms, the horrible concept of electronic voting, or the lack of accessibility of web sites and apps. While we’re definitely not the right people to make those decisions on our own, it’s an even worse idea for anyone to make them without appropriate technical input.</p>Why is this Site so Ugly?Stefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/11/30/why-is-this-site-so-ugly/2021-01-15T21:51:44Z2020-11-30T19:10:15Z<p>You might think the answer to this question is obvious: Because I don’t know CSS well enough to make it beautiful. And while technically, that’s 100% correct, there’s also a secondary reason: I wanted to reduce the effort to maintain things around here to an absolute minimum. I just wanted things to be clearly readable, and I think the current “design” serves that purpose quite well.</p>
<p>Of course even the 20 or so lines of inline CSS (yes indeed) are stolen from the brilliant <a href="https://perfectmotherfuckingwebsite.com">perfect motherfucking website</a>. I inlined them because that means that if you’re reading a page like this one, your browser was served exactly that, a single page (unless I include an image or diagram because it makes sense for the content). It’s as design-free as I dare to make it. I think this works very well for single content pages.</p>
<p>Of course, design matters more on other pages, e.g. the home page itself. But I don’t really think that’s a problem either. Who would end up visiting that anyway? Chances are you arrived here because you followed a link from some social media post, or because something turned up in a Google search. Home pages are vastly overrated.</p>
<p>I also tried to opt for the (to me) simplest possible setup with regards to authoring posts and maintaing this site. So I decided to host this on <a href="https://www.netlify.com">Netlify</a>, based on a <a href="https://github.com/stilkov/netlify-site">Github repo</a> containing a very minimalistic <a href="https://gohugo.io">Hugo</a> setup (originally based on the <a href="https://github.com/yihui/hugo-xmin">xmin theme</a>, but there’s really nothing left of it). Create a post, add, commit, push, done. It’s simple and serves its purpose, but I’m not <em>completely</em> happy with it: For my taste, Netlify is way too slow – probably unnoticable for many sites, but in this particular case, there is really almost no content to serve, and the fact that occasionally takes more than a second is pretty ridiculous. But I’ll deal with that another time.</p>
<p>My goal was to reduce friction, and make sure I have zero excuses left for not writing. With this and the last post out of the way, I think I may have to admit I have reached that goal.</p>
<p><em>Update 2020-12-15</em>: Some things have changed, I’ll document them soon (e.g. this is now built with Hugo as a GitHub action, and the result is served by GitHub Pages).</p>A Collection of Old StuffStefan Tilkovhttps://www.tilkov.com/https://www.tilkov.com/post/2020/11/30/a-collection-of-old-stuff/2021-01-15T21:51:44Z2020-11-30T19:09:15Z<p>It’s hard to believe even for myself, but for quite some time (from 2003 until 2010), I was a very regular “blogger” (Don’t laugh! Yes, we did use that label unironically back then.) I’ve tried multiple times to restart the habit, but managed only 30 posts from 2011 to 2017. For now, I maintain all of my posts from back then <a href="https://www.innoq.com/blog/st/">in an archive</a> over on the innoq.com main site, under the original URI.</p>