I've found it's pretty seamless. You're editing files on your local dev machine, which vagrant auto-mounts in the guest OS. Ports are automatically forwarded to your host dev machine, so my workflow is literally exactly the same as if I developed directly in OS X. The only difference is first having to run "vagrant ssh" to run commands in the dev environment, but for having a repeatable, share-able, isolated environment with all dependent libraries automatically installed, it's well worth typing "vagrant ssh".