[🏫 In-Person] Thinking Functionally with C# and Modernising a Legacy .NET
Details
This event will be a double talk, Thinking Functionally with C# with Molly and Modernising a Legacy .NET with Kseniia
⚠️ This will be an in-person event, the venue is Goodlords Offices at Ratoon, 33-35 Fargate, Sheffield.
- 📌 Google Maps: https://maps.app.goo.gl/7BigFQzWAbBXbRUW6
- 🚗 Parking: The APCOA car park on Eyre Street is a five-minute walk.
Agenda:
- 🍕 Pizza/Drinks (18:15 - 18:30)
- 🗣 Introduction (18:30)
- 👉 Thinking Functionally with C#
- 👉 Modernising a Legacy .NET Platform Without Stopping Delivery
- 🍻 Social @ Pub (after the talk)
👉 Thinking Functionally with C#
Have you ever wanted to write C# code that's more supportable, robust and testable? I can't think of any reason you wouldn't! Functional programming is an alternative style of writing code to the Object-Oriented paradigm that most of us are taught at the beginning of our careers, and it's not only simpler to learn than OO, but also results in a better overall codebase.
In this talk, I'm going to not only show you what the Functional Programming paradigm is, but I'm also going to explain how you can adjust your thinking and approach to problem solving to work in a functional manner.
There won't be any hard theory or talk of list theory, just immediately useful, practical coding technique.
👉 Modernising a Legacy .NET Platform Without Stopping Delivery
Modernizing legacy systems sounds exciting in architecture diagrams. But reality is usually much messier.
Tightly coupled services, shared databases, hidden dependencies, operational risk, delivery pressure, and years of accumulated technical debt make large-scale modernization far more complex than simply “moving to microservices” or “upgrading to .NET Core”.
In this talk, I’ll share lessons learned from modernizing a large-scale .NET platform operating in a high-throughput, highly regulated environment serving millions of users and processing thousands of transactions per second — all while continuing to deliver features and support live production workloads.
Rather than a big-bang rewrite, we adopted an incremental modernization strategy:
modernizing APIs and service boundaries,
extracting selected capabilities into dedicated services,
introducing orchestration layers,
and progressively migrating parts of the platform from .NET Framework to .NET Core.
I’ll cover both the technical and organizational realities of the journey:
what worked well,
what became unexpectedly difficult,
where microservices helped,
where they introduced new complexity,
and why modernization is often more about managing risk and dependencies than technology itself.
This session is not a step-by-step migration tutorial.
It is a practical, experience-driven look at how engineering teams evolve large legacy systems at scale without pausing delivery, disrupting production, or rewriting everything from scratch.
Key Takeaways
Why big-bang rewrites rarely succeed in complex production systems
Practical approaches to incremental .NET modernization
Lessons learned from introducing microservices into legacy platforms
Common migration pitfalls, trade-offs, and hidden complexity
How to balance technical transformation with ongoing business delivery
