DDD North 2026

DDD North 2026

DDD North was held at the University of Hull on 28th February 2026 which attracted attendees and speakers from around North, throughout the United Kingdom and some from further afield. There were a great selection of sessions covering many interesting topics from a variety of speakers plus an opportunity to meetup with fellow developers and more. It was great to travel down from the North East of England, and although wasn't speaking this year - except for a lightning talk at lunchtime, it was a fantastic opportunity to learn from those who were.

Building Agentic AI with Copilot Studio: Patterns and Pitfalls - Dylan Hayes

Dylan covered Copilot Studio and talked about some of the challenges, where it fits and doesn't. Dylan is a consultant and will be passing on his learnings from others in industry and their own experiences and you couldn't move last year without hearing the word agentic. Dylan is a consultant, wanderer and Microsoft Most Valuable Professional and is most active on LinkedIn they work for Blacklight Software which are a Microsoft consultancy.

Where are people on the hype curve from technology trigger, peak of inflated expectations, trough of disillusionment, slope of enlightenment and then plateau of productivity. There is the sweet intersection between things LLMs are good at, things developers understand and software development in-between. Copilot brings automation to other processes and software development gives illusion that all problems are solvable. There is things LLMs are good at, things developers understand, and business processes is more of an issue as not many developers understand business processes and not everything does do this as can be hard to describe.

Copilot, Microsoft is unifying end user AI under “Copilot” branding, so many ways to get Copilot in different products, so many ways to be confused about what does Copilot mean, when mention Copilot won't know exactly what is being talked about. Copilot is the UI for AI, agents of change where what agent means is changing, Copilot is your control surface for building your solutions, try and find a problem it solves and what the product solves.

Where does Copilot Studio sit in the stack? There is Microsoft 365 Copilot, Copilot Studio and Microsoft Foundry. Copilot Studio is low code for custom AI agents, such as a help desk agent but the application lifecycle management is difficult and don't have intimate or deep control of this so can randomly butt against guardrails. Microsoft Foundry allows full-control enterprise AI platform where can have custom Copilots with model choice and safety and if serious about it where you can have more orchestration and control. Copilot Studio is a good place to explore and prototype things.

Copilot Studio architecture is where it sits between the data sources for knowledge and various places where you can interact or out from with this including Web, Microsoft Teams and more where before agents were the humans but now humans are humans in the loop. One thing to be aware of, anything older than six months maybe wrong and older could be incredibly wrong.

Some bold claims include that in the future agents will complete many, many tasks for us, AI will eat the traditional software application plus integration and governance must be addressed especially when rapidly building out things. Idea of vibe coding and can start using an application can work in a large company. The numbers don't lie, for example stock price of Salesforce has dropped compared to the rise in general, those people selling SaaS style products are not doing well which is where people are betting on the traditional software industry is dead.

Let's define the term agent, "agents" is a confusing word but "chatbots" is worse, "agentic Ai" is here where it means agents have independence to do stuff and can repeatably do stuff. Tools, decisions and judgements for agents which can sound like a business process, which are a recipe where agents are like a chef to go through actions and produce an output from guidelines or ingredients you have, you are writing specifications not instructions.

How do we control agentic AI risks, guardrails in the LLM block known exploits, define the agent's job carefully in the prompt, use the least trust to do the job, consider what is exposed in MCP servers when writing and using them and control scope, does your agent need to do everything such as a database MCP that can drop tables - why would you do this! Avoid the lethal trifecta and there is testing and governance around this. The lethal trifecta where LLMs have no difference between data and instructions which is quite scary as what if the content contains evil instructions which is prompt injections so the trifecta for an LLM to be useful is they need to have access to private data, communicate externally and exposed to untrusted content, the idea is you are crossing the streams and you have to fundamentally do things that are dangerous. Data quality matters, hardly anyone has seen that every piece of data is perfect, any problems with data are magnified by issues.

