[HN Gopher] Principles and priorities
       ___________________________________________________________________
        
       Principles and priorities
        
       Author : hypertexthero
       Score  : 91 points
       Date   : 2020-04-27 16:07 UTC (6 hours ago)
        
 (HTM) web link (adactio.com)
 (TXT) w3m dump (adactio.com)
        
       | ncmncm wrote:
       | Operating system policies are interesting in this regard.
       | 
       | Continued correct activity of OS processes is prioritized over
       | user-level activities even where the purpose of the system is
       | explicitly the latter. The reasoning seems to be that if the OS
       | can't keep up, it can't maintain the environment that enables
       | user-level stuff to work.
       | 
       | This generates conflict where user-level activities have real-
       | time requirements. It is very, very hard to get your typical OS
       | to leave a process running on a dedicated ("isolated") core and
       | never, ever interrupt it, even given root privileges and boot-
       | time static provisioning. Just store a byte in a file-mapped
       | page, and whoops! get unsynced millisecond pauses while the OS
       | copies it to the disk sector. Oh, and surely you still wanted an
       | interrupt every millisecond to see if any OS resources tied to
       | the core need cleanup, even though it never is asked for OS work.
        
         | jschwartzi wrote:
         | Which OS? In QNX this isn't an issue. If you have hard real-
         | time requirements you need to use a Real-Time Operating System.
        
       | MattGaiser wrote:
       | 1. Most developers don't work for the end-user. They work for who
       | is paying their salaries, which is often someone is mostly
       | interested in luring the end user and using them to sell a
       | product to someone else (everyone from Google to Facebook to
       | DoorDash has this model). Without those megabytes of JS analytics
       | and whatnot, the end-user cannot be packaged into the actual
       | company product.
       | 
       | 2. As the real customer for the developers consists of these
       | institutions, they care more about development costs than whether
       | customer internet is wasted. Developer convenience means cheaper
       | projects.
       | 
       | 3. Users blame themselves for the performance tax. They think
       | they downloaded a virus, have an old computer, or need faster
       | internet and they go and upgrade all those things, making the
       | performance tax seemingly disappear.
        
         | askafriend wrote:
         | > Most developers don't work for the end-user.
         | 
         | This is extremely reductionist.
         | 
         | If you want to take it further, then nobody works for the end
         | user ever. If you have any funding _at all_ (even from the
         | public markets) then you  "work for investors".
         | 
         | Can you see how this is theoretically true, but practically not
         | as true?
        
           | Ididntdothis wrote:
           | You work for whoever is deciding how much money you get. In
           | bigger companies that decision gets made many layers away
           | from the end user.
        
           | wayoutthere wrote:
           | I dunno, this feels like a technicality. Almost all of us
           | work for a company, not the end user. We look at the company
           | to figure out the balance it wants to maintain between user
           | experience and maintainability. And companies are focused on
           | the customer relationship, which is the sum of all
           | experiences a customer has with the company _over time_.
           | 
           | And part of the way you can actually deliver a good customer
           | experience, consistently, at scale, is by _focusing on
           | developer efficiency_. To consistently deliver a great
           | experience to customers in a world of constantly shifting
           | customer expectations, you need to be able to ship features
           | from design through delivery very quickly.
           | 
           | This means enabling your developers to be more efficient by
           | designing products that are _flexible_. Maybe the user
           | experience isn 't 100% optimal for a given customer
           | interaction, but the goal is to keep the sum of all
           | interactions over time as high as possible.
        
           | Rury wrote:
           | I don't see your point.
           | 
           | Maybe the OP's argument doesn't fit every case, but there's
           | many where it does (e.g. large companies). Calling it
           | reductionist, doesn't necessarily invalidate it...
        
           | Yen wrote:
           | Maybe nobody works for the end user ever, but some people
           | work more for the end user than others.
           | 
           | If you work for a web site that makes its money by lead gen
           | or advertising, you're often working against the end user.
           | This isn't necessarily true, it's just how the incentives
           | will align.
           | 
           | If you sell SaaS to the enterprise, you're not working for
           | the end-user, you're working for their boss, or whoever else
           | is making the purchase decision.
           | 
           | If you're selling a product directly to end users, and
           | usability is a factor in whether or not they choose pay you,
           | that's a little closer to working for the end user.
           | 
           | And, best-case scenario, if _you_ are the end-user, or your
           | boss is the end-user, then you can truly be working for the
           | end-user.
        
           | joefourier wrote:
           | But it does explain a lot of things in practice. Many
           | developers will choose to use a technology not because it
           | makes the end-product better for the end-user, but because it
           | will make their resume more attractive for potential
           | employers.
        
           | pmw wrote:
           | I suspect OP is referring to the Principal-agent problem: htt
           | ps://en.wikipedia.org/wiki/Principal%E2%80%93agent_proble...
        
       | a1369209993 wrote:
       | Similarly: "Make it work, make it right, make it fast, make it
       | pretty, _in that order_. "
        
       | partyboat1586 wrote:
       | Developer efficiency is actually harmed by valuing it so much.
       | Developers get into pointless ideological debates about purity
       | and that hurts their efficiency. When good developers have to
       | deliver features in a short time frame they stop debating that
       | stuff and make decisions. They then learn from these decisions
       | the hard way and no one is having an ideological debate any more.
        
         | majormajor wrote:
         | There's a "no true scotsman" answer where both these
         | ideological debates, and the "ship a bad experience because the
         | developer wants to use shiny technologies" the original article
         | discusses, are clearly not ultimately "efficient" for the
         | business.
         | 
         | But it points to a problem with using the word "efficiency"
         | like this if it's so commonly misused/misinterpreted.
         | 
         | "Deliver value" is something I've seen people push instead, and
         | it tends to stay more customer-focused. It's hardly perfect,
         | and there are still temptations to bikeshed and focus on the
         | wrong thing, but it's a bit easier to recognize and course-
         | correct as a team when that's your ultimate goal.
        
           | a1369209993 wrote:
           | > But it points to a problem with using the word "efficiency"
           | like this
           | 
           | Just adding faux-numerical terminology helps a bit:
           | ideological debates are of (approximately) zero value,
           | whereas javascript frameworks are of negative value.
           | 
           | > "Deliver value"
           | 
           | TFA did already make this point, but that's meaningless
           | unless it's short for "Deliver value, even it conflicts with
           | [some specific other thing that you might resonably want to
           | do].".
        
         | agentultra wrote:
         | And if they keep delivering features in short time frames they
         | will never get a chance to debate quality or elegance in their
         | work.
         | 
         | And eventually you will start hearing them complain about an
         | unmaintainable mess and turnover will probably increase.
         | 
         | /s
         | 
         | I think you do have to care, on some level, about maintaining
         | code quality and standards. I've worked in feature-factories
         | and it's not a panacea. _It doesn 't crash_ and _it goes
         | reasonably fast_ are both features after all that seem to be
         | related to the quality of a code base and the expertise of the
         | team behind it.
        
           | jakear wrote:
           | One approach is a schedule for when everyone works on debt vs
           | features vs testing.
           | 
           | For instance: first week of the iteration is for paying off
           | debt. Second and third are feature work. Fourth is testing
           | (note: not unit testing, real testing. As in everybody chips
           | in to actually play around with the features their colleagues
           | added and provide feedback; also verify that all the bugs
           | that were fixed this iteration didn't creep back in, or get
           | fixed with a "works on my machine" patch)
        
           | partyboat1586 wrote:
           | Of course there is a balance to be struck. I'm not saying
           | don't plan things out at all. I'm saying limit the time you
           | spend doing it relative to the impact of the decision. That's
           | not always easy to gauge which is where an experienced tech
           | lead comes in to have the final say on what gets done and how
           | long the debate goes on for. A strong tech lead is essential.
        
         | wslh wrote:
         | Yes, indeed it is team efficiency.
        
       | craigkerstiens wrote:
       | The TLDR states that the current state of modern development
       | prioritizes developer efficiency over all else, and that user
       | experience is way under valued.
       | 
       | My problem with this isn't that it places value on user
       | experience, it is in the premise that developer efficiency is
       | prized above all else. Deploying an app today is just as hard as
       | it was 15 years ago. The only two things that jump out in recent
       | memory that made a very sizable difference on developer
       | experience were Heroku, Github, Docker. Setting up a hello world
       | with react and a basic API takes me a day or more, where as 10
       | years ago with jquery this was an hour or so. Deploying an app
       | with K8s is google scale, but takes me a week to do, forget
       | debugging something in production.
       | 
       | If we've been prioritizing developer efficiency at all costs
       | we've failed pretty massively. I personally love the idea of
       | optimizing a lot for developer efficiency because we can do
       | deliver more value to others at the end of the day, but there's a
       | lot of shiny new stuff that has some reason for existing which is
       | definitely not developer efficiency.
        
         | MattGaiser wrote:
         | React's efficiency is through its millions of packages. I had
         | to build a project rapidly in React a short while ago and there
         | was a package for everything.
         | 
         | A toggle? Yep. A timeline? Yep. A textarea? Yep. Toasts? Yep.
         | Spinners? Yep. React just has so many pre-built components that
         | you can add features very rapidly.
        
           | polote wrote:
           | You will have the same thing if yo use a jquery extension,
           | and you won't have to install webpack
        
         | ThrowawayR2 wrote:
         | > " _If we 've been prioritizing developer efficiency at all
         | costs we've failed pretty massively._"
         | 
         | Do we not hear all the time on HN, for example, that "Yeah,
         | native apps are more efficient and look better but Electron
         | lets us just write it once and deploy on multiple platforms"?
        
           | saagarjha wrote:
           | You hear the opposite, too. In fact, you'll hear both anytime
           | an Electron app makes it to a front page, or if a company
           | known for sticking to their guns on Electron or native
           | announces literally anything.
        
           | zxcmx wrote:
           | A bloaty app that's not platform native is still infinitely
           | more usable than something which doesn't exist at all.
           | 
           | Electron is one of a number of technologies which allow
           | things to exist (in a non-optimal form) that might not be
           | economically possible if a bigger team or a lot more time
           | were required to ship them.
           | 
           | IMHO the sad thing is not that Electron exists, the sad thing
           | is that we don't have stuff that's _way easier_ like
           | hypercard or VB6 was.
        
           | joefourier wrote:
           | Electron allows you to package your webapp into a
           | downloadable stand-alone package, but does not make your
           | development any more or less painless if you decide to use
           | modern Javascript frameworks and infrastructure built for
           | Google-scale deployment.
        
         | tensor wrote:
         | It's certainly a sentiment that is somewhat common. At the
         | extreme end you have people arguing that you should optimize
         | developer efficiency even over shipping working bug free
         | software, which always blows my mind when I hear it. And I
         | don't mean accidentally doing it, I mean _knowingly_ shipping
         | something that doesn 't work.
        
       | polote wrote:
       | > Sadly, I think the current state of "modern" web development
       | reverses that principle. Developer efficiency is prized above all
       | else.
       | 
       | I strongly disagree with that, "modern" web development values
       | beautiful code over almost anything else, if that wasn't the case
       | you could have one of your dev building a form in a few hours,
       | instead they need tons of tools (react for example) that slow
       | their development
        
         | [deleted]
        
         | lolsal wrote:
         | > I strongly disagree with that, "modern" web development
         | values beautiful code over almost anything else
         | 
         | I would condition this to be:
         | 
         | > "modern" web development values beautiful code _that you can
         | see_ over almost anything else
         | 
         | I wouldn't call apps that are run by transpiling code into
         | another language so that it can be compiled into something
         | else, that is packaged up and shipped around in a docker
         | 'image' and then run in who-knows-how-many levels of
         | virtualization in someone else's cloud, particularly beautiful.
         | 
         | I contrived a painful example, but if we're talking 'beauty' in
         | terms of what you see in your IDE/text editor, then maybe
         | you're right, but in terms of what an application is and how
         | it's used/deployed? No way.
        
         | 0xDEEPFAC wrote:
         | Yea, the idea that "modern web programming" is beautiful at all
         | franky makes me cringe.
         | 
         | Web programming and the web has separated developers too far
         | from the hardware that actually runs the stuff and, as a
         | result, we have built confusing towers of babel.js.
         | 
         | I mean, Javascript was originally made for developer ease over
         | user reliability - and look at it now - it shows with the
         | cacophony of NPM dependencies prone to "leftpad" style failures
         | and the new frameworks every 6 months. All of this, of course,
         | goes against one of the author's key points: "User experience,
         | even over developer experience."
         | 
         | Unfortunately, I don't think the problem is solved by process
         | but instead on re-education to compiled, reliable systems, made
         | with a typing system designed to catch errors. Introducing more
         | process and efficiency will never make a bicycle into a proper
         | car.
        
           | Tade0 wrote:
           | > I don't think the problem is solved by process but instead
           | on re-education to compiled, reliable systems, made with a
           | typing system designed to catch errors.
           | 
           | We already have that in the form of TypeScript, but both
           | left-pad and core-js were, for lack of better term, non-
           | technical failures.
           | 
           | Only the most recent such case - is-promise - was purely a
           | technical failure.
           | 
           | There's not much than can be done when the sole core
           | maintainer of a popular library lands in a penal colony.
        
             | 0xDEEPFAC wrote:
             | > We already have that in the form of TypeScript
             | 
             | While an improvement Typescript is a far cry from the likes
             | of Ada and doesn't really compare.
             | 
             | > There's not much than can be done when the sole core
             | maintainer of a popular library lands in a penal colony.
             | 
             | Perhaps the solution is to not use Javascript, since it
             | always forces you into an "ecosystem" of "frameworks" at
             | every turn - and they are not cheap! Just another thing to
             | throw on the stack. mb's be damned.
        
         | [deleted]
        
       | [deleted]
        
       | simonw wrote:
       | The thing that confuses me about "modern", JavaScript-everything
       | web development is that I just don't see the developer
       | efficiency, at all.
       | 
       | I've collaborated with many different teams that use the modern
       | JavaScript stack. It seems to me that it takes multiples of time
       | to deliver features compared to the old forms-and-HTML-with-a-
       | tiny-bit-of-JavaScript-enhancement methodology.
       | 
       | Are we really optimizing for developer efficiency here? We've
       | given JavaScript-everything a decade to prove that it's a better,
       | more productive way of building higher quality websites and
       | applications. I don't think it has.
        
         | ssalka wrote:
         | The problem is, today's applications are not HTML forms with "a
         | tiny bit of JavaScript enhancement."
         | 
         | Today's apps are immense JS programs - tens if not hundreds of
         | thousands of lines.
         | 
         | Good luck scaling that without modern tooling.
        
           | [deleted]
        
           | simonw wrote:
           | Most of those applications don't need that though. Developers
           | write hundreds of thousands of lines of code because that's
           | what you have to do if you commit to a JavaScript-everything
           | architecture.
           | 
           | If the thing you are building needs that then go ahead and
           | build it like that. But SO MUCH of what I see built on the
           | modern JavaScript didn't need to do that at all.
        
         | godot wrote:
         | Quoting this paragraph by the author:
         | 
         | > First and foremost, there's the end user. If a technology
         | choice harms the end user, avoid it. I'm thinking here of the
         | kind of performance tax that a user has to pay when developers
         | choose to use megabytes of JavaScript.
         | 
         | I believe the author is indeed talking about React (and other
         | frameworks), SPA, big JS bundles. The developer efficiency
         | being alluded to here is for tech startups to scale a team. A
         | component-based frontend is valuable in providing that
         | efficiency. The efficient is not about building a form in a few
         | hours vs 2 days with React, but about code maintenance and
         | scaling a team so many developers can work on the frontend at
         | once in a sensible way.
         | 
         | However, having said that, I am not an advocate for a React
         | frontend. I actually recently wrote an article, on a different
         | topic, but with a very similar theme [1]. I think component-
         | based frontend framework solves a real problem in an
         | organization, but it does not have the best UX in mind.
         | 
         | [1]: https://dev.to/bigi/dev-to-is-the-perfect-demonstration-
         | of-h...
        
         | hinkley wrote:
         | I had a job with a bad case of NIH and my lead was a very
         | upbeat guy.
         | 
         | A couple months in he gave me kudos for getting something done
         | in "only two weeks"
         | 
         | This was work that would have taken less than a week on my
         | first big frontend job and here it was noteworthy that I did it
         | in twice the time. Confusing emotions. Initially I felt dirty.
         | Or like I was in the beginning of a horror movie where it turns
         | out the happy guy is the killer.
         | 
         | And while I agree with the title on the article, I think it's a
         | shame because what we should be rewarding is effectiveness, not
         | efficiency. I probably spend 20% of my time working on
         | improving productivity and reducing variability for the whole
         | team. Which means I get a little bit faster (and a lot less
         | stressed out) in aggregate while everyone else gets a lot
         | faster. That lead's boss hired me specifically for that, but
         | not all bosses are so enlightened (and he left a year later).
        
         | [deleted]
        
         | derefr wrote:
         | Depends on what you're trying to build/display.
         | 
         | A sign-up form? Yeah, you aren't getting much from your SPA
         | framework. Pure overhead.
         | 
         | A data-table with user-selectable columns, pagination, and
         | arbitrary sorting and filtering, where the data is too large to
         | fit in memory (billions of rows) so you have to re-render by
         | hitting the server; but the rows contain view-state components,
         | so you can't re-render _on_ the server? Two lines of code in an
         | SPA; three months on your own. Equal resulting JS size, either
         | way.
         | 
         | And something like Grafana: how would you even _do_ that
         | server-side? Emit a server-sent-event stream of SVG images?
         | This is a case where server-side rendering would result in
         | heavier _client-side_ code than an SPA would!
         | 
         | -----
         | 
         | Now, the majority of people using SPAs don't need SPAs. I think
         | people get into SPA frameworks like React because everybody
         | wants to learn the frameworks and libraries, to have them in
         | their pocket and on their resume, for when they
         | (hypothetically) one day get hired for that one job where they
         | _do_ get to build the fancy slice-and-dice analytical data
         | dashboard. That job probably would pay pretty well. They want
         | to be qualified for that job.
         | 
         | If you're a project manager, and you really value getting an
         | MVP shipped quickly, you should push back on the engineering
         | lead's desire to use an SPA framework. Ask them whether there's
         | anything they're really gaining _for this specific project_. If
         | there 's no reason not to, then just suggest they build the app
         | as a plain-old server-side-rendered-HTML app. Use Rails; heck,
         | use PHP. (Or be fancy and use Phoenix LiveView.)
        
         | SkyMarshal wrote:
         | _> Are we really optimizing for developer efficiency here?_
         | 
         | Good question, we're really not, we're optimizing for making
         | websites and webapps work and feel like desktop apps.
         | 
         | > _We 've given JavaScript-everything a decade to prove that
         | it's a better, more productive way of building higher quality
         | websites and applications. I don't think it has._
         | 
         | Not unless you count things like Google Maps, which wouldn't be
         | possible without SPA-style JavaScript.
        
           | simonw wrote:
           | I am 100% on board with Google Maps and Trello being built
           | using JavaScript-everything.
           | 
           | Most of the things I've seen built using the modern
           | JavaScript stack don't warrant working and feeling like
           | desktop apps. They should work like fast-loading websites -
           | especially on mobile phones, which is the source of most
           | traffic these days.
        
         | potta_coffee wrote:
         | I'm not a front-end developer. Often times I end up developing
         | quick front-ends for internal tools, but I've also built them
         | for customer facing products. I've become pretty competent with
         | VueJs and I've been able to build features very quickly,
         | sometimes in a matter of hours. If development is taking a very
         | long time, I feel like that's more likely an organizational
         | problem.
        
         | someguydave wrote:
         | On the other hand, a decade of Javascript sprawl has been great
         | for creating a business case for hiring more Javascript
         | developers and paying them more.
        
         | izacus wrote:
         | I think it optimises for developers ego and "fun" factor. If
         | you actually read into posts around you can quickly see that
         | the developer having fun is paramount to any solution - this is
         | why everything needs to be a proper library and everything
         | needs to be written in the developers favorite language.
         | Ecosystems like JS driven Electron apps come out of this
         | mindset.
        
         | Touche wrote:
         | HTML with a tiny bit of JavaScript is just considered not an
         | option at all, by the designers and the business. They don't
         | want a HTML form post when you delete an item from a list, they
         | want the item to animate out. So if you look at it like that,
         | then yeah it is probably more developer efficient to do it the
         | modern way.
        
           | simonw wrote:
           | That's the tiny-bit-of-JavaScript-enhancement.
           | 
           | It's trivially easy to hook up a "delete" button such that it
           | works without JavaScript, but if JavaScript is available it
           | turns into a fetch() POST that removes the item (with a CSS
           | animation) once it completes.
           | 
           | Or if you're too lazy for progressive enhancement, you can
           | skip the "works without JavaScript" bit.
           | 
           | I used to do this kind of thing with jQuery one-liners all
           | the time. Today browser compatibility is good enough that you
           | don't even need jQuery.
        
             | Touche wrote:
             | Yeah but requirements are never that simple. You also have
             | a cart item in the header that shows 4 but now must show 3,
             | and you have a price that's over in the sidebar that needs
             | to update, etc.
             | 
             | Oh and the user is logged in and is receiving a
             | notification that an item they were watching is now
             | available, better show a toast.
             | 
             | Sorry but the simple jQuery sites turn into soup once the
             | requirements are what they are today. You can still do it,
             | it's possible, it becomes harder and harder to maintain
             | long-term though. Then efficiency becomes worse than how
             | people do it today.
        
               | simonw wrote:
               | So many of the projects I've seen built with modern
               | JavaScript aren't nearly that complicated though. They're
               | building in anticipation of that complexity, but it never
               | arrives.
               | 
               | Look at how many content-oriented news website article
               | pages have gone all-in on React, with the result that
               | they serve up over 1MB of JavaScript just to show you an
               | article with a "save" button that no-one ever clicks.
        
               | Touche wrote:
               | This is very true. I think, as this article describes,
               | going through the process of discussing priorities as
               | part of the initial architecture would lead to asking the
               | questions about what the requirements really are, and
               | what technologies best fit those requirements.
        
               | simonw wrote:
               | Yes, definitely. There are plenty of applications that
               | benefit enormously from the modern JavaScript stack. I
               | wouldn't dream of attempting something like Trello
               | without React or similar! But I don't think it should be
               | the default for every project without at least some
               | careful thought.
        
               | kethinov wrote:
               | I laughed when you said Trello because I just got done
               | speaking with a colleague who complained that it locks up
               | on her every time she tries to screen share while using
               | it; the only web app she works with where she has this
               | experience. It's obvious that the over-reliance on
               | JavaScript is the reason for this and if Trello had a
               | non-JS option she would surely take it even if the UX was
               | "worse." (What could be worse than the UI freezing
               | constantly?)
        
               | potta_coffee wrote:
               | Also as soon as you provide something nice, the manager
               | or business owner or whoever is going to ask for a dozen
               | more features and then you realize "doh, it'd be nice to
               | have some way of organizing all this spaghetti".
        
         | cknoxrun wrote:
         | I couldn't agree more. And I have also found there is a dogma
         | surrounding JS technology that views plain old HTML generated
         | on a server as bad practice and outdated. Yet, again and again
         | I see fast and functional websites converted to JS frameworks,
         | becoming slow, memory intensive/leaky, and less responsive.
        
           | zozbot234 wrote:
           | The new dogma is "plain old HTML generated on a server is OK,
           | as long as it's using node.js on a client-side oriented JS
           | framework". Of course it's just as slow and memory-leaky as a
           | plain old SPA, but now you get that on _both_ the client and
           | the server!
        
         | aboodman wrote:
         | Your experience doesn't match mine, either. I'll go to a lot of
         | trouble to avoid server side development, which is partly why I
         | love <s>Zeit</s> Vercel's offerings -- they abstract me from as
         | much of the unix morass as possible.
         | 
         | I think it might just be a matter of what feels like home to
         | you.
        
         | stickfigure wrote:
         | Your experience does not match mine.
         | 
         | I worked through the pre-Javascript world, the jquery world,
         | the angular1 world, and now the react world (not to mention a
         | decade of native GUI development before that). I am _vastly_
         | more productive with react and my UIs are much easier to use.
         | 
         | Every time I submit some 1990s or 2000s era form that gives me
         | an error because I typed some field wrong, but also wipes out
         | half the other fields I spent 15 minutes typing... and of
         | course, hitting the back button wipes out the remaining
         | fields... I want to reach into the screen and throttle someone.
         | 
         | No thanks.
        
           | simonw wrote:
           | "Every time I submit some 1990s or 2000s era form that gives
           | me an error because I typed some field wrong, but also wipes
           | out half the other fields I spent 15 minutes typing..."
           | 
           | That's exactly why we put so much effort into making sure
           | Django's forms framework didn't wipe out the values you had
           | already filled in if there was a validation error.
        
           | samastur wrote:
           | None of the problems listed is inherent in HTML + touch of
           | JS. Especially since most browsers these days will remember
           | what you typed anyway unless specifically instructed
           | otherwise. Complaining about the back button behavior in SPA
           | world seems...misplaced? If anything, its behavior is even
           | worse.
        
             | andrewla wrote:
             | I think this is referring to the server round-trip -- form
             | submit, server-side validation, "you have to specify a
             | color for your widget" and everything on the field is
             | blanked out because the server didn't fill in the default
             | values into the form based on your previous submission.
             | 
             | Back button stuff; I mean, it's not trivial to support it
             | correctly now, and it might just be an increased focus on
             | usability and testing of this sort of thing, but hitting
             | back was always dicey -- half the time you'd get some error
             | about re-posting form data when you hit back, and if you
             | said no, bad things happened, and if you said yes, worse
             | things happened.
        
       | Erwin wrote:
       | Going one level up to https://adactio.com/journal shows a
       | sparkline (with author's activity perhaps, the latest posting is
       | entry 2666!) which has a feature I have never seen before: an
       | audible graph. Clicking on the sparkline plays tones matching the
       | data. Not particulary useful, but make me thing about using audio
       | for presenting data (apparently "sonification" is a thing!)
        
       | jdbernard wrote:
       | I think there is some truth to the conclusion. But remember that
       | developer time is by far the largest expense when creating
       | software. Sometimes the focus on developer efficiency is driven
       | primary by a desire to minimize this cost.
        
       | jasode wrote:
       | Developer efficiency often gets prioritized over user experience
       | _because that 's the only way the software would even get to
       | exist_.
       | 
       | I take my own software that I write solely for personal use as
       | examples. In those cases, I play both roles of the developer and
       | the end user. Most of my utilities are _console command line_
       | utilities instead of full GUI. As a result, I have a bunch of
       | command-line utilities that are very cumbersome to use. That 's
       | because I prioritized the dev experience over the UX.
       | 
       | Console apps are 10 times faster to code. I can bang out printf()
       | or Console.WriteLine() statements 10x faster than placing GUI
       | textboxes on a form. Yes, GUI wizards and templates accelerate
       | the layouts but it's still not as fast as console apps for quick
       | & dirty utilities. As an end user, I'd prefer easier-to-use GUI
       | apps but I don't have the extra time to code them. I complained
       | to the developer (that's me) to make a GUI app with better UX
       | instead but the dev ignored me.
       | 
       | With my limited time, I'd rather have 20 utilities with bad UX
       | that _exist_ rather than just 5 apps with good UX at the expense
       | of not having the other 15 at all. It 's an unavoidable tradeoff
       | of finite time.
       | 
       | Likewise, I as an end user don't like Electron apps but I know
       | that lecturing developers on using something lighter weight like
       | C++ & Qt or C#/Winforms means they _wouldn 't bother writing the
       | app at all_. It was the ease (and/or familiarity) of Javascript
       | that allowed them to write the app in the first place.
       | 
       | [REVISED above text to clear up the misunderstanding in the
       | reply.]
        
         | redisman wrote:
         | I've build GUI tools for projects like game editors before and
         | since they're mainly for developers it'll just end up as a huge
         | mismash grid of buttons anyway. Not really any better usability
         | than a console app, just there is usually a requirement to show
         | some image on the screen at the same time.
        
         | spiffytech wrote:
         | I think this is the key point -- JavaScript is eating the world
         | because it allows a single team to support a single codebase
         | built in a single technology across all target platforms with
         | minimal platform-specific integration. Indie software gets to
         | exist _at all_, and businesses don't have to pick and choose
         | which OSes are worth the investment, and which simply won't get
         | the product. As was common 10-15 years ago, when most software
         | was either Windows or Mac, often not both, and Linux considered
         | itself lucky that Flash was only a _little_ behind instead of a
         | _lot_ behind.
        
         | cml wrote:
         | Is it possible you are agreeing with the author?
         | 
         | > Most of my utilities are console command line utilities
         | instead of full GUI and they are very cumbersome to use. That's
         | because I prioritized the dev experience over the UX.
         | 
         | As the user you prefer command line utilities, and so I
         | interpret your building command line utilities as prioritizing
         | the user's experience.
         | 
         | On the other hand, if you needed a program that could exist
         | very efficiently as a command line utility but, desiring to
         | learn how to use some new GUI toolkit you built a GUI instead,
         | I might interpret your action as prioritizing the developer
         | experience (in which you are focused on the details of the
         | implementation) over the user experience (in which you are
         | focused on the results).
        
           | intarga wrote:
           | You misunderstood that line, they're saying the command line
           | utilities are cumbersome
        
             | a1369209993 wrote:
             | > the command line utilities are cumbersome
             | 
             | Except this is obviously untrue? I can't pipe a _window_
             | through grep or sed.
        
         | buckminster wrote:
         | Command lines! That's some fancy UI.
         | 
         | For utilities I won't use very often I just hard code the
         | parameters. If I want different parameters I edit the code.
        
         | yepguy wrote:
         | > Most of my utilities are console command line utilities
         | instead of full GUI. As a result, I have a bunch of command-
         | line utilities that are very cumbersome to use. That's because
         | I prioritized the dev experience over the UX.
         | 
         | Same here, although lately I don't even bother writing a full
         | CLI utility. Instead I just write a few functions to call from
         | a REPL.
         | 
         | (On a side note, why is the REPL experience so bad in
         | JavaScript? How can Clojure have a better REPL to the
         | JavaScript ecosystem than JavaScript itself?)
        
       | franciscop wrote:
       | There's a big unspoken truth with Javascript here. The _vast
       | majority_ of Open Source Javascript is created by developers for
       | no money to solve their own problems and itches. Maybe not the
       | most visible top-level libraries like React, but the thousands of
       | dependencies are there to help the developer with some issue they
       | had at some point. Sure they may have secondary goals, some of
       | them including being time efficient, or memory efficient, or size
       | efficient, etc.
       | 
       | So it seems expected that the agglomeration of tools with varying
       | secondary goals, and a clear primary goal, results into this goal
       | of developer efficiency being potentiated greatly. Forget about
       | writing 5 lines of code, just npm install it.
       | 
       | And that _is fine_ IMHO, people /companies with different goals
       | should be doing things differently. It also seems that turnover
       | is a big issue as well for most companies, so they also try to
       | make dev experience better!
        
       | imbusy111 wrote:
       | You're talking about values, not design principles.
        
       | stx wrote:
       | In my experience, companies expect developers to output features
       | quickly. When it does not happen as quickly as expected the
       | assumption is that its the developers when often times its the
       | overall organizations process that is a mess. Its not necessarily
       | a technology problem but a people problem.
        
       | bconnorwhite wrote:
       | Short term: user experience, even over developer experience,
       | because user experience is the point of developer experience.
       | 
       | Long term: developer experience, even over user experience,
       | because over a long enough time period developer experience
       | drives user experience.
        
       | mrfredward wrote:
       | Software development doesn't exist in a vacuum. The author talks
       | about these design principles as if they are supposed to satisfy
       | the software team's personal values, when in reality it needs to
       | be more about the organization's goals and values. Take this
       | statement:
       | 
       | >Usability is more important than profitability.
       | 
       | For a bootstrapped company in danger of running out of money,
       | it's ridiculous to prioritize perfecting UX over making sales.
       | For an open source team, profitability isn't part of the equation
       | at all but user experience might be a top priority. My point is,
       | these aren't just matters of personal taste, the "design
       | principles" have to mesh with the rest of the organization.
        
       | throwaway55554 wrote:
       | Here's the TL;DR.
       | 
       | > But as a general principle, I think this works:
       | 
       | > User experience, even over developer experience.
       | 
       | >Sadly, I think the current state of "modern" web >development
       | reverses that principle. Developer efficiency >is prized above
       | all else.
        
         | ehnto wrote:
         | I probably complain about this too much, websites built with
         | SPA technologies can very often behave poorly to the user.
         | Jittery, slow to be useful, generally less performant than
         | other solutions. I feel like that gets ignored because so many
         | people want to be on the bandwagon, and many feel the developer
         | experience is better so we just kind of sweep that part of UX
         | under the rug.
        
       | dang wrote:
       | The submitted title ("Developer efficiency prized above all
       | else") broke the site guidelines, which ask: " _Please use the
       | original title, unless it is misleading or linkbait; don 't
       | editorialize_"
       | (https://news.ycombinator.com/newsguidelines.html). Cherry-
       | picking the detail you think is most important from an article is
       | editorializing.
       | 
       | Like it or not, titles dominate discussion. The comments in this
       | thread are nearly entirely a reaction to that title. The HN
       | guidelines specifically ask users not to abuse that power. On HN,
       | submitting an article doesn't confer any special right to frame
       | it for everyone else.
       | 
       | If you want to say what you think is important about an article,
       | please post it as a comment to the thread. Then your view will be
       | on a level playing field with everyone else's:
       | https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
       | 
       | If it's necessary to change a title, please do that by picking
       | the most neutral and accurate phrase you can find on the actual
       | page which represents what the article is about. More on that
       | here: https://news.ycombinator.com/item?id=22932244
        
       ___________________________________________________________________
       (page generated 2020-04-27 23:01 UTC)