Why outsourcing software development to AI is a bad idea



Simon Willison, a software engineer and developer of

Datasette , explains why it's not a good idea to rely entirely on AI in software development.

Your job is to deliver code you have proven to work
https://simonwillison.net/2025/Dec/18/code-proven-to-work/



With the spread of generative AI, AI is steadily penetrating the world of software development, with 30% of Microsoft product code being written by AI and 92% of developers using AI coding tools .

However, there are cases where junior engineers who are authorized to use some kind of AI tool develop software using AI and then leave the operational testing and other aspects of the software to the code review process. Regarding this behavior, Willison pointed out, 'This is rude, a waste of other people's time, and frankly, a dereliction of duty as a software developer.'

'The job of a software developer is to deliver code that is proven to work,' Willison said. 'The job of a software developer is not just to churn out code. In fact, it could be argued that large-scale language models (LLMs) are the thing these days. The job of a software developer is not just to deliver working code, but to prove that the code works. Otherwise, the real work burden falls on the shoulders of code reviewers.'



Willison lists two ways to prove that your code works: manual testing and automated testing.

'Manual testing' involves checking whether the code works correctly. Willison said, 'Manual testing skills are a real skill that software developers should master.' 'Some changes can be difficult to demonstrate, but it's still the software developer's job to demonstrate them. Record a screen capture video and add it to your pull request. Show reviewers that the change actually works.' 'Manual testing is a skill, and finding the cause of a problem is the next level of skill that defines a senior engineer.'

After manual testing, the next step is 'automated testing,' which Willison pointed out has become much easier with the advancement of AI. Regarding automated testing, Willison said, 'You put the system into a known initial state, execute changes, and verify that it works correctly. Integrating

test harnesses to efficiently facilitate this process is also an important skill worth investing in.' Willison also pointed out that the key point of automated testing is 'ensuring that changes will continue to work in the future.'

Willison also warns, 'Don't skip manual testing because you think your automated tests already cover it.'



However, Willison doesn't completely dismiss AI coding tools, citing them as being ideal for actively running code as it's being written, checking that it works, and then iterating further if there are any issues.

He also recommends using different tools for different purposes. 'When you're developing a CLI tool, you can tell Claude Code how to run it so you can run one-off tests. For final automated testing, you can use a system like Click's

CLIRunner ,' he said.

He also recommends exploring how to use it in a way that suits your needs, such as asking your coding agency to take screenshots of your website when making CSS changes to ensure the changes are making the desired difference.



The great thing about using a coding agent for automated testing is that it requires very little effort. If your project already has tests, most coding agents can extend your test suite without any further instruction. You can also reuse existing test patterns, so by organizing your test code and embedding it in your preferred patterns, the coding agent can create the test code you want.

Finally, Willison said, 'Almost anyone can get LLM to generate a 1,000-line patch and submit it for code review, but that's not enough. The important thing is to submit code that's proven to work.'

in AI, Posted by logu_ii