Some Thoughts About Joel and AI #JoelKallmanDay

Where I Saw Joel for the First Time

I remember Joel Kallman’s talk on the boat at APEX World 2019 in Rotterdam very well. I was sitting in the front row on the right, about two metres away from Joel, enjoying his talk. Because I was that close, I could see the screen of his laptop. He made use of the available technology: presenter view, which allows you to read your prepared text word for word or just ensure that you do not forget to mention an important point. Some people like using presenter view, and others think you should know your slides and therefore just see what the attendees see. I’m in the latter group, also because I was always afraid of mixing up the presenter and audience views and not being able to fix it in time, especially when switching between slides and live demos. So mirroring was and still is easier for me.

The talk was excellent. The content was good. It was well presented. It was his talk. The fact that he used technology to support his presentation does not change that. So at what point does using technology change who we consider the author?

I wonder what Joel would think about AI as we know it today.

How I Looked Things Up in My Early Days

When I was in school, I liked Duden’s Sinn- und sachverwandte Wörter the most. You could look up a word and find synonyms and words with similar meanings. I spent a lot of time looking up words and was constantly irritated by my inability to easily put letters in alphabetical order in my head to decide whether I had to go forwards or backwards. Is “m” before “o”? So I silently say “a, b, c, d, e, f, g, h, i, j, k, l, m, n, o” to the melody of the alphabet song we learned in my first school year (similar to this). And ah, yes, “m” is before “o”. So backwards… Sounds silly, but “a, b, c, d, e, f, g” is probably the phrase I use most in my life.

Back then, I thought it was fancy not to repeat words in the next sentence in my essays, and basically in general, because we were taught that it was a good thing. In the meantime, I have come to believe that you should use the same word to refer to the same thing, regardless of how often it appears in a text. It is less ambiguous. In other words, it is clearer and easier to understand. I believe this is true in IT and in business in general. For poetry, this might be different, but that’s for sure not my domain.

I also used Duden’s Die deutsche Rechtschreibung and the Brockhaus Enzyklopädie to look things up and sometimes stumbled across something interesting while scanning the pages for the original term. Driven by curiosity, I learnt a few things along the way.

In any case, even back then, what I wrote was influenced by things I had read. Sometimes intentionally and, over time, for sure also unintentionally. Learning words and ways of expressing things from others is different from presenting their text or ideas as my own without acknowledgement. That would be plagiarism. But if I could measure how much of my writing was influenced by others, the percentage might well be substantial.

What I want to say is that I started asking for help very early. Often I asked my father, because he basically knew everything and had a perfect memory. It was easier for me to ask him than to look it up myself (remember, I always had to repeat “a, b, c, d” in my head). But more often than not, he just gave me the right book so I could look it up myself and was available to discuss things.

Since then, many technological inventions have improved our ability to look things up ourselves.

My First Contact With AI

I guess my first use of AI tools was DeepL. I didn’t know that at the time, but DeepL has been using neural networks to translate text since its launch in 2017. See How does DeepL work? for an explanation of the technology.

Before DeepL offered DeepL Write, I often translated a text from German to English, then the English result back to German, and that result again to English. I made some adjustments in between and repeated the process until I was satisfied. It usually produced a good result, something I felt I could have written myself if given enough time. I provided the initial input as German text, after all, right?

Autocomplition & Refactoring

Long before today’s AI assistants, IDEs already provided autocompletion and refactoring based on rules. Autocompletion used information about the programming language and the code, and refactoring applied hand-written transformation rules. I used the Loop can be collapsed with Stream API transformation and similar transformations just to better understand newer language alternatives. Some of them I kept, with or without adaptations, and some of them I completely reverted. Once I had reviewed and committed the changes to version control, I considered it my code. I was driving the development, after all, right?

Nowadays, IntelliJ IDEA’s Full Line Code Completion plugin, available as part of the Ultimate subscription, uses a local deep learning model to complete code. So, even if I don’t use an AI assistant to create code, I use local AI to complete code, which I then claim as my own. I was driving the development, after all, right?

Does It Matter?

I guess it depends. On the size of the result, the overall change, the potential impact and so on. When I’m in the driver’s seat, I decide what to accept and take responsibility for the result. However, with large results, I am easily overwhelmed and unable to decide quickly. Being in the driver’s seat is only useful if I can still understand and assess what I’m accepting.

A presenter view, a dictionary and an AI assistant do different things. AI can produce a whole text or a large amount of code. If the AI writes the code, what makes it “my code”? With spec-driven development, I might think of myself as the owner of the guardrails I give the AI: the specifications, including the input for test cases. But that is a topic for another post.

When you ask the CEO of a startup company whether they developed the company’s product alone, they will most probably say no and explain who else was involved in making it happen. It is usually a team effort. Even products from single-person companies often involve help from somebody or something behind the scenes.

AI tools are becoming part of that process. Just tools, but tools that can improve our efficiency. Ignoring them where they are useful may put us at a disadvantage in a functioning market economy. But using them does not automatically make us more efficient. The time needed to check and correct the result also counts.

So for me, the question is how we can use AI tools in a beneficial way and in which contexts that makes sense.

Yes, I Use AI on This Blog

So yes, I use AI on this blog too. You can see this very clearly in the featured images: most of those published since 29 July 2024 were generated by AI. I also use tools such as Grammarly, DeepL and AI assistants to help with the text. For this post, I started with my own draft and used AI to review the language and logic and help write this ending.

The memories, opinions and the reason for writing this post are mine. I decide what to keep, what to change and what to publish. And I remain responsible for the result. For me, that is an important part of being the author, even when I have help.

Looking something up in a book, translating a text and asking AI for a suggestion are different kinds of help. I need to understand what each tool contributes and decide whether it is useful for what I want to say. Sometimes it is. Sometimes I have to change it or start again.

I cannot know what Joel would think about today’s AI. But I remember his talk and what he shared with us. Presenter view was part of how he delivered it, and it was still his talk. That memory is a useful reminder for my own work: I can use the available tools and still put my own thoughts and care into what I share.

And yes, I still consider this my blog post. Without blushing ;-)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.