[HN Gopher] Fast Software, the Best Software (2019) ___________________________________________________________________ Fast Software, the Best Software (2019) Author : Tomte Score : 78 points Date : 2022-11-13 17:08 UTC (5 hours ago) (HTM) web link (craigmod.com) (TXT) w3m dump (craigmod.com) | [deleted] | taeric wrote: | This was quite a ride. Very stream of conscious feel. Such that I | don't want to get too caught in the examples. | | > I don't think I'm invoking some halcyon fantasy. | | That said, the above is in fact a fantasy. Isn't necessarily | wrong, but your average computer image in the 90s is laughably | small compared to today. Such that just opening the app is likely | processing more than was even possible in the 90s. | | This also means strategies that were fine back then, such as | indexing everything on a personal computer so that it could feel | snappier, work against the goal. | | People want faster applications, but we don't really have a route | to letting them do fewer things. And I assert that is a large | part of why things were maybe faster back in the day. | jt2190 wrote: | > But why is slow bad? Fast software is not always good software, | but slow software is rarely able to rise to greatness. Fast | software gives the user a chance to "meld" with its toolset. That | is, not break flow. When the nerds upon Nerd Hill fight to the | death over Vi and Emacs, it's partly because they have such a | strong affinity for the flow of the application and its | meldiness. They have invested. The Tool Is Good, so they feel. | Not breaking flow is an axiom of great tools. | | To add some hard data to this, the "eight second rule" [1][2] is | the maximum amount of time a user, on average, of a system can | wait for that system to return control back to the user without | the user having some other thought pop into their brain, | interrupting their flow. | | [1] Response Times: 3 Important Limits (2010) | https://www.nngroup.com/articles/response-times-3-important-... | says it's more like ten seconds | | [2] Website Response Times (2010) | https://www.nngroup.com/articles/website-response-times/ | | [3] The Need for Speed, 23 Years Later (2020) | https://www.nngroup.com/articles/the-need-for-speed/ | | Edit: Added reference | | Edit 2: Additional reference | | Edit 3: One more reference | | Edit 4: I think there are still many many opportunities to | improve flow in many processes. Top of my list would be keeping | compile times in the single-digit seconds. | coliveira wrote: | Sadly, the future of software is to become bloated and slow, | for business reasons. Any software that is not bloated has | fewer features, and can be relatively easily duplicated by a | competitor. From a business standpoint, this is bad and a | danger for the company survival, as it can now be replaced by a | competitor that can crank more features into the product. By | adding more features, companies pretty much guarantee that the | software will also be slow, at least for a significant number | of user cases. | kragen wrote: | as long as free software allows users to choose fast software | instead of business software this shouldn't be a problem, but | the web browser disaster is an instructive tale of how this | can go terribly wrong | RedShift1 wrote: | That reference is from 1993... I think people's attention span | has shortened since then... | codetrotter wrote: | > I think people's attention span has shortened since then... | | Unlikely. Rather, what I think has happened is that as the | internet keeps filling up with more and more trash, we have | been forced into being harsher with our willingness to pay | attention to any one specific thing. In other words, it's not | the attention span that has changed. It's the signal to noise | ratio that keeps getting worse and worse. And that's why you | need to demonstrate value to your audience quickly or | otherwise they will move on to the next thing. But don't | blame the audience for that. Blame the producers of the | content. | jt2190 wrote: | What you're calling "attention span" is probably more | accurately called "user expectations", or "user patience" | which, obviously, can easily change. | | On the other hand, there seems to be a measurably consistent | maximum amount of time that one can tolerate a pause without | also breaking out of flow. This might be cultural, but it | seems to be consistent enough that it could be physiological. | Tempest1981 wrote: | Agreed, 140 char replies instead of paragraphs, and rapidly | scrolling TikTok videos. We need that dopamine. | auggierose wrote: | A friend of mine has a very interesting view with regards to | flow: It is a bad thing. You don't want to be in a state of | flow, because you are not thinking hard enough about what you | are doing then, but just following the flow. | kragen wrote: | being in a state of flow as defined by csikszentmihalyi has | nothing to do with 'just following the flow' | | on the contrary, it is when you are in a state of flow that | you are thinking hardest about what you are doing | | it sounds like your friend got confused by a random | coincidence of word meanings | BiteCode_dev wrote: | Being in the flow is not being on automatic. | | It's the absolute opposite, you are totally conscious about | what you are doing, and clear headed about the decisions you | make. | | It does feel effortless, but not in the sense that you are | not doing the thing consciously, rather in the sense that the | thing seems so obvious and easy as you perform in perfect | fluidity. | openfuture wrote: | The way it has been described to me is that if you always | take the same route to work then your cognitive performance | goes down. Staying curious and exploring the different routes | is hard with relatively few waypoints but then you can zoom | into more granular decisions (or out ... to the causes). | randiRando wrote: | That is a very _interesting_ take. I think it's ~wrong but, | like most interesting takes, there's some truth to it. I | think the "truth" here is that, well yeah you're not thinking | about some things, that's literally what I consider flow, | it's not thinking about **how** you're going to do X but it's | higher level than that and focusing on "do x". | | I think it's the difference between thinking/taking the | action "walk to the door and open" (X in the flow state) and | "ok get up, left leg forward, right leg forward, left leg | forward, right leg forward, move arm to door, grab, twist, | pull". Flow is just not thinking about the things that are | not important (a lot of code is just gluing and can be done | in a flow state - still allowing you to stop and think about | the real important places). What your friend is calling out | is that yeah I guess that sometimes you can "automate"/flow | things that actually are important but to be honest I don't | think that happens very often in this context (software, real | use(r)-cases) because their use-case are usually so narrow | and specific (we should design software to allow them to | "flow" the unimportant stuff - click next for the additional | questions - did you notice the button responds on mouse click | up? I hope not, I hope we made that piece "flowable") | marcosdumay wrote: | There is something to be said about flow in mechanical | activities, because on those, yes, you are mostly not | thinking, just following the "rhythm". Safety is normally | one of the first things to get out of your head during | that. | | But programing is nothing like mechanical activities. | wizofaus wrote: | But the act of typing on the code and running/debugging | it should be. Any toolset where you have to wait | excessive amounts of time just to be able edit/ | compile/launch/debug/review results is not really going | to make you think more carefully about your code (an | exception could be made for super long compile times, | which do force you to be more careful with what you | input, but I'm not really convinced it can help you write | better code). | [deleted] | omnicognate wrote: | I don't think I'd go as far as to claim flow is _bad_ , but | there's something to that. | | I'm a long term emacs user and between changing keyboards a | few times and an unfortunate spell of a few years using an | IntelliJ-based IDE with Emacs Keybindings that are far better | than most but inevitably _off_ (most infuriatingly, to | conclude an incremental search you use Ctrl-g, which in | actual emacs jumps you back to where you started the search) | my reflexes are all over the place. I 'm therefore having to | force myself to slow down and be consciously aware of | everything I do. | | I'm finding it a really useful exercise for more than just | the retraining aspect. It does seem to increase my overall | engagement with the task I'm carrying out, beyond just the | operation of the tool. | commandlinefan wrote: | I die a little inside every time I lose an argument over whether | or not we should spend time optimizing our software (I lose that | argument every time I have it). | taeric wrote: | Pro tip, as soon as you are arguing over the code, you've | already lost. | | Most places are so far behind on priority tasks, that to slow | down and discuss/debate the priority of tasks is likely to just | cause more issues. | | It isn't that you are even wrong. You almost certainly aren't. | But nobody will wait for things to get better. If you stall out | on features while prioritizing, you will lose folks. | | Unfortunately, I don't have a legit answer/solution. My view is | it is a lot like keeping a clean kitchen. That is table stakes | and assumed. Such that folks in a kitchen have to create a | somewhat self cleaning flow of things. Similarly, you have to | constantly optimize and clean up the code as you go. Double | down on what you have, and constantly work to improve it. Not | to replace it. | [deleted] | trabant00 wrote: | I have the same obsession for speed and I have given up on | desktop environments years ago, ending up on with i3 and mostly | CLI. These past years I was forced for some periods to work on | macOS, Windows and Gnome. While they clearly work I simply can | not stand them. My muscle memory starts an application then | immediately start typing and to my surprise something else | happens, because the app has not started yet and I still have | focus in another window or in the desktop. Or I chain keyboard | shortcuts and the same unexpected results happen because the | previous command has not completed. It forces me to wait and pay | attention to what the system is doing and this annoys me to no | end. | | I know plenty of people being a lot more productive than me using | slow and not very ergonomic environments. So I understand this is | just an obsession of mine and not necessarily justified. But once | I got used to instant everything it's so hard going back. | keizo wrote: | Awesome! I feel like years ago there was so much focus on speed. | We'd optimize websites for 56k modems. Now day much of the saas | software i started using years ago has become worse with modern | spa frameworks. FreshBooks was a big one. Even Shopify I find | frustrating. | | Last couple years I've been on roam research for note taking. But | takes more than 8 seconds to load for me. So slow I'm diy mission | to make my own solution. Will have to check out nvalt though. | thewebcount wrote: | I had to laugh at this: | | > Similarly, I started using Lightroom around 2007 because it was | so much faster than Apple's Aperture. | | I had the exact opposite experience. I used Aperture because it | was so much faster that Lightroom. I could apply the same changes | to multiple files at once, which at the time, at least, Lightroom | couldn't do. You had to work on each file separately. If you did | a burst on manual, Aperture's workflow was waaaay faster. I'm | still sad Apple end-of-life'd it. | | Other than that I agree with the spirit of the article. I love it | when software is so fast you don't even have to think about the | software. It's so rare these days, especially with web apps. | aetherspawn wrote: | It's my observation that only developers really notice or care | about speed. As long as something is "fast enough" (and the | benchmark here is pretty low), most people won't specifically | choose a fast app over a slow app with more features. | | This means that sometimes we put too much emphasis on speed. But | it is not as important to everyone else as it is to us. A product | with the defining feature "it is fast", usually fails to get | noticed except by other developers. | alkonaut wrote: | Exactly this. I develop really "heavy" desktop apps for a | living and this is my experience too. End users are solving a | problem and that problem might be "producing a quote for a | machine for a customer". If that took them an hour in the | snappy but feature-lacking old software, and a new new software | does it with enormous bloat, frustrating pauses, crashes but in | half the time, then customers will love it and praise it. | | When there is a bug report for a performance issue it's rarely | some minor delay but usually something absurd like a 15 minute | wait due to something accidentally quadratic. | | If you ask customers of course they won't prefer the 2 second | improvement for the function they use hundreds of times per day | because it only saves them a few hundred seconds. They'd rather | have one more feature that saves them 30 minutes every week | instead. And the thing is there is an endless number of such | features even after 200 man years of dev. | | At the same time, as a developer I have almost no understanding | for this mindset. If I was forced to work with slow and | frustrating software all day I'd quit and grow potatoes for a | living instead (and I use visual studio so my treshold for | bloat and frustration is pretty high). | californical wrote: | I understand where you're coming from, but when you have expert | users of your software, they'll be extremely sensitive to | speed. Maybe a casual user won't care, though. | | For example, my company has a team of experts who use our | internal tool for managing company-related tasks. They use this | tool every day as a core part of their job. It's a team of | literally hundreds of people who use this tool. | | If we add a feature which adds a click to some step of | something they're used to doing, we'll never hear the end of | it. Their team celebrates whenever we can add any sort of speed | increase to something they've been using for a while. Adding | shortcuts to common functionality is always a big user request. | | It's obviously not a core part of our job to consider only | performance, we add and change lots of features all the time. | But if we ever neglect performance for too long, it can really | start to weigh their team down. | | It's interesting working so close to the people who use the | software, because they don't hesitate to give feedback like | that, which you'd never get from just an internet software | release. Lots of other software will have these "expert users" | too, but you won't hear the feedback. | properparity wrote: | There's several GB/s of bandwidth from disk to screen these days, | so unless you're processing several GB of data you have no excuse | for anything in your programs to take more than a second. | | It's an insult really, such incredible waste of all the potential | processing power we all have. | Gigachad wrote: | They don't need an excuse. They just spend their time adding | more features instead of speeding things up. And all the users | flock to their tool over yours because the extra feature saved | them hours in their process while your performance optimization | saved seconds but took the same dev time. | commandlinefan wrote: | And your boss will insist that it doesn't matter, if | optimization takes more than a day to do. ___________________________________________________________________ (page generated 2022-11-13 23:00 UTC)