{"course":{"slug":"how-software-changed","title":"How Software Development Changed","url":"https://addaly.com/learn/how-software-changed","level":"intermediate","track":"work"},"lesson":{"slug":"what-it-costs-to-leave","title":"Ask the exit question before you enter","url":"https://addaly.com/learn/how-software-changed/what-it-costs-to-leave","position":83,"of":87,"minutes":8,"answer":"Lock-in accumulates in prompts, evaluation suites and habits rather than in the model itself.","keyIdea":"Lock-in accumulates in prompts, evaluation suites and habits rather than in the model itself, so keeping instructions and evaluations as ordinary files in your repository and building against an interface several providers implement keeps switching to a configuration change."},"body":{"format":"markdown","text":"## The question that gets skipped\n\nAdoption conversations cover capability, price and data handling. They almost never cover the one that decides your position in two years: **what does it cost to stop?**\n\nThis matters more than usual here for a specific reason. The field is moving fast, prices have moved by order-of-magnitude factors in both directions, and the best option for your work has changed at least annually. A tool you cannot leave is a bet that today's leader stays the leader, and nothing in the last three years supports that bet.\n\n## Where lock-in actually accumulates\n\nNot in the model. Models are the most swappable part, which surprises people.\n\n**Your prompts and agent instructions.** If these live in a vendor's console, in their project settings, in a web interface, they are theirs. If they live in your repository as files, they are yours. This is the single highest-value decision on the list and it costs nothing to get right.\n\n**Your evaluation suite.** The set of cases that tell you whether output is good enough for your work. Built inside a vendor's evaluation product, it does not come with you, and without it you cannot assess the alternative, which is how you end up unable to leave something you know you should.\n\n**Fine-tuned weights.** Almost universally non-exportable from a hosted provider. You can leave; you cannot take the adaptation. Any fine-tune on a hosted service should be treated as rented.\n\n**Proprietary agent and workflow formats.** Configuration in a bespoke format that no other tool reads. Small in volume, large in rewriting effort.\n\n**Your team's habits and shortcuts.** The least discussed and often the largest. Two years of muscle memory has a real retraining cost, and it is why teams stay with tools they no longer rate.\n\n## Five things that keep the door open\n\n**Keep prompts and instructions in the repository, in version control.** Plain files, reviewed in diffs, portable by definition. You want this for reproducibility anyway.\n\n**Write your evaluation suite as ordinary tests.** A directory of cases and a script that scores them, in your language, in your repository. It becomes the instrument that makes every future comparison possible.\n\n**Prefer an interface several providers implement.** A large number of providers, including local runtimes, expose an OpenAI-compatible endpoint. Building against that shape means switching is a base URL and a key.\n\n```python\nclient = OpenAI(base_url=os.environ[\"LLM_BASE_URL\"],\n                api_key=os.environ[\"LLM_API_KEY\"])\n```\n\nThat is not elegant architecture. It is one environment variable standing between you and a rewrite.\n\n**Keep a local fallback and test it quarterly.** A quantised open-weight model through `llama.cpp` or `ollama`, wired to the same interface, exercised often enough that you know it works. It is your answer to an outage, a price rise and an acquisition, and the quarterly test is what stops it being a fiction.\n\n**Avoid deep integration into anything you would not rewrite.** If a tool's output is fed automatically into three internal systems, you have built a dependency whose removal is a project.\n\n## When lock-in is the right choice\n\nThis is not an argument for portability at any price. Sometimes the integrated thing is much better, and accepting the switching cost is correct.\n\nThe requirement is that you **price it before you commit**, and write the number down. \"Moving off this would take us about three weeks, mostly rebuilding evaluations and retraining the team\" is a sentence that turns a hidden dependency into a known one, and it is the sentence that makes the later decision possible rather than paralysing.\n\nThe failure is not choosing lock-in. It is arriving at it without noticing, and then discovering the cost at the moment you most need to move.\n\n## The free path, which is also an exit\n\nA local open-weight model on your own hardware has no exit cost by construction, and this is its strongest argument, stronger than privacy, which is what people usually cite.\n\nBe honest about what you give up: on hard reasoning tasks the gap between a small local model and a large hosted one is real, and pretending otherwise helps nobody. But a local model is a floor under your capability that nobody can price, deprecate or withdraw, and the existence of a working floor changes every negotiation you have afterwards."},"check":{"question":"Why is an evaluation suite built inside a vendor's product a worse form of lock-in than a fine-tune that cannot be exported?","options":[{"text":"Evaluation suites take longer to build than fine-tunes do, so rebuilding one costs more engineering time.","correct":false,"tempting":"Compares construction effort rather than what each artefact enables you to do next."},{"text":"Fine-tunes become obsolete as base models improve, so losing one costs nothing after a year.","correct":false,"tempting":"Often true, but it argues the fine-tune is cheap rather than explaining what the evaluation suite uniquely provides."},{"text":"Without it you cannot measure the alternative, so you lose the ability to judge whether leaving is right.","correct":true},{"text":"Vendor evaluation products use proprietary scoring, so the historical results are not comparable to anything.","correct":false,"tempting":"Incomparable history is inconvenient; the decisive loss is being unable to run the comparison at all."}]},"prev":{"slug":"the-ten-year-cost","title":"Writing cost, and the cost that follows it","url":"https://addaly.com/learn/how-software-changed/the-ten-year-cost"},"next":{"slug":"the-hardware-you-have","title":"Doing this work on the machine you own","url":"https://addaly.com/learn/how-software-changed/the-hardware-you-have"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Ask the exit question before you enter', in How Software Development Changed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/how-software-changed/what-it-costs-to-leave (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Ask the exit question before you enter","courseTitle":"How Software Development Changed","module":{"index":9,"slug":"what-did-not-change","title":"What did not change, and what to do now"},"answer":null,"keyIdea":"Lock-in accumulates in prompts, evaluation suites and habits rather than in the model itself, so keeping instructions and evaluations as ordinary files in your repository and building against an interface several providers implement keeps switching to a configuration change.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-question-that-gets-skipped","runs":[{"text":"The question that gets skipped"}]},{"t":"p","runs":[{"text":"Adoption conversations cover capability, price and data handling. They almost never cover the one that decides your position in two years: "},{"text":"what does it cost to stop?","b":true}]},{"t":"p","runs":[{"text":"This matters more than usual here for a specific reason. The field is moving fast, prices have moved by order-of-magnitude factors in both directions, and the best option for your work has changed at least annually. A tool you cannot leave is a bet that today’s leader stays the leader, and nothing in the last three years supports that bet."}]},{"t":"h2","id":"where-lock-in-actually-accumulates","runs":[{"text":"Where lock-in actually accumulates"}]},{"t":"p","runs":[{"text":"Not in the model. Models are the most swappable part, which surprises people."}]},{"t":"p","runs":[{"text":"Your prompts and agent instructions.","b":true},{"text":" If these live in a vendor’s console, in their project settings, in a web interface, they are theirs. If they live in your repository as files, they are yours. This is the single highest-value decision on the list and it costs nothing to get right."}]},{"t":"p","runs":[{"text":"Your evaluation suite.","b":true},{"text":" The set of cases that tell you whether output is good enough for your work. Built inside a vendor’s evaluation product, it does not come with you, and without it you cannot assess the alternative, which is how you end up unable to leave something you know you should."}]},{"t":"p","runs":[{"text":"Fine-tuned weights.","b":true},{"text":" Almost universally non-exportable from a hosted provider. You can leave; you cannot take the adaptation. Any fine-tune on a hosted service should be treated as rented."}]},{"t":"p","runs":[{"text":"Proprietary agent and workflow formats.","b":true},{"text":" Configuration in a bespoke format that no other tool reads. Small in volume, large in rewriting effort."}]},{"t":"p","runs":[{"text":"Your team’s habits and shortcuts.","b":true},{"text":" The least discussed and often the largest. Two years of muscle memory has a real retraining cost, and it is why teams stay with tools they no longer rate."}]},{"t":"h2","id":"five-things-that-keep-the-door-open","runs":[{"text":"Five things that keep the door open"}]},{"t":"p","runs":[{"text":"Keep prompts and instructions in the repository, in version control.","b":true},{"text":" Plain files, reviewed in diffs, portable by definition. You want this for reproducibility anyway."}]},{"t":"p","runs":[{"text":"Write your evaluation suite as ordinary tests.","b":true},{"text":" A directory of cases and a script that scores them, in your language, in your repository. It becomes the instrument that makes every future comparison possible."}]},{"t":"p","runs":[{"text":"Prefer an interface several providers implement.","b":true},{"text":" A large number of providers, including local runtimes, expose an OpenAI-compatible endpoint. Building against that shape means switching is a base URL and a key."}]},{"t":"code","lang":"python","label":"Python","text":"client = OpenAI(base_url=os.environ[\"LLM_BASE_URL\"],\n                api_key=os.environ[\"LLM_API_KEY\"])"},{"t":"p","runs":[{"text":"That is not elegant architecture. It is one environment variable standing between you and a rewrite."}]},{"t":"p","runs":[{"text":"Keep a local fallback and test it quarterly.","b":true},{"text":" A quantised open-weight model through "},{"text":"llama.cpp","code":true},{"text":" or "},{"text":"ollama","code":true},{"text":", wired to the same interface, exercised often enough that you know it works. It is your answer to an outage, a price rise and an acquisition, and the quarterly test is what stops it being a fiction."}]},{"t":"p","runs":[{"text":"Avoid deep integration into anything you would not rewrite.","b":true},{"text":" If a tool’s output is fed automatically into three internal systems, you have built a dependency whose removal is a project."}]},{"t":"h2","id":"when-lock-in-is-the-right-choice","runs":[{"text":"When lock-in is the right choice"}]},{"t":"p","runs":[{"text":"This is not an argument for portability at any price. Sometimes the integrated thing is much better, and accepting the switching cost is correct."}]},{"t":"p","runs":[{"text":"The requirement is that you "},{"text":"price it before you commit","b":true},{"text":", and write the number down. “Moving off this would take us about three weeks, mostly rebuilding evaluations and retraining the team” is a sentence that turns a hidden dependency into a known one, and it is the sentence that makes the later decision possible rather than paralysing."}]},{"t":"p","runs":[{"text":"The failure is not choosing lock-in. It is arriving at it without noticing, and then discovering the cost at the moment you most need to move."}]},{"t":"h2","id":"the-free-path-which-is-also-an-exit","runs":[{"text":"The free path, which is also an exit"}],"role":"free"},{"t":"p","runs":[{"text":"A local open-weight model on your own hardware has no exit cost by construction, and this is its strongest argument, stronger than privacy, which is what people usually cite."}]},{"t":"p","runs":[{"text":"Be honest about what you give up: on hard reasoning tasks the gap between a small local model and a large hosted one is real, and pretending otherwise helps nobody. But a local model is a floor under your capability that nobody can price, deprecate or withdraw, and the existence of a working floor changes every negotiation you have afterwards."}]}],"check":{"question":[{"text":"Why is an evaluation suite built inside a vendor’s product a worse form of lock-in than a fine-tune that cannot be exported?"}],"options":[{"text":[{"text":"Evaluation suites take longer to build than fine-tunes do, so rebuilding one costs more engineering time."}],"correct":false,"tempting":[{"text":"Compares construction effort rather than what each artefact enables you to do next."}]},{"text":[{"text":"Fine-tunes become obsolete as base models improve, so losing one costs nothing after a year."}],"correct":false,"tempting":[{"text":"Often true, but it argues the fine-tune is cheap rather than explaining what the evaluation suite uniquely provides."}]},{"text":[{"text":"Without it you cannot measure the alternative, so you lose the ability to judge whether leaving is right."}],"correct":true,"tempting":null},{"text":[{"text":"Vendor evaluation products use proprietary scoring, so the historical results are not comparable to anything."}],"correct":false,"tempting":[{"text":"Incomparable history is inconvenient; the decisive loss is being unable to run the comparison at all."}]}],"order":[3,0,1,2],"why":null},"prev":{"slug":"the-ten-year-cost","title":"Writing cost, and the cost that follows it","minutes":9},"next":{"slug":"the-hardware-you-have","title":"Doing this work on the machine you own","minutes":9}}}