Back to Blog

From MVP to product: what you keep and what you rewrite

MVP
September 24, 2026

The moment the MVP stops being enough

An MVP is built to answer a single question. Does the problem exist, and does this solution solve it well enough to make people come back? To find out quickly you take shortcuts, and that's as it should be. An MVP built as if it had to last ten years arrives late, and at that stage arriving late is the one mistake you can't recover from.

The trouble starts afterwards, when the answer is yes. There are paying users, a sales plan, maybe a funding round just closed. Underneath, though, the software designed to answer one question is still running, and now it's being asked to carry a company.

Many people's reflex is to start again from scratch, now that they know what's needed. In most cases it's the worst decision. It means freezing for months everything that brings value to users, only to end up with what you already had. Plus the new bugs introduced along the way.

The signs that it's time

The age of the code has little to do with it. What matters is friction, and friction shows up in very practical things.

Every change breaks something else, and the team spends more time putting back what moved than building. There's a part only one person can touch, because nobody else knows how it works. You only release on Tuesday morning with everyone awake and in the room, and the problem there isn't the calendar.

Then there's support doing things by hand: a value corrected straight in the database, a stuck process to restart. Everyday gestures nobody counts as work that are quietly eating up a whole person.

The most reliable signal comes from outside, though. A bigger client asks for role-based permissions, exports, an audit trail of who did what, and the product doesn't have them.

When you see these things you're already paying the bill. What's left is working out where to step in.

What you keep

The first thing to save is the domain knowledge that has settled into the code. The odd rules discovered by talking to users, the edge cases fixed after a bug report. They're worth more than everything else and you can't see them. A rewrite from scratch loses them all at once and then finds them again over the following months, one bug report at a time.

You also keep the parts that have held up. If a piece works, is fast and nobody is afraid to touch it, leave it alone even if the code isn't elegant. The goal is to remove friction where it is; beauty comes later.

And you keep the data, which is the real asset. Even when the schema has to change, the data gets migrated. You don't start over.

What you redo

Usually the data model, in the places real use has proved wrong. The MVP assumed one user per company and the clients are teams. It assumed one price per product and you need different price lists. These are structural changes, and they get worse every week because the data to convert keeps growing.

Then authentication, roles and permissions. In the MVP everyone sees everything. You can fix it later, provided you do it systematically and not by adding one check at a time wherever someone complains.

The way you go to production needs redoing too. Repeatable releases, the ability to roll back, verified backups. Verified means tested by actually restoring a copy, not just switched on. This part alone changes the team's mood.

Finally you need to know what's going on. An error that reaches nobody gets discovered by a client. Logs, alerts and one place to look when something goes wrong cost a few days of work and pay for themselves at the first serious problem.

How to do it without stopping

You replace one piece at a time while the rest keeps running and being developed. You isolate an area, rewrite it behind the same interface, move the traffic over, check it holds and move on to the next.

For this to work you need two rules. You start with the piece that hurts most, not the easiest or the most interesting one, and the right order comes from bug reports and time lost, data you already have. And each piece of work has to fit in a few days and end with something visible. A three-month clean-up with no intermediate results gets interrupted by the first sales emergency, and at that point you've paid the cost without seeing the benefit.

It helps a lot to set aside a fixed share of every work cycle for this, always, even in the weeks when sales is pushing. If you turn it into a separate project that needs approving, it will never start.

Technical debt isn't a mistake

I'm saying this because the guilt around it leads to bad decisions. The shortcuts taken to ship in eight weeks were the right price for getting an answer quickly. Without that answer there would be nothing to clean up today.

If there's a mistake, it's not having decided when to pay them back. Debt taken on knowingly, written down somewhere and reviewed when the product finds its market, is a tool like any other. Forget about it, and two years later shipping a feature takes a month and nobody can explain why any more.

Frequently asked questions

After the MVP, should you rewrite the software from scratch?

In most cases no. A full rewrite freezes the work that brings value to users for months and loses the domain rules discovered along the way. It pays back more to replace one piece at a time while the product keeps running.

When should an MVP be turned into a solid product?