Pricing models can per message where it is pay as you go consumption or with a tiered capacity or can prepurchase at discounted rates at around 25,000 messages per month can be ten messages with Copilot to interaction so could be 2,500 interactions per month instead, pricing model can also be bundled with Microsoft 365 Copilot. LLMs don't care about language it is just tokens so if ask a question in Welsh it will answer in Welsh and can mix data sources and use things like MCP, or Model Context Protocol can be used but the results depend on the quality of the MCP server and agents can also consume other agents, you could have main sources of data or secondary sources. With A2A you can have agents talk to each other on different systems or can hook them up to a well-defined API endpoint so the power of connectors can make agents more useful but there is a potential for mayhem.

An existential problem, how much you trust these things, there is a testing framework for Copilot Framework so can formulate a list of questions or do regression tests but because it is none deterministic so have to run these things many, many times to have that assurance, you can have test cases of what to expect for a given input. Closing themes to remember, jagged intelligence where can have a genius at one thing but stupid on another and don't know for a given case which it will be, if something can answer a question well doesn't mean it can do so for any question. An infinite army of pretty good and the floor is lava, you just can't sit there and expect it to keep working, the world is changing very quickly.

Subtle art of MCP - Phil Whittaker

Phil is an AI staff engineer at Umbraco who builds MCPs and has a lot of agent skills. What is MCP? MCP was released in November 2024, which is Model Context Protocol, Model is the LLM, Context is bringing things into the LLM and Protocol is something that is widely shared and MCP is part of the Linux Foundation. If using APIs with tool calling it was a pain to get working and to have multiple tools was really hard to do and MCP makes this tool calling really easy to do. Anthropic said think of MCP as a USB-C port for AI applications, but they think of terms Pick 'n Mix where the idea is you choose your own things, an MCP you set out your stall of things, your tools, elements and things our LLM can pick from and you give your LLM your task and can use a set of tools it can use and have no control over which tools it will use.

Have an MCP client which sits in a host like Cursor or Visual Studio Code and then then have MCP which defines how the LLM talks to services and then have MCP like Umbraco MCP which can create e document, get data types and more and can have one to many relationship between client and sever with local MCP servers like Umbraco MCP and Filesystem and remote MCP services such as Atlassian and Cloudflare. Core elements of MCP servers are tools, resources and prompts where tools are what a lot of people use and are a function call an LLM can make which can use a database, call APIs or trigger other logic and can have resources which is where you can pull in information into context and can be parameterised such as a document resource and finally have prompts which are saved conversations such as a workflow or things that have worked in the past and can be parameterised as well.

Umbraco MCP with 340 tools with 100% API coverage which actionable content management you can do many things such as moving all unused data types into an unused data type folder such as string or Boolean or user defined ones and these can often be forgotten about. They thought about their Umbraco Management API and take this information and put this into their system and used something like Orval which is a Restful client generator which takes the OpenAPI schema which takes this into new models and stubs without having to build this to generate the code and Orval has a generator for MCP but the problem with this is code that is highly optimised and setup but is really hard work to add or update anything this way so they looked at other services such as a Python package FastMCP which was better than Orval one but doesn't work very well and even had a post about stopping converting their REST API to MCP but your REST API should be your starting point.

What they did instead to use Claude Code where the agents there can create things, they had golden examples of how to create things and set this up with skills to create the code, they had test helpers, tool creation agents and integration tests and review agents along with antagonistic agents behind them and could generate the code exactly how they wanted them to be. MCP tools have a machine-readable name, human readable name, input schema for the tool will accept and an output schema to tell the LLM what to expect out of the process and then will have a function call to perform the action and the output with the input and output matching the schema but can spend a lot of time tweaking control surfaces and the function call is deterministic but the control is probabilistic so have to think about how these control surfaces are perceived by an agent and how you can tweak and adapt these.

Choose names carefully as it is really important you manage this in the right way and get these names set up correctly, don't have names that are ambiguous or may clash such as have a verb starting convention like get to help the LLM pick up the tools correctly. Craft creative descriptions which can help the LLMs understand how to work with a tool and how to pick up a tool so that an LLM understands this so need to be careful about the information you include and models are different so Anthropic models like XML but OpenAI models don't care so need to be more general so it will work with models. Annotate schema properties to give as much information to give the information to the LLM to use it in the best possible way, it is like talking to a child not another programmer.

