Before web design, I was an aspiring software developer. I went to university and took Computer Science, where I was taught the wonders of low-level hardware, networking, C++ and Java. I enjoyed Object Oriented programming with Java the most, and found the process of turning a rough sketch of a program into working code gratifying.
However I was always frustrated by the complicated and drawn out process of configuration. As soon as it came to tinkering with virtual machines, environment variables and forcing versions I was frustrated and bored. It became a huge barrier to entry for me, especially when it came to sharing code and publishing work. I’d write a cool little program I wanted to share, I’d package it up and send it to someone and it inevitably wouldn’t run. Cue some tedious troubleshooting and frustration, which really kills the buzz.
Before this I’d always made websites, but avoiding underlying code, instead preferring Dreamweaver’s interface. In the months following my graduation, I rediscovered the web, appreciated it for the simplicity and low barrier of entry. But more than this, the simplicity of HTML and CSS, coupled with cheap, accessible webspace meant sharing work was easy. The web community was vast and the people were generous, differences in platforms and versions and local configuration barely mattered, so sharing code with people was easy.
Nowadays, I find the web looking more and more like my days as a frustrated software developer. We’ve got preprocessors, package managers, build tools, CLI tools and frameworks built on frameworks. I’ve often wanted to try out the latest Sass library or fancy new framework, only to find my local system is missing dependencies, on the wrong version or the wrong platform. If I have to use Bower to install a fancy new CSS reset, rather than just download a CSS file I’m not interested.
So how did we get here? I understand as the web has matured the need for automation and testing is there. Businesses depend on websites to provide their income and downtime is expensive. Version control, build tools and testing prevent human errors and keep sysadmins and managers happy, but are we straying into empire building? Do you really need to make your CSS reset only available via Bower?
We’re told designers need to learn to code, but coding for the web is quickly becoming so complex that if I was starting over I’m not sure I could manage. I worry that when my children get to the age they can start tinkering with code, as I did, that the barrier to entry will be too high. Instead of simple HTML and CSS they’ll need to be proficient in the command line, understand packages and the low levels of web server configuration before they can even open their first tag. I have a degree, but I think I could be where I am today without it. Can the next generation say that, or will they be burdened with huge amounts of student debt? Will jobs in the web industry be restricted to those that can afford it?
So what am I saying? I think we should take a step back and consider the current state of web technology. As we’ve made the web more capable, we’ve inevitably made it more complex, but have we raised the barrier of entry as a side effect? Have we made the web industry less accessible to the novice developer?