64 karma · joined December 17, 2017
With some exceptions, the people who write this sort of article have the confidence (or presumption) to see themselves as ahead of the pack. It is rare to see articles like this written by teams of people who, in cooperation, balance tasks like product management, architecture, engineering, operations and customer success between them. And yet that is, imo, the best way to do it.
When I read and article like this advising the reader to do X to "their team" (in this case let your team get on with work), it falls into this category where the "how to be a great X" applies to a particular structure - where "X" is somehow in control of the rest of the team, rather than an equal participant.
The more we use these, the more likely the APIs are to be fully implemented (and hopefully have features added to them).
As a general rule of thumb I find SPAs deliver much faster, but ROCA-style solutions are much more predictable. That is, getting a modest MVP out the door with an SPA terms to be much faster, but almost always reach a critical mass of functionality at which point they become hard to maintain. ROCA-style apps don't suffer with this as much.
I don't think this experience is just down to the architecture however. I just think it asks a lot more of a software engineer to structure and maintain an SPA well. Ultimately an SPA can be a more optimal architecture for many applications because the client-side environment is an increasingly powerful VM in its own right. However, I rarely see the engineering discipline required to do it right.
I tend to prefer ROCA-style because it fits better with the web's distributed integration architecture, but in practice I find building an SPA with a resource-oriented mindset is usually a good compromise.
Lack of ownership of responsibility is still quite a big roadblock for many companies.
The author seems to consider BEM an example of a _semantic_ CSS scheme, but really the semantic needs to be clear across all the consumers of the API being implicitly established by the markup.
Ultimately HTML is the original source of a web page, with CSS and JavaScript often augmenting this. For that reason, I think it makes sense to opt for the HTML spec's definition of _className_ semantics when there is a clash.
The spec effectively balances the importance of both CSS and JavaScript (or other user agent) uses, but cites an example useful to both:
https://www.w3.org/TR/1999/REC-html401-19991224/struct/globa...
My first prototypes tend to be in create-react-app with session-storage (state dies with browser session). I publish this as entirely static content on Amazon S3 (via CloudFront).
After that if the use case seems solid I choose the appropriate tech for the job
My first prototypes tend to be in create-react-app with session-storage (state dies with browser session).
After that if the use case seems solid I choose the appropriate tech for the job
Although we use the web as an application platform, it was designed for information interchange, and evolved to support "an Internet-scale distributed hypermedia system." Those are often two quite different things. An application platform focuses on "component semantics" whereas the concept of an "Internet-scale" application focuses on "connector semantics".
"Not only is the set of input controls really small, but these controls have almost no functionality associated with them." - yes and that's a useful attribute if you are architecting "internet-scale" applications (think hypermedia, rest, hateoas et al.) because the intent is that each component is dumb enough to be seamlessly switched out with another. In this mindset, a page in a web application does one thing and does it well. It doesn't coincidentally provide retina scanning and 3d imagery (yes, i know...)
Neither the code nor the UI of the web are "solved" problems if you are trying to use it as a traditional application programming platform. You need frameworks and tooling to accomplish that.
I'm not arguing here that it should be this way (although I happen to love the web concept), but the real debate here is about "web" vs "app" - not "code" vs "UI". HTML is designed to facilitate web applications and that will continue to evolve very slowly and deliberately. The alternative is to reimagine web technologies as a traditional application platform from the ground up.
All they need to do to bring people back is simplify and focus on robustness of the key functions. However, I'm not sure there's much of a business model they could exploit in this way. Using Skype is free. I've used in for about 10 years and in that time I've maybe spent £40 on paid calling. That's not enough to sustain a high quality offering. It only works if consumer market is the entire focus, leveraging the strategies that the like of Facebook employ.
For these reasons, although it wouldn't be hard to fix, I reckon it won't happen. But who knows, Microsoft have done some things in the open source arena over the last five years. Maybe one day they'll run a product like Skype simply for the satisfaction of owning the world's best online calling service (and the money would surely follow).