Simplify input and output parameter schemas, need to understand between deterministic and probabilistic intent so strip out things that would be a problem such as defaults or UUIDs and make sure the output can be understood well and need to think about the structure especially as tokens are expensive. Bundle related API calls into single tools, in Umbraco they have a tree hierarchical structure and the UI was set up to handle this but the LLM would try to cycle through hierarchy which would take a long time and had to infer what to do next so took this from a probabilistic problem to a deterministic and APIs only change on major versions so they can reduce twenty tool calls into one which does many actions together.

Granularity in MCP tools, have a few tools with specific tasks or many small tools that are composable, Umbraco has many small tools and can group things together that is not possible in an API where could use code to do this but can make it easier, or an editor tool can be a specific tool but need to understand from project or consumer perspective whether to use a few large tools or many small tools and can be subtle about how this works and the decisions you have to make.

Improve API error messages rather than just generic error messages so this can help the LLM understand what has gone wrong, you need to have really good messages from your API which is good for humans, so not just HTTP status codes but include information for humans. Pagination map API to cursor model which is an opaque cursor-based approach instead of numbers for pages, so take away pagination control away from agents so use a next cursor and the page size is in the deterministic element.

Add correct tool annotations to allow more structure and understanding such as read only, destructive, idempotent or open world for ones where can limit it calling it again if needed. Limit tools on auth scope as when an LLM uses a tool it won't understand why it can't use it so limit the tools available depending on what the user is rather than limit the tool itself, so the user has access only to the tools they have access for.

The brilliance of MCP lies in its subtlety, MCP should be seen as an adapter layer allowing developers to influence how the LLM sees the world, it should be one of your frontiers to undertake with context engineering, everything they do is through the lens of this, which is the act of ensuring your context window only has the information it needs to get the job done, if you fill it with more stuff it will confuse the agent which may cause more hallucinations and always need to think about the context window. Context was your conversation window in the past but everything has changes since agentic AI came out and the context window looks very different which can have system prompts, system tools, own system tools, agents.md or instructions which can be included.

Context engineering was the big topic but now have active context management, managing this is really hard and knowing what to include was hard work and this solves this problem with the release of skills and further. Active Context Management is like a tool kit where have a visibility of these tools and can know what they are but they only become active when you pick them up, so don't have this problem any more, with progressive discovery with minimum impact on context window and pick them up as you use them, where a year ago over 50% of context window was taken up and with all the Umbraco MCP was over 100% and now the context window is smaller with active context management and MCP search tool where you have a hook that happens when a tool call is attempted to be made or start of an agentic loop and will go to tools and see if any can help and only then it will bring in these tools to help, context engineering is important but is becoming more of a solved problem.

Align with use cases, so can have all of the Umbraco MCP available in the agents but this can still cause problems, it can do things that you probably don't want to do so they have created tool collections where tools sit in a grouping for document or data types so makes it easier to put this into availability for agents and have modes or slices such as create or delete where can control which tools are available so can manage this which is really important on defining what the MCP can do. Accommodate Host / Client nuances and what is going to be used, the elements and outside of MCP need to be considered Claude Code and Claude are released by same company but MCP can see them in different ways as there is different abilities where can't bring in different files but other ways can, so need to consider what hosts are using your service which may include deterministic workflows like n8n.

Accept models will change, new models will come out all the time, and they will only get quicker and the difference between GPT-4 and GPT-5 were so great and with Cursor nothing worked so they had to re-write their prompts. Coordinate multiple MCP services such as Figma, Playwrite and Umbraco with different domains works well but if have others that are same how will it pick the right one so when build a tool can do things like namespacing so don't get a clash.

Agent skills which is a directory of files which can have scripts, which is a great thing but is very ephemeral and easy to change, adapt and update, they use them for useful things like coding structures and MCPs are structural and have SDKs behind them and are very deterministic once hit functions but with skills they are not like this, these two things are complementary. Content modelling can be hard, so they are setting up skills to infer and accept this knowledge but also have an Umbraco developer MCP server to make changes so the Agent Skill is the brain and MCP is the brawn or the muscle.

