AI-assisted software development
Recently we've developed a software project using our agentic problem solving framework, one of a kind.
- agentic problem solving framework:
- problem statement and validation agents
- solution proposer and reviewer agents
- solution implementer and tester agents
- documentation and follow up agent
- Project stats: 30k sloc, 500 issues, 3000 tests, very well documented
- All decisions are documented as problems with solutions and a part of the project itself
- Established agentic development flow allows continuity:
- create new problem to solve
- solve the problem with the framework
Reflections
it's easy to develop a project that hits all the marks (unit test coverage, documentation, etc)
it's still may fail functionally, but it's easy to capture and fix
functional and e2e-tests are extremely important, but slow
- requires engineering to speed it up
user acceptance tests are important
- requires process engineering to capture feedback and inject it into theh flow
no jira or confluence is required:
- develop a dashboard takes 30 minutes
- rag/grep + ai to navigate
users with no software development background are capable of making changes
- different kind of changes:
- easy to implement within the current architecture (agents do very well)
- requires architectural changes (agents require humand guidance and intervention)
- these changes are easy to spot after the implementation
- different kind of changes:
possible to implement the same problem multiple times to pick up/converge on solutions
very valid question still stands: how do we know that software works, with the same answer
- documentaion and unit tests
- automtated e2e and acceptance tests
Detour
- good old software development practices aka agile and extreme programming are applicable directly
- agile manifesto
- individuals and interactions over processes and tools
- working software over comprehensive documentation
- customer collaboration over contract negotiation
- responding to change over following a plan
- extreme programming
- user stories are written
- make frequent small releases
- the project is divided into iterations
- iteration planning starts each iteration
- refactor whenever and wherever possible
- create spike solutions to reduce risk
- no functionality is added early
- code must be written to agreed standards (skills!)
- code the unit test first
- all code must have unit tests
- all code must pass all unit tests before it can be released.
- when a bug is found tests are created
- acceptance tests are run often and the score is published
- agile manifesto
Synthesis
generic agentic problem solving framework
- define intent and constraints and let the system figure the rest out iteratively in small steps
- engineer requirements and constraints validation
- develop transferrable skills
same framework is applicable to different stages of software development
current software processes and roles are tailored to reduce risk and dependency on individuals
- scrum, jira and so forth
the change is scary and rightfully so, because ai is a process amplifier
- amplified shitty processes produces way more shit
- examples of developers pushing ai slop
- should empowering individuals instead (agile!)
- customers could and should make changes directly
- amplified shitty processes produces way more shit
Predictions
Agents and LLM increase productivity, by now this is an established fact. Another established fact is that this productivity is not always a good thing (ai slop).
The next year would be a massive process change to accommodate increased productivity.