Hacker News new | ask | show | jobs
by gukov 1241 days ago
Banning an example of a perfectly engineered product seems wrong. Does it set an example that’s very hard to achieve? Perhaps. Should others strive to learn from it? I say yes.
4 comments

I think that one might think that an example is relevant if it has repeatable properties.

WhatsApp might be so straight to optimum that no visible properties of engineering are extractable, besides that the engineers made no errors in their judgments.

Making no errors is something you want to replicate, you just don’t know how. Seen like that, the example has no value.

Personally I think that showing that it is possible had some value per se

Was WhatsApp a "perfectly engineered product"? It's important to note that, at the time that Facebook purchased WhatsApp, WhatsApp was still running at a loss. That $0.99/year subscription fee wasn't cutting it. Maybe WhatsApp could have survived by raising prices, or maybe that would have prompted everyone to switch to Facebook Messenger (or Google Hangouts). It's an open question.

It's hard to claim, though, that WhatsApp was perfectly engineered when its financial model was unsustainable.

i fail to see the reasonning. History has proven that revenue is very orthogonal to technological perfection ( unfortunately for the amateurs of good engineering that we are here on HN).

Trying to assess the performance of the engineering team with the money the company generated would lead you to use let's say crappy php web framework everywhere, because that's what most businesses that make profit out of the internet are running for their CRM systems.

Doesn't make any sense.

    Trying to assess the performance of the engineering team with the money the
    company generated
 
But is that wrong? And if so, why? We're hired, as engineers, so that the business can make money. Insofar as our excellent engineering makes the business money, it is valuable. When David Hennemeier Hanson wrote the Rails framework for Ruby, his justification for using it was not that it was more elegant than Java, although it certainly was. It was that his convention over configuration approach allowed small teams of developers to launch websites quickly, by having the framework assume that they were doing things in "sensible" ways.

    would lead you to use let's say crappy php web framework
    everywhere
Maybe we should use more "boring" technology like PHP and Java. Has the continued replacement of Java with PHP, PHP with Rails, Rails with Node.js actually benefited our customers? Or has it benefited programmers' desire for novelty at the expense of our customers? At work, one of my co-workers proposed writing a new front-end component in Vue.js, rather than React, because React was "old" and "showing its limitations". I pushed back, arguing that all the rest of our code was in React, and I wasn't sure that he'd necessarily made the case for Vue providing tangible improvements in maintainability or speed of development. We went back and forth, but in the end he won out, and now we have a bit of Vue in our codebase. Has this improved anything for anyone, other than the programmer who now gets to say on his resume that he's implemented production code in Vue.js?

EDIT: That's not to say that I'm against all innovation. There are certain classes of innovation that have definitely brought tangible improvements in the speed of development and reliability of the software developed. Memory management is a big one. Going from (legacy) C++ to Java is a huge step forward, just by freeing the programmer from having to worry about the most common sources of memory leaks. Likewise, strong type systems are another advance, that is just coming into the mainstream with Rust (and, to a lesser extent, Typescript). Lisp-like languages (although little used) offer another step forward in productivity by allowing the programmer to write functions that can inspect the internals of other functions as data.

But I feel like that's a different category of thing than trying to argue the merits of React versus Vue or Python versus Javascript.

It’s arguably just not that relevant to most products; few real world products are as _simple_ in their requirements as original-WhatsApp. (Not a knock on original-WhatsApp, but you just can’t necessarily scale this model)
No, you see. We must rush out and break things first, then ask questions later. That's true engineering.

And then your computer wails in agony as another opened chrome tab drains 6GB of RAM.

Chrome has a million requirements compared to the original WhatsApp.

So do those tabs Chrome is probably loading.

And yes, in 2040, Chrome will be using 60GB of RAM for "similar" stuff (superficially similar).