Adopt iterative mastery where MCP is easy to start but difficult to perfect, like SQL is easy to start but difficult to master, expect to refine schemas, naming, error handling and context management over time, we are on this pathway of agent development and improvement.

Zero to Hero - Empowering your Azure AI Investments with Azure Integration Services - Mike Stephenson

Mike covered how to super charge AI investments with Azure Integration Services to create something meaningful for real-world solutions. Mike is a Microsoft MVP for seventeen years and works with Azure Architecture and used it since it was first in preview. They are into cost management with Azure with Turbo360 where they have talked about this before. Their background is as an integration developer and core technologies are growing over the years and the amount of tech an integration developer has grown, and AI tech has come into it more and will explode even more over the next year and you can go into it more and show the art of what is possible with AI.

Agents have three core components with Model, Instructions which defines the agent's goals, behaviour and constraints and Tools which allow agent to retrieve knowledge or take action. Application Modernisation where they have tried to integrate Minecraft into Azure and then can you integrate Minecraft into AI, there is a big thing about application modernisation where if you can take a legacy version of Minecraft and AI enable that then you can AI enable anything of the applications have worked in. They have a modded version of Minecraft where can do things in the game and use different models to build things in the game, a bot will use an OpenAI model in Azure, you can ask it to build something like a simple arch and can ask the same of the different models to see what they do. They hope that Microsoft will AI-enable Minecraft which would help people build things in the normal game of Minecraft.

Conversational Agents were introduced which when building a logic app, you can chat with that logic app, if want to build AI to do stuff and if can just chat directly with the app this is a lot easier. With logic apps you can have when a message is received and within the agent loop can connect this to an AI model and provide instructions and can pass in the message from the chat to the agent loop and this will interact with the model and will do things for you, can also put some tools in that connect to Octopus Energy. Can then go into a chat mode and chat to the logic app where these will be fired off to handle the chat, you can also see what people are putting into the chat and responses to and from the agent, may need to think about costs when running logic apps at a higher scale. You can plug in other actions such as an API to get additional details could have another tool which will perform a HTTP action and have benefit of connectors so can have ones that work with a CRM or Dropbox and can put these connectors together.

Architecture is you chat with logic app which integrates with AI model and talks to API but in the real world no one is going to talk directly with a logic app, with an application you could iframe a logic application but people are using Copilot so what you want to do is connect to these systems and integrate these into Copilot. Logic app wraps the model, executes the agent and then the model returns but could put Copilot in front of this but can do something different and when using logic apps you can pick the model you want to use in Foundry but in consumption you don't configure a model this is all taken care of for you. You could use the same tools in different agent loops that can talk to different models if needed, There is a host.json for a Logic App and you can turn on an MCP server which makes them available to something else so can bring in these tools into Copilot Studio into a Copilot Agent which can then be used in Copilot where Copilot Studio can connect to other tools using agents, APIs with REST or MCP servers.

When interacting with an API can define the parameters that will be provided from the input, so when an agent is using a tool, it knows to provide those parameters although some values could be deterministic but could have specific values saved in state that can then be used by the other tools such as a customer number and reduce the chances of the tool using hallucinated data. Logic apps can be published as an MCP server where you can enable this and make them available without having to do anything to expose these for use with things like Copilot and can use the best tools to perform the tasks as needed.

Autonomous agents where there is no user involved so how you can use AI without a user with Azure Integration Services, can have a scenario where you get a bill from a provider where before would have these integrations where parsing the PDF where different providers had different formats, but with logic apps can do things that are really cool, so when you have something change in blob storage can get the content of this and then do something with it where AI can help a lot and can use Azure Document Intelligence which can help read PDF documents such as invoices and can then get back a JSON which could be parsed but instead with an agent loop which is triggered from this background automation and use an agent to perform an action on this to produce an output using a system prompt. You could also put this JSON structure into a different format or structure and call an API with that information using AI. May need to consider what is being done, it may just be a few documents but may be hundreds of documents so need to be mindful of costs which is a standard consumption problem which can be exaggerated by AI but could put guardrails in such as limiting the amount of times a logic app can be executed in a given period to stop too much repetition.

