# Rewriting a Legacy VB6 application

# Rewriting a Legacy VB6 application

Publish Date: Aug 13
0 4

Rewriting a Legacy VB6 App Solo — 4 Years In, Still Going

Hi Devs 👋

I’m a solo developer based in the UK, and I’ve been working on a long-term rewrite of a legacy VB6 application into a modern stack. It’s been over four years of deep refactoring, architecture redesign, and plenty of reverse-engineering—definitely a labor of love (and sometimes frustration!).

The original app was a VB6 desktop tool used in Trading, and I’ve been migrating it to [C#/WPF/.NET/etc.]. Along the way, I’ve wrestled with technical debt, shifting requirements, and the occasional existential dread that comes with solo dev work.

I’m posting here to connect with others who’ve tackled legacy migrations or long solo projects. I’d especially love to hear from devs in tech who’ve navigated similar challenges—whether it’s burnout, imposter syndrome, or just the grind of keeping momentum alive.

If you’ve ever rewritten something that felt like a beast, I’d love to hear your story. And if you have tips for staying motivated or knowing when to pivot, I’m all ears.

Looking forward to learning from you all and hopefully sharing a few war stories of my own!

Cheers,

Oxygen8

Comments 4 total

  • Paul J. Lucas
    Paul J. LucasAug 14, 2025

    This is mistagged. #c is for C; #csharp is for C#.

    • James Williams
      James WilliamsAug 14, 2025

      Thanks for the correction, it should be correct now

      Thanks Paul

  • Spyros Ponaris
    Spyros PonarisAug 14, 2025

    Hey James.
    If I were starting fresh instead of porting a heavy desktop app, I’d go Blazor (or Blazor Hybrid) for flexibility and longevity. I would strongly recommend Blazor instead of WPF.

    I found WPF isn’t actually deprecated Microsoft still updates it but their future push is clearly toward Blazor.

  • Spyros Ponaris
    Spyros PonarisAug 14, 2025

    A few things really helped me get through the rewrite:

    • I broke the project into small deliverables, so I had something “done” at each step.
    • I set up automated tests early, which saved me from chasing the same bugs over and over.
    • I documented as I went, especially when I reverse-engineered VB6 logic I knew I’d forget later.
    • I refactored my own refactors when the first “modern” approach didn’t hold up.

    .

Add comment