Hacker News new | ask | show | jobs
by securityfreak 2933 days ago
I honestly do not understand how did a large part of the software engineering community get to this point of idiocy.

Is this due to the principle of getting to the market first and quick prototypes? I don’t see a quick way back.

6 comments

Frankly I find your view pretty offputting.

I’m not really that into the idea of JS-as-a-platform, but it obviously emerged because it fulfilled certain requirements that weren’t covered elsewhere.

The “way back” from this is for people like yourself to stop dismissing others’ work as “idiocy” and start building better solutions to these problems as you see them.

>I’m not really that into the idea of JS-as-a-platform, but it obviously emerged because it fulfilled certain requirements that weren’t covered elsewhere.

Maybe they weren't covered for a reason?

The ability to have your web team churn out lowest common denominator bloated JS based mobile/desktop apps was not a real requirement, more like a wish of some.

Now businesses do that just because they can.

They do it simply because it's the most cost effective solution overall.
Typical capitalism outcome.

Cheapest to produce AND worst quality. In this case by bad performance and unneeded cellphone battery drain.

These products will be dominated by superior options eventually.

> These products will be dominated by superior options eventually.

Would love that to happen, but all the other market sectors suggest otherwise. "Cheapest to produce and worst quality" seems to be all that's available to majority of the population.

Like Apple, Lexus and Infiniti products. Totally.
Yes. It's the most cost-effective solution, because:

- we haven't figured out how to make companies care about "delivering value" part of the "delivering value in exchange for money" work, and

- we allow them to dump externalities on users without consequences or compensation.

So the most cost-effective solution in this scheme will be a half-assed product that's barely good enough to be sellable, and which makes my computer use more electricity while being less capable of running software simultaneously.