AI-enabling Turbo360 which is an Azure monitoring and cost management tool and created some agents that could do this was mocked up on a plane that were in production a month later which is the kind of thing that is possible for rapid prototypes that can then become a production thing. You can work at the abstraction level you want where can use logic apps with benefit with connectors but if not familiar with these can use code with Azure Functions or if want to write more code you can write your own C# code directly against the framework, which can include engineer a logic app from a prototype to a C# application in production. Don't forget API management such as AI gateway, rate limiting, caching where although can't cache in the model you can cache in the tools and save calling API etc, token policies and support for MCP.

Lightning Talk - Take a Note of MCP with .NET - Peter Bull

I work as a senior software engineer at Klipboard where we are taking advantage of generative AI within our products and to aid development including leveraging technologies such as MCP. MCP or Model Context Protocol is the open-source standard developed by Anthropic for connecting generative AI applications to external systems, MCP allows you to choose to explicitly make available any local files, databases and more. Workflows can be used to create controlled, repeatable sequence multi-step action workflows from prompts and craft local and remote tools to perform actions that allow models to do real work on your behalf.

Connecting AI models with Model Context Protocol enables GitHub Copilot to perform rich and context aware actions and with C# SDK for MCP can enable apps, services and libraries to interact with clients such as GitHub Copilot. Developers can create a local or remote Model Context Protocol server using the C# SDK for MCP by using dotnet new install Microsoft.McpServer.ProjectTemplates to create an MCP Server App.

Model Context Protocol makes it possible to take advantage of different resources when using generative AI for developers using GitHub Copilot such as leveraging Figma MCP to make it possible to be able to take high-fidelity front-end designs and implement these in front-end frameworks such as Blazor while retaining as much of the designer's intent as possible including colours, styles and other choices such as elements needed for accessibility.

MCP can also become part of a developer workflow to generate documentation such as with Obsidian which can be exposed to MCP via API plugins, this also opens the possibility of integrating other applications that expose an API that can be wrapped or can support MCP natively. MCP can also help enable scenarios such as developer onboarding where you can expose domain specific knowledge and code for integrating shared services.

You can create a Local MCP Server Console App for implementing tools in a local Model Context Protocol server in a Console App from a command-line application for Linux, macOS and Windows 11. GitHub Copilot not only can be used to surface the tools from an MCP server but can also be used to create the MCP tools themselves for managing notes based upon functionality within a Class Library. You can find the example for Take a Note of MCP with .NET at github.com/RoguePlanetoid/takeanoteofmcpwithdotnet.

Lightning Talk - Are Developers Obsolete? - Dylan Hayes

Dylan was on the subway in New York and noticed a lot of adverts for vibe coding examples. Where he will state the cases, are software developers doomed? The case for the prosecution, automation is always inevitable, in the aeroplane of the future where plane will fly itself and the human is at best there to take care of the automation. Software development is in-between LLMs are good at and things that developers understand. View from Wall Street is that SalesForce share price is dropping, there is an AI boom, but people aren't thinking software companies are worth investing in and if invest more in AI then this becomes the truth. We're not writing instructions we're writing specifications.

The case for the defence, requitements gathering is complicated, need to get to the green light and deployment can be challenge plus training and adoption, many projects fail if the adoption is poor along with need for support and there is still a need to write code as well. Other thing is critical to understanding Jagged Intelligence which is very good at some things and surprisingly weak at other things where being good at 95% of a task is not enough when the remaining 5% involves edge cases and discretion. There is still an existential problem when asking about things such as asking if a mushroom is edible and relying on this answer, when using an LLM it doesn't have much skin in the game, if you died from eating a poisonous mushroom then it has no agency, as humans we are responsible for things.

Humans are best at things that are hard to write rules for, judgement under uncertainty, anecdotal experience from other people, ethical discretion where humans have a moral compass and LLMs have guardrails which don't compare and humans understand consequences, the primary human skill is handling exceptions and when to give up and when to move on and being accountable are what humans do best.

Lightning Talk - Azure App Services - Riccardo Viglianisi

