A development environment is a series of configurations and applications on your computer that allow you to run a web application locally. Many programmers create development environments on their local machines so they can quickly test the effects of their work.
When development environments work well, it’s really great: you can write code and bugfix yourself before you have to deploy anywhere, and you can QA the product without destroying things for everybody else.
But development environments usually do not work well. They take hours – sometimes days – to configure properly. One environment has no guarantee that it’ll work well with another: in fact, most of the time, installing one environment will break others. I lost a couple of weeks of work to development environment configurations in 2015. And that’s not even counting the UX nightmare that is widely-used version control app Git: when the de facto standard is so busted that it intractably hoses the computer of one of the best designers on the planet, then you have a rather serious problem on your hands.
Nobody is going to hire me to program any backend ever, but I consider myself moderately fluent with code. I’m familiar with a command line. I know enough PHP to design my own checkout system. I can speak with developers very effectively when I’m put in a team with them. So why are development environments still, in 2016, such an utter nightmare?
Because in making one, you’re expected to be a low-level sysadmin for your own machine. Replicating the conditions for a server to run properly is hard. Software is picky. Lately, I’ve gained more respect for systems administrators now than ever before.
I work with a bunch of clients. Some of them have development environments. Most of these environments conflict with one another. As a result, I have begun adding explicit stipulations in my contracts that you can’t expect me to set up a development environment to do any of my work for you.
There is no fee that you can pay me to get past this. You can’t mail me a laptop with a development environment properly configured on it. You can’t fly a developer out here to somehow ensure three versions of Ruby are installed at once for me. Developers have created a user- and contractor-hostile environment for doing their work, such that wasting a full day configuring an environment is somehow considered both table stakes and acceptable. Mercifully, providing valuable design strategy does not require that one install a development environment – and until that changes in a big way, I am done with it.
This is doubly sad because refusing to install a development environment exacerbates the designer/developer divide that I spend so much time railing against. I would like to help. I am okay with prototyping. I actually love expressing my ideas in code. But you can’t expect me to spend two days overhauling my personal laptop, only to find out I can’t post anything to my blog anymore – and then when I fix that, the environment you asked me to install breaks again.
So, now I wait for things to get better. Fortunately, I’m in no hurry. I can still write and speak about design, and make a decent living from it. That will have to be enough for now.