In this article we explore how and why the diffusion of generative tasks based on LLMs is affecting the software development lifecycle. We specifically cover the issues raising while moving from a Proof of Concept to a refined product. The main takeaway is a framework specific to these use cases, namely Evaluation Driven Development, along with concrete examples for implementing it in your project and team.
The Value Gap
Generally speaking, the traditional software development lifecycle could be simplified as follows:
Requirements Gathering: we encode the external world problems in a series of requirements that can be mostly solved through well-known patterns.
Build: we implement the well-known patterns through a software solution. If some requirements don’t fit any pattern, we design and engineer a custom solution that could eventually become a pattern.
Test: we make sure that the implemented solution acts as expected by the theoretical patterns

Cras justo odio, dapibus ac facilisis in, egestas eget quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Maecenas faucibus mollis interdum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Test title
Cras justo odio, dapibus ac facilisis in, egestas eget quam.
Test title
Cras justo odio, dapibus ac facilisis in, egestas eget quam.
Test title
Cras justo odio, dapibus ac facilisis in, egestas eget quam.