Embrace the web

Developers often ignore the fact that the UI design lifecycle (approximately 3 years) is usually nothing like the application lifecycle in that identity is organic and continuous and applications are not. Baking the web stack fully into the back-end is usually not a good idea. The overall design of a website will change before you’ve recouped the development costs for the application. So, be careful you don’t get screwed.

CSS isn’t often a problem, it’s nature tends to allow it to live outside the application. Lazy loading isolated CSS* isn’t really ready yet, but brings the downside of decoupling to bare when attempted. JavaScript strangely isn’t a big problem either because developers tend to, correctly, focus on only adding to the application on top of the existing web stack. Testing, however, is paramount, and testing is the one thing that needs more love from front-enders.

HTML is really hard

In case you were wondering, HTML becomes less flexible as the site grows because changing markup causes all kinds of side effects.
For starters, HTML acts the foundation for presentation, behaviour and content. Markup usually changes if any of these change, and visa versa. If you can’t access HTML easily then making minor changes to presentation (CSS), behaviour (JavaScript) or content (CMS data) isn’t trivial either.
As HTML is tied to other technologies you need your markup to be uniform and consistent across your website. Are you really using a Style guide to implement the given markup patterns?
Also, markup is often mixed down to a lower code level. Making changes suddenly becomes more painful requiring redundant knowledge and skill, never mind the additional testing. Something so simple has been unnecessarily promoted to application code. Adding a comma requires the developer have a full development stack with all its dependencies loaded and then ’build’ the application to see the change. That’s not just wasteful, it’s stupid. Yes, a pet peeve of mine, however, a bugbear for many.

The problem has been around forever and ways of dealing with this range from from the full lock in approach with an IDE like Visual Studio to adding more tooling like jRebel. We’re still stuck a massive development overhead. Requiring a backend build step is killing development speed.

Markup templates as external files as we already have for JavaScript and CSS seems like only rational approach and one that’s gaining traction. Options like Handlebarsjs, JSX, Dust etc. are in my view different flavours of the same solution I’m looking for. Having access to the markup without all the overhead is the big win. Making changes suddenly becomes more manageable and financially feasible. A redesign goes from being a non starter to being able to keep your edge in the branding strategy stakes. Marketing requires companies to turn on a dime, embrace the web an let go of the back-end hammer. Tools for the modern web are plenty sharp.

* Lazy loading CSS is a tricky topic and usually a little too complex for most web teams. Maybe worth a post in the future.