title: Increasing the barrier
url: https://tobiastom.name/articles/increasing-the-barrier
hash_url: 3f28879235b63c62380e34417a8609de

<p>We live in a world where things need to compete. It seems that almost nobody can be happy with the fact that we have some kind of diversity. People need to classify what they are doing and they need to give it names. This is one of the reasons why most people have strange job titles. What the frak is a „Software craftsman“? The more important their work sounds the more important they feel. Working as a web designer does not seem to be not good enough any longer. The web needed a promotion. Today you are not building for the web, you are building for the web platform. </p>

<p>The barrier to enter a platform is usually pretty high. If you want to develop for iOS you need to buy a mobile device, a desktop computer and obtain a license to publish content in the designated distribution channel. Everything from one company. I'm not saying it's a bad thing – I’m build for <a href="https://succont.com/services/ios">iOS</a> as well as for the <a href="https://succont.com/services/web">web</a>. I’m just saying that it is a pretty big amount of work and money. Especially because you did not yet start to learn how to use all this technologies – you did not start to create something.</p>

<p>With the web this is different. You can buy any computer you can afford, write some HTML and upload it to a server somewhere. You can teach yourself some CSS and everything will turn to be beautiful. You can learn some scripting language by yourself and build dynamic pages that look differently based on the weather on that particular day. 
You can focus on learning the technology, not the requirements behind it. There is not a complete platform you have to understand. The web consists of many small and simple bits and pieces that can work independently from each other. When you need something in more detail, you can dive into that. You can paint your own images inside a web browser by „just“ learning about the canvas element. There are no further requirements. Just your text editor of choice and some documentation.</p>

<p>Although it’s not so easy. Because the web is seen as a platform these days, people need professional tools. Highly educated developers need to feel important. That's why they increase the tools, the workflow and the requirements every week. Other people can't, and won't follow up, so the "professional" ones can put themselves in a special place. They make themselves a requirement for the project, so they are needed „forever“. If that is your way of working, that’s ok for me. I don't have to like it but at least it is your choice. People can pick who they hire and who they work with. We call it freedom.</p>

<p>The real problem arises as these people try to push the web forward. They are always looking on how to compete with their worst enemy. The native platforms. As they do that, they increase the requirements with each and every step. Slowly they make features of the web inaccessible to new, or novice, users. To developers, designers, writers, painters and children who don't have the experience we have with our tools and our development environments. Here are two of many recent features that make it harder for them to participate in our line of work. </p>

<p>Exhibit A: <a href="https://en.wikipedia.org/wiki/HTTP/2">HTTP 2</a>. This new protocol, everybody seems to like, will move the web forward – they say. Maybe even make it a real platform. To understand my problem with it, we have to go a little bit into the past. HTTP 1 was successful because everyone could understand it. It was easy. You could read the specification or just look at the data that is transferred. One can somehow understand what is happening between the computers. With HTTP 2 this is all gone. There is just a bunch of binary data crossing the pipes that you cannot really make sense of anymore. Of course there are tools that will display what's happening in-between, but that's the point of this post: just another tool experts need to know.</p>

<p>Exhibit B: <a href="http://www.w3.org/TR/service-workers/">ServiceWorker</a>. When you decide your website needs some kind of background task, this will be the way to go. Except, it isn't. You can fiddle with it locally as long as you like (and as soon as you understood how to setup your local web server). As soon as you want to show it to someone, you are out of luck. You are required to have something called HTTPS working on your publicly accessible server. It is supposed to protect you and everyone else from real security risks (and it does), but after all this just creates another requirement for you. Before you can ask someone for help you need to have proper encryption set up. No matter how much documentation you read, this is an impossible task for someone who wants to create a website. It’s by far not your intention to configure a server – but without it you are locked out.</p>

<p>I can see the advantages and security considerations that created the argument about defining the standards that way, but I’m not yet sure if they are a valid excuse to make things harder for everyone. The web should be approachable, accessible and affordable. Not only for visitors of websites, but also for people who are trying to create something. If you have to learn how to setup HTTPS before you can make your website available offline you increase the barrier. If you have to find, install and understand a tool just to see what data is send in the background you increase the barrier. The bigger the wall gets, the more people are scared away. Every „professional“ developer focuses on building tools that are supposed to help you. What beginners usually end up with is a big chunk of files where nobody understands which parts are working together in which way – and which don’t work at all. The web was initially about freedom of choice and simplicity. If someone tells me how I have to use the web (as a platform) I could just as easily switch to a real platform and get the native benefit. </p>

<p>Please think twice before you add a requirement next time, especially when you build (or specify) something for someone else. That someone might not be as experienced as you are.</p>
