The Good, The Bad and The Web

tl;dr: The web development environment has too many flaws for us as developers to ignore at this point. The web is broken technology and its about time someone fixed it.

The web is one of the largest platforms in the tech industry. It can in many ways be considered the core of many products and services that consumers all over the world use in a daily basis. It is a powerful tool that allows access to anyone with a computer and an internet connection. The point of this post is to highlight its strengths and weaknesses from a development point of view.

The good thing about webdev is the open world that it lives in. Webdev has many ports of entry. Anyone from can learn webdev in a matter of minutes and launch their own website in a matter of hours. It does not matter what language you know or if you know any at all. It is common for beginners in the field of computer science to approach webdev because of all the resources available.

Almost every language has a web framework that harnesses its powers. This allows experienced programmers with no knowledge of webdev to create something with it. An example is the one that I am currently using, Django powered by python. Django is a fast way to create dynamic web applications using an MVC architecture and I would highly recommend it to anyone looking for something new to learn. Others include Rails(Ruby), Nodejs(JavaScript), J2EE(Java), etc. With a little about of knowledge about the syntax and basic html we can create dynamic websites instantly.

The web also has dark parts that people don’t realize until they are deep into it. Eventually every web developer realizes that they have to worry about cross browser compatibility. This means that their technology needs to be working equally well among all browsers and not just their most commonly used one. This means testing each page in Chrome, Firefox, Safari, and IE. As an experienced slave of this task I can say that never will you achieve full compatibility without some kind of sorcery. There are many resources out there that try to provide developers with this power but none are perfect.

Compatibility extends to more than just browsers. Recently we have entered a market where websites needs to be compatible with screens of every size possible and needs to be dynamically created as such. We as developers need to think about viewing and interacting with the website from phones, tablets, and computers. All of this compatibility is absolutely necessary if we want to deliver the full product experience to our users. Compatibility can be a nightmare but it is just a shadow to a darker truth.

The truly dark side of web development is disguised in its static state surrounding its lack of growth. The web has very little and very old standards. The lack of evolution of HTML, JavaScript(JS), and CSS as a productive and effective language are the main causes. I think that it is unacceptable that we have to rely on things such as LESS, Compass, etc. to write our CSS for us so it can be processed by our browsers. I feel the same way about JS and how it has no intuitive form of OOP. It is a powerful free form language and I respect that however webdev often follows specific architecture that would beneficial from both the flexibility and a strongly typed version of JS. Lastly HTML, there is no greater evil than it. Have you ever counted how many classes a tag has and realized that sure you are doing something wrong. The unfortunate part is that it is most likely not you but the technology itself.

Developers we are working in a broken system. We need to work with technology that is up to par so we can do more. If we can do this we will not have to worry about compatibility as much as we will have the luxury to test everything in a more thorough manner.