When friction becomes a daily thing. Every change breaks something else, there's a part only one person can touch, releases are scary, support fixes data by hand or a bigger client asks for roles, exports and traceability. At that point you're already paying the cost.

Is the technical debt of an MVP a mistake?

No. The shortcuts were there to reach an answer quickly, and they were the right price at that stage. The mistake is not deciding when to pay them back, which is why it's worth reserving a fixed share of every work cycle for clean-up instead of making it a separate project.

Let's find out together if we're the right partner for your project.
A twenty-minute call, no sales pitch. We work out what you need to build, what the first technical decision is and whether it makes sense to work together.
Tell us about your project

Ultimo aggiornamento: 24 settembre 2026

1. Chi siamo

ItaliansCodeItBetter S.R.L. (di seguito "ICIB", "noi", "nostro") è il titolare del trattamento dei dati personali raccolti tramite questo sito web.

Sede legale: Via Giuseppe Frua 22, 20146 Milano (MI)
Sede operativa: Viale Sabotino 19/2, 20135 Milano (MI)
Partita IVA: 14266910968
Email: vittorio@icib.dev

2. Dati che raccogliamo

Raccogliamo i seguenti dati personali esclusivamente attraverso il modulo di contatto presente sul nostro sito:

3. Come utilizziamo i tuoi dati

I dati raccolti vengono utilizzati esclusivamente per:

Non condividiamo mai i tuoi dati con terze parti per scopi commerciali o di marketing.

4. Tracking e Meta Ads

Il nostro sito utilizza Meta Pixel (Facebook Pixel) per finalità di tracciamento e ottimizzazione delle campagne pubblicitarie su Meta (Facebook e Instagram). Il pixel resta disattivato finché non presti il tuo consenso.

Meta Pixel raccoglie informazioni sulla tua visita, incluse:

Questi dati vengono utilizzati per mostrarti annunci pertinenti sui social media e per misurare l'efficacia delle nostre campagne pubblicitarie. Puoi gestire le preferenze pubblicitarie direttamente dalle impostazioni del tuo account Meta.

5. Cookie e tecnologie di tracciamento

Non utilizziamo cookie di caching sul nostro sito web. Gli unici cookie utilizzati sono quelli tecnici necessari al funzionamento del sito e alla memorizzazione della tua scelta, e quelli necessari al funzionamento di Meta Pixel come descritto nella sezione precedente.

Puoi modificare la tua scelta in qualsiasi momento: apri le preferenze cookie.

6. Base giuridica del trattamento

7. Conservazione dei dati

I tuoi dati personali vengono conservati per il tempo strettamente necessario a fornire i servizi richiesti e, in ogni caso, per un periodo non superiore a 24 mesi dalla raccolta, salvo diversi obblighi di legge. La tua scelta sui cookie viene conservata per 12 mesi, dopodiché ti verrà richiesta nuovamente.

8. I tuoi diritti (GDPR)

In conformità con il Regolamento Generale sulla Protezione dei Dati (GDPR), hai diritto a:

Per esercitare i tuoi diritti, contattaci all'indirizzo: vittorio@icib.dev

9. Sicurezza dei dati

Adottiamo misure di sicurezza tecniche e organizzative appropriate per proteggere i tuoi dati personali da accessi non autorizzati, perdita, distruzione o alterazione. Tutte le comunicazioni con i nostri server sono protette tramite protocolli di crittografia.

10. Modifiche alla Privacy Policy

Ci riserviamo il diritto di modificare questa Privacy Policy in qualsiasi momento. Le modifiche saranno pubblicate su questa pagina con indicazione della data di ultimo aggiornamento. Ti consigliamo di consultare periodicamente questa pagina per rimanere informato su come proteggiamo i tuoi dati.

11. Contatti

Per qualsiasi domanda o richiesta riguardante questa Privacy Policy o il trattamento dei tuoi dati personali, puoi contattarci a:

Email: vittorio@icib.dev
Indirizzo: Viale Sabotino 19/2, 20135 Milano (MI)

Hai anche il diritto di presentare un reclamo all'Autorità Garante per la protezione dei dati personali se ritieni che il trattamento dei tuoi dati violi il GDPR.

