Does web development make any sense at all? The currently available interface (HTML/CSS/Javascript) tools are miserably broken. Am I the only one who thinks like this? or Is it really this bad?
What are your thoughts?
I can see why people are using frameworks. Pressure by management. Horrible deadlines. Laziness. Etc.
However, I feel that it isn't just destroying their native ability to code correctly, but it's causing a global inconsistency with the folks who really created their skill sets from the ground up, and learned the hard way - through facing problems head on and finding effective solutions.
JS Frameworks, imo, is the end of an era of people that took pride in their work. NPM is great example of the cluster**** that's been encouraged by folks creating a "key to the city" - which then breaks, is abandoned, and destroys any castles that are built with that lock. Dependencies are just that, and when you suddenly need to find something to fill that blank... you should have never been forced to depend on it.
"Iterations" are misused. Nicknames are misused (like "scope", which becomes redefined again and again, no longer having a clear definition.) Frameworks are misused, much like Wordpress, for an out-of-the-box solution that's bound to break for no reason at all, but a sheer lack of initiative.
I'm currently learning the beauty of Go (aka golang), and wish that the forced consistency would be applied to HTML/CSS. CSS Grids is native, and a great step forward from using Bootstrap for grids.
Actually when you stay in the old html/css/js system dropping monolithic webserver like Ruby's Ralls or Pythons old Django keeps things simple and they are not broken if what you build is a website or even limited interactive functionality webapp.
You can sprinkle some interactive parts to framework rendered templates using, react, Angular, vue or even jQuery. Just keep routing & state in the backend. This is tried and tested way, with clear docs and huge ecosystems + every 3th party API known to man integratable as premade package...
Now if you really are building something that is true interactive application it comes a bit messy. React + React_router + Redux or Vue equal are awesome but best practice, ecosystem or even simple things like styling are not as developed. Then there is an issue where part of your backend is probably not ready as an open API & or reporting service you used cannot collect data from js objects or SEO issues or ... Well you get the pic. This really hits hard small teams. You simply cannot afford spending a day troubleshooting webpack.
There is also a third way which I use rather often for marketing and landing pages. This is webapp light. Its simply a single HTML5 index page + CSS stylesheet with hardcoded links and some cool animations and interactions writing in vanilla js. These are hosted in object store like S3 and loaded to CloudFlare. Any rich interactions are done by dropping in 3th party tools with client side API keys. I am expanding this to call Lambda endpoints through AWS API gateway.
You would be surprised how many real business problems can be solved with something like this. Especially good approach for marketing pages, landing sites. Docs, sales brochures with interactive features, management reports etc..
I would say it's more the understanding of web development amongst the community that's broken. Developers adding in multiple JS frameworks without caring about speed, optimisation, accessibility, or progressive enhancement, are the ones that need to stop. Immediately.
You'll have to expound on what makes it broken...
As a software engineer who develops almost exclusively in JavaScript (well, TypeScript), I think the web ecosystem have matured greatly in the last 5 years. Many of its shortcomings have been addressed with new APIs such as fetch, promises/async-await, modules, web components, web workers, etc. In fact, with the introduction of Node, NativeScript and React Native, and Electron, I wouldn't be surprised if JavaScript becomes the dominant language for most programming tasks in a few years.
It can take a lot of work to be effective in JavaScript, but with the right toolset, web development can be quite enjoyable. (I recommend TypeScript, Sass, Angular 2, and Webpack.)
I believe that web-technologies can be used in very good ways, since they are very powerful and quite flexible, but this leaves room also for them being used in bad ways.
Recently, in the last years, there was a big turmoil! I would say that some "innovations" are breaking the previous ways: I refer to web-sockets(breaks HTTP), single-page applications (breaks previous ways of navigations and linking and in some cases search-engines interfacing is worse), compiling (bigger code?, and what about caching/fetching?, developer work-flow and tooling) ... these (and others) are taking the web back to desktop or more classical paradigms (I would say the web did help in having new ways of looking at software design).
I would say that choosing to use something without proper considerations could be worsening.
I feel pretty much the opposite way! With just a foundation of HTML + CSS + JS there's no end to the amount of documents, designs, even software you can build. The web and its APIs are the most exciting development platform - and it's one people all around the world carry with them, most of us have a phone with a browser in our pocket! It's hard for a software platform to get more ubiquitous than that.
If I build it, guaranteed you can run and see it. That's pretty amazing compared to every platform other than the web! That's what keeps me inspired :D
Define "broken" :)
HTML, CSS and JS are hardly perfect but they are so well established their pros and cons are pretty well understood (at the industry level)... plus they are still evolving as time goes on (eg. HTML5, CSS3, ES6...).
Maybe if you elaborate a bit more about why do you think it's broken.
Is it hard to develop?
Aren't you making enough profit of it?
Is it used for bad purposes?
To many frameworks to few original work?
I think web development is healthy comparing it with mobile apps development, in terms of profit and tools available. But it's just a narrowed perspective.
HTML was invented in 1980 and developed in 1990 for the sake of being able to share research papers. What do we use it for now? For just about everything, in other words, not what it was designed for.
LiveScript appeared in 1995 and was rebranded JavaScript in 1996 to try and ride on the popularity of Java's back even though it had nothing to do with Java. Support for it was horrific as well.
It was originally created as a toy language to glue things together on the web:
We aimed to provide a “glue language” for the Web designers and part time programmers who were building Web content from components such as images, plugins, and Java applets. We saw Java as the “component language” used by higher-priced programmers, where the glue programmers—the Web page designers—would assemble components and automate their interactions using [a scripting language].
What is it being used for today? Just about everything, in other words, no longer as just a glue language to validate fields and start Java applets and as a result, the legacy of it being a glue language sticks through the modern layers of ECMA6 and 7.
At the time, if you wanted a red link, you hardcoded that colour into the link. Only in 1996, CSS came along and support for it was horrifically bad, but it gave us the promise that we could now clean our HTML and remove all those inline colours and move the presentation to a separate file. CSS was also very minimal back then and very few browsers supported it.
CSS was pretty much designed around HTML which at the time if you wanted to layout a page nicely, you literally put a table tag on the page and stuffed some more table tags in the cells.
Since the web was designed with backwards compatibility in mind, all this legacy keeps on pulling along complicating things.
Broken? I'd say it was not originally designed for what we do with it today.
HTML, CSS, and Javascript are 3 completely different technologies (or whatever you want to call them). You don't need to use CSS. You don't need to use Javascript. But they help, a lot.
Bootstrap or Foundation are options; they're not requirements. React or AJS or Vue are options; they're not requirements.
You can build a perfectly good website with inline styles and native JS. You don't need to transpile typescript to JS. You can write, native JS all day to your hearts content.
We can look at almost any other programming language and say the same things. If Swift is JS and Interface Builder is HTML in iOS - you don't need to use Interface Builder. You can build your entire interface with Swift in code. Is it a good idea to do so? Maybe, maybe not. Sometimes, interfaces can only be built via code due to their complexity, but it is an option. The same way sometimes you need to have JS output HTML because HTML by itself won't cut it.
tl;dr - no, I don't think HTML / CSS / JS are broken. Their the foundations of web development. I do think frameworks and everything that goes with them are broken to a certain point but that's a whole other conversation.
Sumant Kanala
Learn. Share. Survive!
Juanita Sutton Indeed it seems. Take a look at this talk. youtube.com/watch by none other than the great Douglas Crockford.