Ricardo is CTO and co-founder at Zure and talked about how their car broke and the infotainment screen failed and went onto a website and saw an Azure Hosted website and spoke about building Azure App Services and people may have built a function or a Web API. May have a built an API for an app with a database but this is not cool so will use an Azure Virtual Network with the app residing in a subnet for the application and the database and then configured traffic is applied but need to have a point that allows ingress into the Virtual Network using something like App Gateway but can bring additional things in to abstract this away with DNS.

Function Apps where have isolated them from the outside world, so where is your deployment such as a build agent like DevOps or GitHub and can this agent get access to these assets, it can't as they are isolated so you may deploy with a container with container registry or classic ways such as zip push but these are blocked but can do zip pull where can configure a storage account where the deployment can be pulled from instead.

Functions are built on top of app services and storage to persist the run state and one of the dependencies of functions are different types of storage from files to queues and as a minimum for zip push need file storage, file storage where the files will be deployed to and table storage. To access resources, you can have managed identities where can have an identity with permissions assigned to, but file storage doesn't support role-based access control.

Zip Pull allows you to build logic apps without using file storage, so when push a zip bundle to function app it pushes this onto web storage to emulate file storage but when pull one you just can do this into memory instead, but when managing the resources to deploy the binaries you're not pushing anything into it you're getting it to pull using configuration.

It is possible to poke a hole into your virtual network for your application which does weaken your app service isolation but can mitigate this with access, authorisation and authentication - we are restricting access from the outside so if weaken this you can tighten the other two ways.

Distilling GPT-5.1: Training an Open-Source Student with an Azure LLM Teacher - Gary Short

Gary is a founder of a boutique AI data science consultancy Darach.ai. Where might you have seen their work, they have worked for Heinz to create their commodity model, who have the most commodity traders as tomatoes and cocoa beans are traded as commodities. For National Highways they did some work on predictive maintainability for assets, which is anything that makes the road network work that isn't the road itself and wrote a risk model for them and they didn't know how much it will cost before this model but would know how to do this historically and allows them to state the monetary risk that budget issues may introduce. They also did work for Lime to create a safety model, when have an accident and this is detected where forces reach a threshold where someone in the control room gets informed and they could send police or ambulance. They work with a company called Fixzy which is an insurance tech company with AI loss adjustment where you take a picture of damage and get assessment of how much the repair will cost.

How you can do LLM distillation and why you want to do it, with Fixzy you take pictures, video and describe in video and do proprietary damage detection and abstract repair model and then a concrete repair estimate, so may have broken plaster in the image but don't know what that means to do something and maps that to how a company will fix it and their schedule of rates which is used to create the estimate. Will focus on the damage detection part of this, where they use their LLMs and vision model, with an image reasoning model which reasons over vision plus a prompt to a language model and then output structural data.

Why this generative AI / YOLO or you only look once model hybrid, where can give an overview with a model package you can train, the reason they need these reasoning models so can train model to identify a pendant light but after any damage can't provide the different kinds of things that can happen, so need to ensure the context that is finite in a universe of all possibilities where tell the vision reasoning model that are working in an insurance claim, then can see that might be what something looks like normally to what it looks like after a catastrophe so can't need to train a model on all circumstances so by combining a vision reasoning model with the YOLO model and may look for other things like needing to deal with electrics as well or other things where reasoning models save on training on all options.

OpenAI and other models are good for getting to a proof of concept but their serious impediments afterwards, the models may be different but process would be the same, these cloud-based LLMs help to get to a PoC position so can prove that an AI can be shown any random picture of a think in an insurance claim scenario then can prove it, but there are impediments when you want to take this to market, the newer the models the more correct the reasoning but the more expensive the models and will have to pass this onto your customers so may price your product out of the range of your target market.

There are also rate limits where with Microsoft you are limited to requests per minute and can write software that will exponentially backoff but at the end of the day you still can't get past that rate limit and the other limit is tokens per limit, can think about these as words although aren't quite, so the number of these that you send in your prompt combined with ones in answer are the limit and limits the context you can use and you need to provide more context for an LLM to understand this but the more context you provide the more tokens will be required. It's not your intellectual property, anyone who can write a prompt can copy what you have done.

