At the time, I worked for a consultancy with many clients on different tech stacks. My dream was a one-click solution to setting up a development environment for a client. I felt it was taking too many hours to context switch between clients. At the same time, I wanted a way to run quick Linux-based workloads for school (I was a CS student at the time and diving into operating systems and so on and it was tough to work in the lab setting).
I had actually just learned about virtualization maybe a few months prior. And I chose VirtualBox because it was free and I was a college student that had to pinch every penny I had.
Then I just started building, trying to make that dream a reality. I failed a good many times privately before inching closer and closer to what was eventually released. I think "eating your own dog food" is really important and I did that throughout: using Vagrant as much as possible. That led me to some things where I thought "wow, yes, this is really good" and some other things where I felt "this is not right, this is bad work."
Vagrant 0.1 wasn't great, so don't get the wrong idea that I shipped something amazing. But it worked, and I kept iterating, and it got a lot better.