Data di entrata in vigore: 17 novembre 2025

1. Accettazione dei termini

Benvenuto. Accedendo al sito e utilizzando i servizi offerti da ItaliansCodeItBetter S.R.L. (di seguito "Sito"), l'utente accetta integralmente i presenti Termini di Servizio (di seguito "Termini"). Se non si è d'accordo con i Termini, non utilizzare il Sito né i servizi ivi offerti.

2. Descrizione del servizio

Il Sito è una vetrina che presenta ItaliansCodeItBetter S.R.L., la sua realtà informatica e i servizi potenziali che l'azienda potrebbe offrire. Il Sito consente agli utenti di contattare l'azienda per richiedere ulteriori informazioni o avviare un potenziale dialogo commerciale. Non sono presenti account utente, elaborazioni di pagamenti né raccolta di dati tramite il Sito, salvo i dati forniti volontariamente dall'utente attraverso contatti diretti (posta elettronica o moduli di contatto), regolati dalla normativa privacy applicabile.

Il Sito può contenere link a pagine social e ad altre risorse esterne.

3. Account utente e registrazione

Non è previsto alcun account utente o processo di registrazione sul Sito. Qualsiasi tentativo di creare, utilizzare o accedere a un account sarà considerato non conforme ai presenti Termini. Per esigenze di contatto, utilizzare l'indirizzo email indicato in "Informazioni di contatto" o i canali ufficiali della società.

4. Politica di utilizzo accettabile

L'uso del Sito deve essere diligente e conforme alla legge. È vietato:

5. Diritti di proprietà intellettuale

Tutti i diritti di proprietà intellettuale relativi al contenuto del Sito (testi, grafica, logo, codice, video, immagini, marchi) sono di proprietà di ItaliansCodeItBetter S.R.L. o dei suoi licenziatari. È vietata qualsiasi riproduzione, distribuzione, modifica o uso non autorizzato dei contenuti del Sito senza il previo consenso scritto della società, salvo quanto espressamente previsto dai presenti Termini. L'uso lecito per fini informativi è consentito solo per consultazione personale e non commerciale, purché non venga rimosso alcun avviso di copyright o proprietà.

6. Termini di pagamento

Non applicabile. Il Sito non elabora pagamenti né offre servizi tramite transazioni online. Eventuali pagamenti o accordi economici avverranno fuori dal Sito secondo contratti separati e documentazione dedicata.

7. Contenuti generati dagli utenti

Non sono previsti contenuti generati dagli utenti sul Sito (ad es. pubblicazioni, commenti o caricamenti). Qualora l'utente comunichi contenuti o feedback tramite i canali di contatto ufficiali, tali contenuti non conferiscono all'utente diritti di proprietà sul Sito o sui processi aziendali. L'azienda potrà utilizzare tali contenuti o feedback per migliorare i propri servizi, nel rispetto della normativa applicabile e della privacy dell'utente.

8. Attività vietate

Oltre a quanto specificato nel punto 4, è vietato:

9. Risoluzione

I presenti Termini si risolvono automaticamente in caso di violazione sostanziale, senza pregiudicare diritti già maturati. In caso di violazioni sostanziali, ItaliansCodeItBetter S.R.L. si riserva il diritto di sospendere o limitare l'accesso al Sito, nonché di intraprendere eventuali azioni legali necessarie. Le obbligazioni e responsabilità maturate prima della risoluzione rimangono efficaci.

10. Disclaimer e limitazioni di responsabilità

Il Sito è fornito "così com'è" e "come disponibile". ItaliansCodeItBetter S.R.L. non garantisce che il Sito sia sempre disponibile, privo di errori o interruzioni, né garantisce l'accuratezza o la completezza delle informazioni ivi contenute. In nessun caso ItaliansCodeItBetter S.R.L. sarà responsabile per danni diretti, indiretti, incidentali, consequenziali o punitivi derivanti dall'uso o dall'impossibilità di utilizzare il Sito, inclusi (senza limitazioni) perdita di profitti, dati o opportunità. Il Sito può contenere link a servizi o contenuti di terzi: tali contenuti non sono controllati dall'azienda e non comportano alcuna responsabilità.