Problems can be solved with distillation where have an Open Source Model which is best for what you are doing, which may be a small terribly performing model, compared to OpenAI model which cost billions and can be used to teach the other model to do one thing really well and that model will be our own, are not claiming the model as our own IP but the adaptions are our IP and because it is your own model there are no rate limits, can just load balance it and serving the customer base is just to scale out a system to serve customers without rate or token limit and once done training work the model doesn't cost any more and can sell this to an investor.

Unstructured text with a prompt to get structured data with FN Well which is first notification of loss, which is if you wake up and your water tank is in your living room when you let your insurance company know this is the first notification of loss, which will be unstructured as will be from people who are panicked or stressed so use the model to interpret this information and use a reasoning model and people call some things by different names to know are talking about the same thing, feed this through to an LLM and deliver structured data for the rest of the pipeline such as what damage was mentioned which can include odour with any damage which may mean mould which requires another treatment.

A Developer's Guide to Writing (with AI and Reduced Suffering) - Darja Gusseva

Darja is a Senior Software Developer at Black Marble and spoke about using AI with writing that it is not about using AI to do your writing. When it comes with writing there are barriers that are not that different between creative and technical writing. Can't start, can't plan, getting stuck or editing too early. There can only be something worth starting if you can actually finish it, it is lot harder to start if you don't know where you are going, when not knowing where are going you can't plan anything through properly so for a while they are only every wrote beginnings. Once they knew the purpose of what they are trying to write and were able to do this at work, but it could mean writing slower or one that didn't quite make sense, with fictional at home it would be hard and at work they would find they would wander off with things they like. They would edit as they wrote and editing the same thing isn't particularly interesting with their own stuff or at work where had perfect introduction and struggled with rest. At work it is important to have complete documentation and will be part of the context for the AI to understand your code so it is vague, incomplete it will make it harder, so it needs to be better to make the output less garbage, the documentation is not optional.

AI as a tool, they hate AI generated output and have a whole host of things that annoy them, but it can be constantly wrong in small subtle ways, “his glasses fogged up even though he was not wearing glasses” is an obvious example. These small mistakes can be easy to miss, and they can affect the whole document and AI generates a lot quickly and all with small mistakes that pike up, it will smooth the output towards the average of the statistical average of what it has been trained on. If ever been responsible for an enthusiastic junior developer who follows things enthusiastically can have a lot of things that need to be reviewed. They would update anything when spot an issue in a process where they will review markdown files generated by the AI which is still making a mess of generating them, they hate AI generated output, it is not there to produce the entire document and often will do things themselves just with creative writing.

They set themselves a rule if they use AI they will retype the output which forces them to think about what each sentence is actually saying and does it align with what they are trying to communicate and is it contradicting what they are saying or planning to say, is there a logical jump that need to be explained or removed. Generating something and then re-typing can get past blank page and give control over the words. Process is to establish process what are you writing and who is the intended audience which is what are you trying to write, outlining to define the shape of the thing, drafting to put the words down onto the page and editing to shapes and polish the words into something more coherent and polished, might not need all those steps all of the time, just take what you need, the point is to keep you writing and make it easier.

When using generative AI with creative writing they didn't know the purpose of what they wanted to write so Purpose is important - what are you writing, who is your audience, what should they know by the end of your document. It turns out it is hard to plan something if you don't know what to write, it can't be just want to write a story but this isn't enough, but how do you actually figure that which is AI ability to mimic way humans speak to be a mirror to bounce of ideas, much like telling a colleague about a problem and you figure it out before pressing send. The smaller the piece of writing the easier to find the purpose, so for a fictional story it can take a few days but for a wiki page you know what information you want to convey but it is easier to stick to purpose if explicitly write it down, who is it for, is it for developers, support engineers or customers and what assumptions can you make are those customers more technical and want to explain things more rather than less.

Purposes can be different with an overview, technical implementation with all needed details to build a systems, a purpose will help box an AI to keep things relevant for the audience or in general and keeps you from scope creep from yourself or someone else, can tell yourself you don't really need something and more likely to push back when removing details as can then give same document for developer to customer or can realise the purpose changes or what you need is different.

