I have been developing web applications for a while now, working freelance on oDesk, and from my work, I can state I do have some experience in doing this. Now, I will not claim to be a web-app ninja, but I will try to state my case as objectively as I can, but you decide how much salt you'll take it with. Deal?
HTML - The M is for Markup
From what I have come to understand from the gurus and ninjas in this field, HTML was built as a markup language. It was meant to give meaning to the content of the page, e.g.
- < h1 > is greater than < h2 >, which in turn is greater than < h3 > etc
- < form > represents an electronic form where you can fill in and submit data
- < button > and < input type='button' ... > represent input elements that can be used to activate certain actions like submit forms, etc
- < a > - the anchor tag, is meant to represent links to a different part of the page, other pages, or another site
Now, if there is one thing that I have found painful in my work, it is when people make use on the anchor tag to submit forms.
I am one of those people still living in a third world country (and if things keep going the way they are, we just might have to come up with a whole new class beneath that for the country), and as such, bandwidth is expensive (I dare say, artificially so).
Now, we all know that the tag < input type='submit' ... > will submit any form it is in, no questions asked, but 'NOOOOOOOOO!', we have to bloat that up by getting rid of it, replacing it with a link, and then using the jQuery library to submit the form. A form submission, I tell you!
Back to the Basics
Hear me out, before you fetch the noose. I am making a simple suggestion here, based on the experience I have had with web applications, and even some plain websites.
First, you eat away my bandwidth with silly content, then you force me to use even more of my bandwidth, just to get functionality that is already built into html.
Now, I do not know what you think, but I dare say, it is easier to pass to each other data, than force the backend to rely on the design of the frontend. Think also, of when you decide you want to change the look and feel of the website, then you have to make changes to both the front and backends, introducing new bugs, and possibly throwing away months of work debugging the data communication etc.
Now, if you had simply passed data between the frontend and backend, say using json, xml, plain text, plain html and others, then you can change the frontend any time without worrying about the backend, since the data interchange format is standardised, agreed upon, and DEfuckingBUGGED!.
Now, think of your client, and how happy they are, every time they contact you to change the look and feel of the website, and you do that in a few weeks without breaking the backend, and they think you are a god! Yeah, keep doing the shit you're doing, and that will never happen.
I'm angry, and so are you. Let me know what you think in the comments. Try to be civil, though I probably haven't.