And the whole point of native components in Vue/react is to reduce those negative externalities, but the first thread I see in this post is criticizing Vue for sharing from react's ecosystem instead of inventing an indentical solution from scratch?
At the current rate we will soon have phones with 8GB RAM and who knows how many cores not having to rewrite same code 3 times in 3 lang. will def. be catching on more.
If by soon you mean in 2 years on flagships (looking at current specs, I don't buy it), then for regular users buying regular smartphones it'll be ~7 years from now.

I don't feel like this is a valid justification for being wasteful, though.

> The ability to have your web team churn out lowest common denominator bloated JS based mobile/desktop apps was not a real requirement, more like a wish of some.

Come on, the requirement has always been there. It is "Shit out that underbudgeted project in half the promised time". Those small frameworks where you can hire a cheap front-end guy and have him manage the entire project alone or in a small team are perfect to fill that niche.

Maybe "idiocy" is unnecessarily strong, but I certainly don't have to praise all emerging experiments just to sound polite, do I? The emerging of all these stacks is because of approachability. Everyone has a browser. Anyone who wants to create their first website can do so, by opening up e.g. notepad. By this approach you get low-quality, self-taught JS "experts" who are much cheaper to hire than a proper software engineer with fundamentals of computer science. After a few years these developers feel so confident, they decide to launch their own perfect new framework/library to solve all the problems they experienced!

There is a better solution. It's called native app development, without a hyphen of any sorts in front of "native". Different platforms have different quirks and there is no way to have the exact same UI/UX on all platforms.

The true challenge is to explain the executives, that hiring 2 developers will be much better in the long run, than 1 underpaid JS developer for all platforms.

I used to agree with you. But over the last few years, in their own ways, Apple and Microsoft have dropped the ball on their native desktop UI toolkits. So, whereas the argument for native used to be "rewrite your client once per platform, and you get a better language, better performance, better usability, and a better development experience", now it's "rewrite your client once per platform and you may get a better language, depending on your taste, probably better performance, an aging closed-source toolchain, an outdated development paradigm, outdated APIs covered in legacy-barnacles, debugging-resistant performance pitfalls, and decent usability if you're ok with a generic one-size-fits-all look (and you're on your own if you're not.)" In other words, the argument for native, and native development itself, is not aging well.
> but I certainly don't have to praise all emerging experiments just to sound polite, do I?

Speaking from personal experience, I have found it vastly more productive to focus on the good than the bad. Yes, even in situations where the other person is literally [1] too dumb to put their underwear on correctly without assistance.

I don’t know how or why it works to do that, but it does, and the improvement from doing so is immense.

[1] Alzheimer’s.

it will get worse before it gets worser
It just made possible for web developers to jump on the native apps train

It's hard to think of it as an improvement

The idiocy is in the hundreds of engineering hours spent to build half baked solutions that never work as expected and never will

It's developers not wanting to adapt, while if they spent half of that effort on red or even visual basic 6 we would have end up with something better

Diversity is king, web everywhere for everything will impoverish the entire developer's community

I find it entertaining that you post this a within 24 hours of the linus/tanenbaum rehash.

Getting crap done counts for a lot. Web, and hci in general, isnt figured out well at all, so we can spend a few decades pursuing an ideal we don't even have defined...or we can get stuff done.

If you are arguing for some specific non-"idiocy", please, explain why your version hasn't taken off.

> I find it entertaining that you post this a within 24 hours of the linus/tanenbaum rehash.

Do you have a link about this latest rehash? I tried googling without success

Sorry for the late reply - the article is old, but the HN link (and comments) is recent: https://news.ycombinator.com/item?id=17294907
> getting crap done

Yeah you end up with crap.

Non-serious: maybe they have to spend so much time chasing the latest trends in JS frameworks that none is left to learn about alternatives.

Semi-seriuos: I am afraid many honestly believe that JS is the best language and has the best ecosystem.

I consider myself lucky having learnt programming back when you had no choice but to use different tools/languages for different tasks. It provides with a luxury of being able to compare different approaches.

It's all about developer productivity and nothing else. Well, maybe a healthy dose of cargo cutting. But anyway, no care is really given anymore about resource usage, etc because all of that is abundant.

I personally don't like it as I think it's wasteful and careless.

> no care is really given anymore about resource usage, etc because all of that is abundant.

They're abundant for people who you only think about themselves. Who believe that their application will be the only one running on the machine. Which may be the case if you're developing software for touchscreens on a factory floor, but is definitely not true for end-user software, and doubly not true for anything on the web.

Nah it's the culture - at some point someone started teaching people that learning new programming languages and more fitting tools is hard. So now there's a whole herd of people who refuse to learn anything but JS and then spend time wrapping the wrappers and debugging them instead of taking a tool better fitted for the task.
We are in the odd position where HTML + JS + UI framework (Vue/React) is just by far the best way to create good user interfaces. The performance hit is not going to stop anyone from using or developing software like this. There is NO good alternative.
I'm sorry, but the way the web stack is typically is the opposite of good user interfaces. It's not that the web can't be used to create good UIs, it's just I've never seen it used in this way, and I find that the less of web technologies you use, the better.

A good user interface will, among other things, be consistent with its environment, efficient wrt. to its purpose and performant.

Consistency with the environments using similar interface primitives to other applications at all levels - not just looking like other applications (to facilitate knowledge transfer/principle of least surprise), but also supporting universal idiosyncrasies - like the context menus in text field, copy-paste, integration with system-wide settings, etc. Looking the same is anathema to web designers, and reconstructing anything else than basic functionality of an UI component is something webdevs usually can't be bothered with.

UIs that are efficient for purpose happen on the web, as long as people do not follow popular UI/UX guidelines. Efficiency for purpose usually means denser interfaces, less bells and whistles, more data on screen, more features and functionality, and a bit of learning curve - all of these are actively hated in the current web ecosystem. All the efficient interfaces I see on the web these days are of those products that didn't get the "web 2.0" memo and are stuck in early 2000s.

Performance. They say V8 is heavily optimized and all, but for some reason the modern web is still fucking slow. Might have something to do with ads and tracking, but it also might have something to do with trying to be first-to-market, and putting in lots of pretty looking bells and whistles. The end result is that I say the data table might need to display 10 000 rows, and I see the UI team cringe at the thought of slowdown. Well, why on Earth would 10k rows in a 4-column table be a problem? Oh, you used lots of JS magic to make that table pretty and "reactive" and shits, that's why.

--

TL;DR: The web is the opposite of good UIs. I'm not really sure if the problem is technological - it seems to be almost entirely cultural.

For certain values of good user interfaces perhaps.

There has got to be a better way forward for mobile UI.

For desktop creating UI on something like QT designer or XAML on WPF is way more pleasant than HTML+JS+UI framework .

Even Actionscript was less convoluted that this mess.

I love writing React code but these abstractions are getting too elaborate.

I had high hopes for WebComponents but support for those seems to be stagnating.

Xaml and Wpf? Qt? I am honestly asking you, have you worked with React before? XAML has a learning curve of 2 years and more to get to expert level. I developed with it for more or less 5 years and i still have nightmares. Qt and the others are all imperative layout inflaters. React was a revolution, maybe the first cross platform paradigm that actually made sense. A learning curve that doesn't span more than a day. In all my years as a frontend developer i haven't seen a simpler way to create user interfaces. And sure as hell i would prefer React on the desktop or mobile over aged native toolkits that still struggle with obsolete oop-mvc-templating semantics, especially wpf and xaml, which in my opinion where the sole reason why i started hating my job.
I love writing React code and it is easy to get up to speed there.

I abhor the mix of HTML/CSS for UI design. I'd rather code UIs in Actionscript.

The web browser as an abstraction for general use UIs is just not ideal.

XAML might be a company induced mess underneath but my point is that you don't have to be XAML expert to make nice interfaces. I made CRUD apps on WPF and rarely did I have to touch XAML directly. I had a big thick book on XAML and it sat unopened on my shelf.

I am forced to do front-end webdev work and I hate it. I need to worry about UI breaking instead of worrying about business logic.

Let's say client needs a dropdown menu added at a certain location. On desktop this is cake on most toolkits.

On web the problem is that there is no certain location, there is no absolute. You have to delve deep into CSS abyss to figure out how the component will behave.

Well i give you that, css is what it is, but even with basic css knowledge, making a dropdown appear anywhere you want is not hard: https://codesandbox.io/embed/w7499vxrzk

It could be better, but it's even got a proper grid system now, close to wpf's. From what i remember though, wpf's styles also had some rough spots.

Uh, there is in fact, an absolute(position:absolute). It has caveats, but doesn't XAML? The 'certain location' bit is actually quite complex:

- how is it supposed to adapt to different resolutions?

- is an inner absolute component allowed to escape its container?

- how does it layer with other components?

The CSS required to position an element at an absolute location must take all of these into consideration, and I'm not sure how much better a native toolkit can make it.

Compared to vue, qt and all its reincarnations are a nightmare to work with.
Maybe. But it boils down to where you want to put the crap - contain it within the dev team, or drop it on your users? Obsessive trading of developer time on your end for compute use on users' end is a big part of what makes web UIs suck. Also, for keeping some of the crap on your end, native-native toolkits give you consistency and performance for free.
I'm almost at a loss for words. The web stack is frankly one of the worst ways to create a good UI. The best UI's typically have three key area's:

- It's easily discoverable by the user - The web is typically horrible at this. Custom controls, look and feel's, and a severe lack of common UI patterns. Native app's have this in spades.

- It's performant - Native wins this hands down everytime. The web stack lacks threading and one of the major keys is to NOT do work on the main thread for a great UI. The vast majority of web dev's have never even thought about threading.

- The design puts features in a place the user can easily and quick get to. This has little to do with the technology platform.

Bottom line is the web stack is at a MAJOR disadvantage for building a UI. The only use for it on mobile is that developers refuse to put in the work to learn how to do the platform justice.