Outline where one big task is scary and too stressful where lots of smaller tasks are manageable where can write what you need, AI can help solidify the outline by stating something you might not have considered or something you're definitely not going to include. You might not get guidance on what to include and how detailed to be and if just starting you might not know much to include to be useful. You could throw the purpose into a prompt and generate an outline, but they haven't had a single time where it is exactly what they want to write but might include something that is useful. What you are actually looking for is something you can look at without being intimidated with a task list and headings and an outline of what you want to cover.

Draft is where momentum matters more than perfection, start with the easiest section, expand exponentially and can use AI to continue, write a section and transform word salad into a paragraph. Sometimes they have to fight themselves to stay on track but this is where most of the content comes from, they are capturing raw output to get the information down without worrying about structure or style and once have a draft can start worrying about finer details, are repeating yourself, your first draft doesn't have to be the best, with fiction they asked AI to generate a scene from a couple of sentences where the characters were doing something close to what they wanted but they knew something they shouldn't so they provided the whole dialog in the prompt but then the characters teleported from room to another so then added stage directions where emotion was right but reason was wrong so told the prompt the right directions and the prompt became a draft of the scene.

When drafting, the same thing applies to technical writing, you ask for a prompt and slowly iterate, and this prompt becomes an actual draft and the more you add the more it is like you and if the output sounds like you the less likely it has that AI quality too. When drafting start with easiest section, write from the middle or end or whatever section allows words to come more easily as if have a rough structure you can begin wherever you want, you can expand a sentence from the outline, think about the purpose and write it down and can always cut it out later if it doesn't fit and if struggling can lean on AI but if can put the word or idea down you can subject an AI to something you would never give to a person to give you what you might need or can let it do its thing and pick out the points that make sense. You can deal with the outline separately so it doesn't get confused with what you are drafting and when dealing with small chunks you can deal with any errors that AI may introduce, you may also come up with things for other sections you can just put them somewhere vaguely appropriate or if in a flow and have a question then write it down and go back to it when you are done to think about later, the point is to keep the momentum going without worrying about perfection as it will give you something to be perfectionist about later

Editing, where it is best to do editing in passes for big structural changes or are back to one big task issue. First pass is cleanup which tricks distance, where you have separation from your work, into existence and stops AI focusing on spelling so just focus on individual sections and then this clean text is easier to give to someone else to review and if retype this then you are reviewing without skimming or skipping but sometimes AI will miss out the setup for a joke and only leave the punchline. Second pass is structure to have better order, see what is repeated across different sections or missing along with things that may be confusing or smooth out transitions between sections and if change anything to changes at paragraph or sentence level. A third pass for perspectives as can get AI to role-play specific roles, this could be technical roles or others so be specific such as enthusiastic developer with focus on SQL or engineering manager and goal is not to take every suggestion but can get you thinking about the gaps you might have missed.

Pitfalls can be over editing until you sand away any personality as AI will try to smooth things closer to the average of what it knows and can get yourself into a perfectionist loop of feeding it into AI over and over and many preferred an older version of the draft. Another pitfall is procrastinating by chasing perfect AI output instead of actually writing as AI can become a Venus fly trap for your brain's dopamine system, if you just regenerate one more time the AI will finally nail it, where it can feel productive, but you never get any further. The third pitfall is arguing AI when it is wrong, but just don't take a breath and remember it is not an actual person you need to convince of anything, so if it gets something wrong regenerate at the beginning of what it got wrong or remove anything it got wrong and you can't just type, "no, not like that", just accept it will be wrong no matter the context, but don't just trust the AI output, think about what you want to include.

Summary is that everyone struggles with writing differently but it gives you something to push against and as long as the thinking is yours and if you did retype and rephrase the words will be yours you are just using a tool to organise your thoughts AI is an imperfect tool but it can help you work out a process that will help you, a process that makes your documentation tasks more manageable. Play around AI to find out your specific problem and find ways to work around that and if you need to write any documents you will know where to start.