A Heated Topic
Recently I was given the opportunity to attend WordCamp US which was the first national WordCamp. One of the topics that kept popping up was working locally and people would ask recommendations and you would hear all sorts of answers. It seemed like VVV (Varying Vagrant Vagrants) came up a lot but was also met with concerns about complexity, overhead, ease of use, etc.
As someone who has been an advocate for working locally for years and has always been the first person everywhere I have worked to push the initiative and make it happen, I think that we might be making a huge mistake by trying to push VVV as the only option or at least the best option. There are many options out there such as MAMP, AMPPS, XAMPP, DesktopServer, or even setting up your computer itself to serve the files.
So Many Dependencies
My primary argument against starting off with VVV when someone is completely new to anything with the command line is that it has such a huge overhead. What I mean by that is the average user who is simply trying to build a small website locally has to install Virtual Box, VVV, Homebrew, and then VV to really get the most of what they are going to need. That is a lot of stuff to simply install a WordPress site locally and then work on it. In addition to all the dependencies you still have to rely on the command line to operate the server, set up new installs, reboot everything etc.
But Having to Use the Command Line For Everything Is Good, Right?
Well, yes and no really. Sure we could make the argument that this is a great learning opportunity for everyone because they HAVE to use the command line to do every little thing but we forget in our infinite wisdom that this is a horrible way to teach someone. Can you imagine if when you were in school you were taught addition, multiplication, subtraction, all at a once and then tested on it? Most people would have a hard time keeping up and that is where the real issue lies. When someone is learning git for the first time, they shouldn’t have to worry about what Vagrant Up does, or how to create a new site through terminal, they should be learning about add, commit, push, pull, and all the other important commands.
If I tried to get my coworkers to use VVV while learning Git, Gulp/Grunt, SASS they would definitely tie me up to one of the support beams in our glorious office and use me as a human dart board. Many of us make these recommendations without thinking about the hurdles we overcame, we understand things but only because we have worked through many trials and errors long forgotten. A few years ago when I was showing a coworker how to use a theme boilerplate that uses node, grunt, and SASS we ran into an issue where we kept getting errors when compiling. After some digging it turned out that there was an issue with node-sass and the newest version of node that was out at the time. Needless to say he was frustrated and quite frankly didn’t even want to touch the theme anymore. Luckily I was able to get him squared away and I haven’t encountered any issues like that anymore.
What I learned from that experience was that even under the best circumstances, there are so many unknown variables that can make even the simplest of tasks profoundly harder and without the experience or knowledge to troubleshoot the issue some people will simply give up and move on thinking that the tool itself is broken.
Less Is More
When it comes to teaching it is better to stay as focused on one task or as few tasks as possible. The more steps you add increases cognitive load and makes it harder for someone to memorize and understand exactly what they are doing and why. Someone learning git for the first time already has their mind full of what commands they should be using, and should be focused more on how to manage their commits and deployments, not worrying about why their VM won’t boot.
By lowering the barrier of entry and making it easier for someone to focus on a smaller set of instructions we also limit Imposter Syndrome. It can be devastatingly discouraging when someone can’t grasp concept A because concept B isn’t working properly, for example their dev environment isn’t loading correctly. Just like in the example I gave with that theme, you can’t make a really smart person feel completely useless by giving them too much to take on.
Use Whatever Works Best For You
Start off with what works best for you even if it isn’t the best tool out there. More importantly don’t knock people down for using MAMP or other similar tools. I’ve used AMPPS for a while now, and if it weren’t for it I couldn’t have gotten convinced the rest of the team or several friends to work locally. With all that being said, Vagrant is really really awesome. You can create blueprints (with VV) to install whatever theme you develop with, install plugins, create fake content. the list goes on and on. So use Vagrant if you want or use MAMP. As long as you can get up and running to get started with the tools that really matter such as Git then that is all that matters.