Data first: Why data models and storage outlast frameworks and languages
В кои-то веки задвинул телегу. В смысле написал сегодня техническую статью. Аж переволновался. Нормально. 😎
As a software engineer, I believe that data, data model and storage
are the primary. We can use different programs and programming
languages, frameworks and approaches to process the data, create
different applications, C#, Java, Python, Go, Rust, PHP, backend and
frontend, but data is the same. The major is data model and storage to
keep the data (hard drives, etc.).
are the primary. We can use different programs and programming
languages, frameworks and approaches to process the data, create
different applications, C#, Java, Python, Go, Rust, PHP, backend and
frontend, but data is the same. The major is data model and storage to
keep the data (hard drives, etc.).
Through the different years I can implement solution using PHP,
ASP.NET Web Forms, Python ASP.NET MVC, Core 7 -8 -9 -50, Go, but the
client see only the result - e.g., rendered HTML.
ASP.NET Web Forms, Python ASP.NET MVC, Core 7 -8 -9 -50, Go, but the
client see only the result - e.g., rendered HTML.
I think my perspective is very solid and actually aligns with a
principle that’s sometimes underappreciated in software development: technology is ephemeral, but data endures.
principle that’s sometimes underappreciated in software development: technology is ephemeral, but data endures.
✅ Data is the enduring asset
Applications, languages, and frameworks come and go. They evolve
rapidly. But data — the meaning it holds, and the relationships it
models — is often the most persistent part of a system.
Applications, languages, and frameworks come and go. They evolve
rapidly. But data — the meaning it holds, and the relationships it
models — is often the most persistent part of a system.
Even when companies rewrite systems (e.g. moving from monolith to
microservices, or from PHP to .NET), the data typically must be
migrated, cleaned, and preserved because it represents the actual
business value.
microservices, or from PHP to .NET), the data typically must be
migrated, cleaned, and preserved because it represents the actual
business value.
✅ The data model is critical
The data model (schemas, constraints, relationships) captures the core
business concepts and rules. A poor data model is very hard to fix
later. It can haunt an application through years of development.
The data model (schemas, constraints, relationships) captures the core
business concepts and rules. A poor data model is very hard to fix
later. It can haunt an application through years of development.
Good systems design usually starts by understanding the domain and modeling the data accurately.
✅ Storage & integrity underpin everything
Whether you store data in SQL, NoSQL, files, streams, or object stores,
that’s foundational. Data consistency, reliability, and backups are
critical. It’s often easier to rewrite the code than to recover lost or
corrupted data.
Whether you store data in SQL, NoSQL, files, streams, or object stores,
that’s foundational. Data consistency, reliability, and backups are
critical. It’s often easier to rewrite the code than to recover lost or
corrupted data.
I've had hard drives break down with complete data loss - it's very painful. I even wanted to close my project twice.
✅ Data as the Core
At the heart of almost any application is the data and the data model.
If the data is structured well and stored reliably, you can change
almost everything else — programming languages, frameworks,
architectures — without losing the essence of what the system does.
At the heart of almost any application is the data and the data model.
If the data is structured well and stored reliably, you can change
almost everything else — programming languages, frameworks,
architectures — without losing the essence of what the system does.
- Data model: Defines how information relates, what constraints exist, and what can be queried efficiently.
- Storage: Ensures durability, consistency, and performance. Without proper storage, even the best data model is useless.
Everything else — APIs, business logic, presentation layers — is essentially a means to transform, present, or interact with that data.
✅ Code is (relatively) transient glue
You can write the same business logic in Python, C#, Java, PHP, or
JavaScript. Frameworks change every few years. The code is how we
process and present the data. It changes with trends, scalability needs,
or user expectations.
You can write the same business logic in Python, C#, Java, PHP, or
JavaScript. Frameworks change every few years. The code is how we
process and present the data. It changes with trends, scalability needs,
or user expectations.
✅ Applications are interfaces to data
From a client perspective, what matters is the result, not the tool used
to get it. You’ve experienced this: whether you built it in PHP,
ASP.NET Web Forms, Python, Go, or something else, the client only sees
the rendered HTML, or the API response.
to get it. You’ve experienced this: whether you built it in PHP,
ASP.NET Web Forms, Python, Go, or something else, the client only sees
the rendered HTML, or the API response.
This is why so many companies can rewrite their backend entirely in a
new language or framework — as long as the data model remains
consistent, the user experience can remain the same.
new language or framework — as long as the data model remains
consistent, the user experience can remain the same.
✅ Frameworks and languages are temporary tools
Programming languages, frameworks, and architectures are tools to manipulate and present data. They come and go:
Programming languages, frameworks, and architectures are tools to manipulate and present data. They come and go:
- PHP was king for web apps, now often paired with modern JS frameworks.
- ASP.NET Web Forms → ASP.NET MVC → Core → .NET 7/8/9.
- Go and Rust are rising for performance-critical backends.
The important insight is: your experience transferring
knowledge across languages is made possible because the underlying data
and patterns remain the same.
knowledge across languages is made possible because the underlying data
and patterns remain the same.
✅ Strategic Implication
If you adopt a “data-first” mindset, you can:
If you adopt a “data-first” mindset, you can:
- Focus on robust and flexible data models.
- Ensure storage and retrieval mechanisms are efficient and scalable.
- Swap technologies as needed without breaking the system — e.g.,
replacing the backend, migrating from SQL to NoSQL, or introducing
microservices. - Make your systems future-proof to a degree.
It also explains why data modeling and architecture skills often outlast language-specific expertise.
I think data will outlive code. Yeah! 😎