11. Indennizzo

L'utente si impegna a manlevare e tenere indenne ItaliansCodeItBetter S.R.L., i suoi amministratori, dipendenti e affiliati da qualsiasi reclamo, perdita, responsabilità, danno, spesa o costo (incluse le spese legali) derivante dall'uso non conforme dei Termini, dalla violazione di diritti di terzi o dall'uso improprio del Sito.

12. Legge applicabile

I presenti Termini e l'uso del Sito sono disciplinati dalla legge italiana. Per qualsiasi controversia derivante dall'uso del Sito o dai presenti Termini, sarà competente in via esclusiva il Foro di Milano, salvo diverse norme inderogabili a tutela del consumatore ove applicabili.

13. Modifiche ai termini

ItaliansCodeItBetter S.R.L. si riserva il diritto di modificare i presenti Termini in qualsiasi momento. Le modifiche entrano in vigore al momento della pubblicazione sul Sito o mediante comunicazione all'utente, se prevista. L'uso continuato del Sito dopo la pubblicazione delle modifiche costituisce accettazione delle nuove condizioni.

14. Informazioni di contatto

ItaliansCodeItBetter S.R.L.
Indirizzo: Via Giuseppe Frua 22, 20146 Milano, Lombardia, Italia
Email: vittorio@icib.dev

Note finali

Per la protezione dei dati personali si rinvia alla Privacy Policy del Sito e alle modalità di trattamento indicate nelle comunicazioni ufficiali dell'azienda. Qualsiasi contatto o richiesta inviata all'indirizzo email indicato può comportare il trattamento di dati personali secondo la normativa vigente.

Last updated: 24 September 2026

English translation for convenience. The Italian version prevails in case of discrepancy.

1. Who we are

ItaliansCodeItBetter S.R.L. (hereinafter "ICIB", "we", "our") is the data controller for the personal data collected through this website.

Registered office: Via Giuseppe Frua 22, 20146 Milano (MI)
Operational office: Viale Sabotino 19/2, 20135 Milano (MI)
VAT number: 14266910968
Email: vittorio@icib.dev

2. Data we collect

We collect the following personal data exclusively through the contact form on our website:

3. How we use your data

The data collected is used exclusively to:

We never share your data with third parties for commercial or marketing purposes.

4. Tracking and Meta Ads

Our website uses Meta Pixel (Facebook Pixel) to track and optimise advertising campaigns on Meta (Facebook and Instagram). The pixel stays disabled until you give your consent.

Meta Pixel collects information about your visit, including:

This data is used to show you relevant ads on social media and to measure the effectiveness of our advertising campaigns. You can manage your ad preferences directly from your Meta account settings.

5. Cookies and tracking technologies

We do not use caching cookies on our website. The only cookies used are the technical cookies needed for the website to work and to store your choice, and those needed for Meta Pixel to work as described in the previous section.

You can change your choice at any time: open cookie preferences.

6. Legal basis for processing

7. Data retention

Your personal data is kept only for as long as strictly necessary to provide the services requested and, in any case, for no longer than 24 months from collection, unless other legal obligations apply. Your cookie choice is kept for 12 months, after which you will be asked again.

8. Your rights (GDPR)

In accordance with the General Data Protection Regulation (GDPR), you have the right to:

To exercise your rights, contact us at: vittorio@icib.dev

9. Data security

We adopt appropriate technical and organisational security measures to protect your personal data against unauthorised access, loss, destruction or alteration. All communications with our servers are protected by encryption protocols.

10. Changes to this Privacy Policy

We reserve the right to change this Privacy Policy at any time. Changes will be published on this page together with the date of the last update. We recommend checking this page regularly to stay informed about how we protect your data.

11. Contact

For any question or request about this Privacy Policy or the processing of your personal data, you can contact us at:

Email: vittorio@icib.dev
Address: Viale Sabotino 19/2, 20135 Milano (MI)

You also have the right to lodge a complaint with the Garante per la protezione dei dati personali (the Italian Data Protection Authority) if you believe that the processing of your data infringes the GDPR.

Effective date: 17 November 2025

English translation for convenience. The Italian version prevails in case of discrepancy.

1. Acceptance of the terms

Welcome. By accessing the website and using the services offered by ItaliansCodeItBetter S.R.L. (hereinafter the "Site"), the user fully accepts these Terms of Service (hereinafter the "Terms"). If you do not agree with the Terms, do not use the Site or the services offered on it.

2. Description of the service

The Site is a showcase presenting ItaliansCodeItBetter S.R.L., its IT business and the potential services the company may offer. The Site allows users to contact the company to request further information or to start a potential business conversation. There are no user accounts, no payment processing and no data collection through the Site, except for data provided voluntarily by the user through direct contact (email or contact forms), which is governed by the applicable privacy legislation.

The Site may contain links to social media pages and other external resources.

3. User accounts and registration

The Site has no user accounts and no registration process. Any attempt to create, use or access an account will be considered a breach of these Terms. To get in touch, use the email address shown under "Contact information" or the company's official channels.

4. Acceptable use policy

The Site must be used with due care and in compliance with the law. It is forbidden to:

5. Intellectual property rights

All intellectual property rights in the content of the Site (text, graphics, logo, code, videos, images, trademarks) belong to ItaliansCodeItBetter S.R.L. or its licensors. Any reproduction, distribution, modification or unauthorised use of the Site's content without the company's prior written consent is forbidden, except as expressly provided in these Terms. Lawful use for information purposes is permitted only for personal, non-commercial consultation, provided that no copyright or ownership notice is removed.

6. Payment terms

Not applicable. The Site does not process payments or offer services through online transactions. Any payments or financial arrangements will take place outside the Site under separate contracts and dedicated documentation.

7. User-generated content

The Site does not allow user-generated content (e.g. posts, comments or uploads). If the user sends content or feedback through the official contact channels, such content does not give the user any ownership rights over the Site or the company's processes. The company may use such content or feedback to improve its services, in compliance with applicable legislation and the user's privacy.

8. Prohibited activities

In addition to what is set out in section 4, the following are forbidden:

9. Termination

These Terms terminate automatically in the event of a material breach, without prejudice to rights already accrued. In the event of material breaches, ItaliansCodeItBetter S.R.L. reserves the right to suspend or restrict access to the Site and to take any legal action necessary. Obligations and liabilities accrued before termination remain in effect.

10. Disclaimer and limitation of liability

The Site is provided "as is" and "as available". ItaliansCodeItBetter S.R.L. does not guarantee that the Site will always be available or free from errors or interruptions, nor does it guarantee the accuracy or completeness of the information it contains. In no event will ItaliansCodeItBetter S.R.L. be liable for direct, indirect, incidental, consequential or punitive damages arising from the use of, or inability to use, the Site, including (without limitation) loss of profits, data or opportunities. The Site may contain links to third-party services or content: such content is not controlled by the company and does not give rise to any liability on its part.

11. Indemnification

The user agrees to indemnify and hold harmless ItaliansCodeItBetter S.R.L., its directors, employees and affiliates from any claim, loss, liability, damage, expense or cost (including legal fees) arising from use that does not comply with the Terms, from the infringement of third-party rights or from improper use of the Site.

12. Governing law

These Terms and the use of the Site are governed by Italian law. Any dispute arising from the use of the Site or from these Terms will fall under the exclusive jurisdiction of the Court of Milan (Foro di Milano), except where mandatory consumer protection rules provide otherwise.

13. Changes to the terms

ItaliansCodeItBetter S.R.L. reserves the right to change these Terms at any time. Changes take effect when they are published on the Site or, where applicable, when they are communicated to the user. Continued use of the Site after the changes are published constitutes acceptance of the new terms.

14. Contact information

ItaliansCodeItBetter S.R.L.
Address: Via Giuseppe Frua 22, 20146 Milano, Lombardia, Italia
Email: vittorio@icib.dev

Final notes

For the protection of personal data, please refer to the Site's Privacy Policy and to the processing methods set out in the company's official communications. Any contact or request sent to the email address shown may involve the processing of personal data in accordance with the laws in force.