Blog by Markus Harrer

Blog Post

Where AI Helps (and Hurts) Across Different Coding Scenarios

Where does LLM-assisted software development improve developer productivity—and where does it fall short? Instead of treating AI in software development as a one-dimensional productivity booster, we explore the question across several dimensions suggested by a Stanford-adjacent study: project maturity, task complexity, and the popularity of the programming language. The goal is to create a more realistic expectation baseline for both software developers and leaders—well away from today’s hype.

Blog Post

Modern Legacy (thanks to AI)

The discussion around software modernization is currently dominated by solutions involving artificial intelligence (AI) in software development. AI-assisted code completion, agentic software engineering, and other tools promise to massively accelerate development processes. The obvious thought is to apply these tools directly to existing code as well: refactorings, re-documentation, or even generated code for new features in legacy systems. Technically, much of this is already possible, and the buzzword industry is once again in full swing. Yet these code-centric, AI-driven approaches can be shortsighted for organizations tangled in a jungle of legacy systems. A modernization that focuses solely on code quickly leads to modern legacy: systems that appear technically advanced and well documented thanks to AI, but whose actual purpose has long become questionable.

Blog Post

Software Analytics going crAIzy!

From analyzing problems in software systems to working solutions with AI

Blog Post

LLM-assisted Abbreviation Mining for Legacy Systems

This blog post shows the process of mining abbreviations and discovering first concepts a COBOL legacy mainframe codebase is made of with the help of Large Language Models. It uses Python, pandas and Claude 3.5 Sonnet to generate insights that can be gathered from such a simple thing like a list of files.

Blog Post

The Evolutionist

The current training and further education of software developers strongly focuses on the development of new software. Conferences and trade magazines are full of new programming languages, new tools, new hypes, which seemingly never cease to amaze. Quick results, direct feedback, and unprecedented productivity are suggested. The urge to incorporate the new into one’s software is awakened – until one is brought back to reality: their own legacy system.

Blog Post

Evolving software like an orchardist

Comparing apple trees with software modernization

Blog Post

cards42 English edition

Finally, cards42 is available in English! The cards42 project supports software developers in your daily work with software architectures. 30 cards provide brief food for thought for stuck situations and help shed new light on difficult challenges. This article provides detailed explanations as well as the background and further information about the cards.

Blog Post

Software quality in the context of value chains and evolution

Quality goals help to make more informed architectural decisions. However, identifying a set of the most needed qualities is a challenging task. Quality requirements are strongly dependent on the perspective of individuals. The importance of certain qualities also changes over time. In this blog post, I introduce an idea that helps to understand qualities in terms of their relevance (and non-relevance). We discover how qualities interplay with value creation activities and evolution by using the ISO 25010 quality model together with Wardley Maps as a foundation.

Blog Post

Collaborative Learning with Mobshops

First impressions from an online-first teaching technique using remote mob programming at its core

Blog Post

Defect Analysis using pandas

Defect Analysis is a classic analysis technique to get insights into how buggy your system might be. In this blog post, we explore how Defect Analysis works and how we can implement it with a standard data analysis tool from Python: pandas.