Agentic Software Engineering

Unlike a chatbot, agentic programming environments such as Claude Code or Cursor can not only answer questions, but also read your files, execute commands, make changes and solve problems autonomously. This changes the way we work: instead of writing code ourselves and asking the agentic programming environment to check it, we now describe what we want, and the agent researches, plans and implements it.

As the use of coding agents increases, so too does the number of studies warning against becoming overconfident when dealing with LLM-generated code. Whilst there is ample evidence that these tools can accelerate development – particularly when creating prototypes and on greenfield projects – the studies show that code quality can decline over time.

GitClear’s 2024 study, AI Copilot Code Quality, found that code duplication and code churn had increased more than expected, whilst refactoring activity in commit histories had declined. A similar trend is evident in the Microsoft study The Impact of Generative AI on Critical Thinking: AI-driven confidence often comes at the expense of critical thinking.

Speeding up one part of the workflow increases the pressure on the other parts. We found that the effective use of LLM agents requires a focus on code quality, and that established practices such as Test-Driven Development and static testing are becoming increasingly important, particularly when integrated directly into coding workflows.

This tutorial covers approaches that have proven effective within our teams and for data scientists who use coding agents across a wide variety of codebases and environments.

However, most of our recommendations are based on one limitation: the coding agents’ context window fills up quickly, and performance declines as it fills. A context window contains your entire conversation, including every message, every file that has been read in, and every command output. A single debugging session or the exploration of a codebase can generate and consume tens of thousands of tokens.

This is significant because LLM performance declines as the context fills up. When the context window becomes full, coding agents start to ‘forget’ previous instructions or make more mistakes. The context window is the most important resource to manage. To see how a session fills up in practice, track token usage continuously.

This tutorial is intended as an introduction to agent-based software development. For an introduction to Python, see the Python basics tutorial; for the Python Data Science Stack, libraries such as IPython, NumPy, pandas, and related tools, see the Python for Data Science tutorial. In addition, we also offer the Jupyter tutorial and the PyViz tutorial, as well as a guide to data visualisation in the cusy Design System.

All tutorials serve as seminar documents for our harmonised training courses: