TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Sanding UI

1300 点作者 roosgit8 个月前

67 条评论

remus8 个月前
I think being a big user of whatever you&#x27;re building is incredibly useful for finding these kinds of issues. If you&#x27;re a big user as well as a dev then you will often stumble on these little things before a user does, and you are also perfectly placed to fix these issues before users can stumble on them.<p>I suspect this is why small teams with strong ownership can be so effective. If you feel ownership of a thing then you feel users&#x27; pain when they hit these little paper cuts, and it becomes a point of personal pride to fix these things and make the UX as smooth as possible.
评论 #41617464 未加载
xyst8 个月前
I wonder what’s the most polished or “sanded” UI out there?<p>You would think FAANG would have a half decent UI and UX with the amount of money they have. But anybody that has used Amazon.com or AWS, GCP, or even Azure would beg to differ.<p>Personally, off the top of my head. The most polished UI&#x2F;UX has to be “mcmaster.com”. I can find anything I need in what seems like a couple minutes.<p>Compare this to big box stores like “Home Depot”, “Lowe’s”. I can spend 10-15 minutes just trying to find the right size of screw, board, or whatever using their bloated sites. On mobile it’s even worse.
评论 #41616608 未加载
评论 #41614843 未加载
评论 #41614754 未加载
评论 #41614430 未加载
评论 #41614908 未加载
评论 #41614868 未加载
评论 #41614638 未加载
评论 #41618354 未加载
评论 #41614274 未加载
评论 #41614909 未加载
评论 #41615960 未加载
评论 #41615576 未加载
评论 #41614382 未加载
评论 #41614833 未加载
评论 #41615096 未加载
评论 #41629879 未加载
评论 #41617150 未加载
评论 #41615289 未加载
评论 #41618009 未加载
评论 #41630605 未加载
评论 #41614534 未加载
评论 #41636900 未加载
评论 #41621955 未加载
评论 #41616315 未加载
评论 #41614513 未加载
评论 #41615137 未加载
评论 #41638640 未加载
ddtaylor8 个月前
The goto tactic for this specific `&lt;label&gt;` problem is:<p><pre><code> &lt;label&gt; Foo &lt;input&gt; &lt;&#x2F;label&gt;</code></pre>
评论 #41614186 未加载
评论 #41614879 未加载
评论 #41613833 未加载
评论 #41613359 未加载
评论 #41618025 未加载
评论 #41615487 未加载
评论 #41614915 未加载
aetherspawn8 个月前
This is so lost in Agile.<p>Engineers should get the time to “sand” their products, but we just don’t. If QA doesn’t make a ticket for the space between, it’ll never get fixed.<p>The customer probably notices this kind of a thing but it’s a miracle if the customer bothers to report it, and another miracle if it eventually turns into a ticket, and another miracle if someone prioritises it enough to spend time fixing it.<p>[In fact most companies have such opaque issue boards that as a customer I get so frustrated when I find a small issue or bug and have to spend like 50 hours back and forth to prove it’s a bug and actually get a ticket put in the tracker.]
评论 #41614275 未加载
评论 #41615772 未加载
评论 #41616300 未加载
评论 #41617705 未加载
评论 #41614916 未加载
评论 #41615131 未加载
评论 #41619087 未加载
评论 #41619267 未加载
评论 #41618688 未加载
评论 #41614968 未加载
评论 #41615977 未加载
评论 #41616516 未加载
评论 #41617018 未加载
评论 #41619595 未加载
评论 #41615126 未加载
评论 #41623579 未加载
评论 #41620250 未加载
pentagrama8 个月前
Is so important have people with that spark to see and fix those little UX issues, a good analogy used on UX design is papercuts for the user, not critical but it degrades user satisfaction.<p>To the author I will add that that radio button is not following the convension of a dot for the selected state instead of a check. Users may think at first sight that multiple&#x2F;no selection is possible.
评论 #41614078 未加载
评论 #41620445 未加载
评论 #41613702 未加载
aaronkaplan8 个月前
This post demonstrates why I hate UI programming. The number of unpredictable, niggling little things that can go wrong exceeds my patience for dealing with them. I kind of enjoy thinking through the ways something might fail and writing tests to catch them, but aimlessly clicking around to see if anything breaks feels haphazard and annoying.<p>Is UI construction inherently that complex, or have we just not found the right programming model yet? Is it unreasonable to wish that sometimes things would just look and work the way I intended on the first try?
评论 #41632739 未加载
评论 #41638894 未加载
评论 #41629724 未加载
评论 #41637616 未加载
评论 #41630480 未加载
two_handfuls8 个月前
Meanwhile, some other UI uses square boxes for radio buttons.<p>Or have a highlighted button but the enter key doesn&#x27;t activate it.<p>Or there are three different menus all behind a different symbol (ellipsis, hamburger, kebab).<p>There is a lot of variance in quality. Those of you who polish your UI: you are appreciated. Truly.
评论 #41614466 未加载
评论 #41614778 未加载
wmil8 个月前
I don&#x27;t understand why putting the &lt;input&gt; inside the &lt;label&gt; is so unpopular. It completely avoids these problems and you don&#x27;t need to come up with a unique id to use with &#x27;for&#x27;.
评论 #41624852 未加载
评论 #41624976 未加载
评论 #41624863 未加载
评论 #41627314 未加载
dexwiz8 个月前
This is my strategy in bug bashes, and it generates way more tickets than anyone who has a multidimensional Cartesian matrix of test case combinations.<p>It’s good to know those tests cases to start, but random testing quickly outpaces planned testing when trying to find small issues. Also planned testing is often happy path or expected errors. Sanding like this finds edge bugs much faster.
评论 #41613607 未加载
DustinBrett8 个月前
I&#x27;ve been &quot;sanding&quot; my personal website (<a href="https:&#x2F;&#x2F;dustinbrett.com" rel="nofollow">https:&#x2F;&#x2F;dustinbrett.com</a>) for nearly 4 years now, and it feels like it could go on forever. Luckily I enjoy working on it.
评论 #41614536 未加载
评论 #41613844 未加载
评论 #41614020 未加载
评论 #41613806 未加载
评论 #41619479 未加载
评论 #41617187 未加载
评论 #41614016 未加载
评论 #41614263 未加载
评论 #41613774 未加载
评论 #41615342 未加载
评论 #41614504 未加载
评论 #41613855 未加载
评论 #41614307 未加载
bbor8 个月前
<p><pre><code> It’s kind of a QA tactic in a sense </code></pre> It&#x27;s not <i>kind of</i> a QA tactic, this is literally the definition of QA. Specifically, this post is about ad-hoc functional testing. Kinda funny how this kind of testing used to dominate, but in the era of CI&#x2F;CD, dedicated QA departments, and fancy webdriver suites, we&#x27;ve flipped too far the other way, and developers need to be reminded to QA their own stuff!<p>I think we&#x27;ve all learned the hard way that nothing works until it&#x27;s been fixed, no exceptions... no code comes off the dome flawless.
webprofusion8 个月前
This is (potential) an advantage of small teams and individual developers. In more formal teams developers are often handed a UI and that&#x27;s what they have to build, no variation permitted.<p>However, not every developer will craft a great UI just given time, I&#x27;ve seen some truly inspired monstrosities.
efitz8 个月前
Before I started in infosec I was a software tester for a year in the mid-90s. We called this kind of testing “monkey testing” and usually spent some time on it because it turned up lots of bugs, both code bugs and design&#x2F;usability bugs. One time I delayed our product’s launch by a day because I found a crashing bug in the “about” dialog (missing handler for keyboard shortcut).<p>I also usually spent a few minutes in each UI page doing a test I called “spaz clicking” which, just like it sounds, consisted of just randomly clicking as fast as I could and moving the mouse around. Surprising how many bugs you’d find that way.
youssefarizk8 个月前
I&#x27;m always torn whether this is a good use of time or not. If you&#x27;re an early stage startup, it feels like shipping features (that work) quickly is your biggest differentiator, not how nice your UI is.<p>I guess this is true if you&#x27;re doing something in a not so saturated field, but understand that if you&#x27;re in a saturated space, you probably do need the design to be natural os as to set yourself apart.
评论 #41617163 未加载
评论 #41617322 未加载
评论 #41617197 未加载
评论 #41617173 未加载
评论 #41639633 未加载
mdavid6268 个月前
Put the input &gt;into&lt; the label. Then gap doesn’t matter, it’ll work. Of course, don’t allow such mistakes. It’s quality work when such small details are noticed and cared about.
smokel8 个月前
This is a great example of where unit testing does not apply.<p>I see many developers get caught up in rituals, and polishing (and monkey testing for that matter) seem to go against a reproducible approach, and are therefore frowned upon and even ignored. Still, it is a much more powerful technique to get something both working <i>and</i> user friendly.<p>Investing in developers to spot that something is 3 pixels off, or the basic idea that different users have different tastes, can be very productive.
评论 #41615193 未加载
perfunctory8 个月前
Alan Kay was right classifying most software engineering as pop culture. It&#x27;s 2024 and we are still fiddling with spaces around radio buttons, a problem that should have been solved decades ago.
评论 #41618020 未加载
评论 #41639643 未加载
socialentp8 个月前
This is totally what I’ve been doing all day. I call it “digital puttering”.<p>It’s where much of the beauty and craft of something is developed. It requires a craftsperson to not just “call it done and move on”, but instead to be intrinsically motivated to spend time with the creation intimately, rolling it around in your hands&#x2F;brain. Guiding a vine here and there, plucking a leaf or two… until it ‘feels’ right.
d_burfoot8 个月前
Someone should do a YouTube channel where they &quot;sand&quot; popular software products and point out these kinds of subtle UI bugs.
评论 #41617282 未加载
评论 #41617344 未加载
ChrisMarshallNY8 个月前
That&#x27;s pretty much what I do.<p>TestFlight records how many sessions I run, on the release-ready app. I use TestFlight from very early on.<p>It always shows <i>thousands</i> of sessions for me. The next-highest tester is often only tens or hundreds.<p>But that number is dwarfed by how many sessions I run in the simulator.<p>It tends to result in apps that folks like using.<p>The biggest danger is that I get so familiar with the UI, that I don&#x27;t understand its [lack of] discoverability for those unfamiliar with it. I can easily design inscrutable UI.
bhy8 个月前
Shouldn’t these all be smoothed out by UI frameworks, design guidelines and best practices? It doesn’t look like the industry should spend so much productivity on these sanding works?
评论 #41618108 未加载
评论 #41615363 未加载
ivanjermakov8 个月前
I miss this attention to detail in popular websites&#x27; UI. Often even clicking on the label won&#x27;t update the form.
pennomi8 个月前
I think more projects need some form of the One Hundred Papercuts project in Ubuntu, where the goal was to fix little bugs that were annoyances but not critical.
jamamp8 个月前
I think the article has good sentiments about it. Actually using your application a lot helps polish it down a ton.<p>However, wouldn&#x27;t putting the input inside of the label (before the label text) be a better solution than fiddling too much with CSS and flexbox? It&#x27;s more foolproof to ensure clicks within the label activate the input, and eliminates the need for the &quot;for&quot; reference.
评论 #41613232 未加载
评论 #41613257 未加载
评论 #41612849 未加载
dcre8 个月前
It’s an important insight that the state space for UI is very large and that is why intuition is especially useful — it’s rarely feasible to account for all possibilities analytically. This is true to some extent in all areas of software development, but I think for UI dev moreso than most.
tracker18 个月前
On the inputs.. for radio&#x2F;checkbox, I prefer to wrap inside the label element.<p><pre><code> &lt;label&gt; &lt;input ... &#x2F;&gt; &lt;span&gt;Some text...&lt;&#x2F;span&gt; &lt;&#x2F;label&gt; </code></pre> When you do it this way, the label doesn&#x27;t need to be mapped to the id for the input, it&#x27;s implicit. Also, it allows easier adjustments to the characteristics of the checkbox&#x2F;radio input via CSS.<p>You do want an inner &lt;span&gt; if you want to stylize the input control as an inline-block depending on your needs. For general use, with the native controls, the inner span isn&#x27;t necessary, I still prefer it by convention.
thex108 个月前
This attention to detail is what separates the mediocre frontend devs from the rest. How the heck do I improve our hiring process so we get more of you!!!
评论 #41613873 未加载
christophilus8 个月前
I generally wrap my radios inside of the label for this reason. Is there a reason not to do that?
评论 #41613979 未加载
评论 #41618903 未加载
评论 #41613968 未加载
wruza8 个月前
The lesson here is don’t split a control into two parts because developers will screw it up. Who prevented control designers from doing<p><pre><code> &lt;radio&gt;foobar&lt;&#x2F;radio&gt; &lt;radio mark=end&gt;foobar&lt;&#x2F;radio&gt; </code></pre> and allowing a mark pseudoelement to participate in alignment? Or at least forcing everyone to use the input-in-label variant? Nobody.<p>But they split it, and now people without clear understanding how ui should work do it wrong by design and invent Monte Carlo methods to check if it works.<p>And it seems some crappy screenreaders don’t even recognize the proper form of it, adding salt to the cut.
kmoser8 个月前
My beliefs in the same vein:<p><pre><code> - If you think you&#x27;ve found all the bugs, look again. - If you think you&#x27;ve just fixed a bug, test again. - If you think your program is done, you&#x27;re wrong.</code></pre>
评论 #41614850 未加载
razodactyl8 个月前
You know what.... this was an amazing post. There was a lesson, analogy, and a very to-the-point example.
dclowd99018 个月前
Bike shedding kind of: I think the real failure here is not using a “cursor: pointer” directive. Easy to tell what’s clickable when your cursor changes based on what’s clickable.
评论 #41626034 未加载
Sardtok8 个月前
I was on a site the other day, a hotel or flight website. I think it was a review form. There were checkboxes, where the checkbox wasn&#x27;t clickable, only the labels. I was sure the whole thing was frozen, but happened to find some other UI controls were responding. So I tried the labels.<p>I&#x27;ve come across the reverse scenario quite a few times, where the label isn&#x27;t clickable, but this variant was new to me.
评论 #41619842 未加载
dmd8 个月前
A broken pattern I see constantly related to author’s example is large buttons where only the button label - and not the rest of the button - is clickable.
AlienRobot8 个月前
You can also do &lt;label&gt;&lt;input&gt; label&lt;&#x2F;input&gt;
invaliduser8 个月前
Anecdata, but I found the very same issue (the bermuda triangle gap between radioboxes, but also checkboxes, and their labels) in a project a few months ago.<p>It seemed a pretty big deal to me, specially because I always clicked on the gap, and got frustrated and angry at this. So I reported it to the UX team managing the design system, and to the developers implementing the design system, and nobody really cared. Some people even tried to convince me this behaviour was OK (because other design systems worked that way too, or because they were planning to refactor this on the far future so they didn&#x27;t want to spend time on this).<p>I think the industry is now filled with people that just don&#x27;t care, specially on big companies where, if it&#x27;s not in a ticket, and if the ticket is not prioritized as critical, nobody cares. All they care about are metrics (test coverage, line count of a function, whatever). Pretty sad actually.
评论 #41620303 未加载
dewey8 个月前
Something for the sanding list: Navigating between <a href="https:&#x2F;&#x2F;blog.jim-nielsen.com&#x2F;about&#x2F;" rel="nofollow">https:&#x2F;&#x2F;blog.jim-nielsen.com&#x2F;about&#x2F;</a> and <a href="https:&#x2F;&#x2F;blog.jim-nielsen.com" rel="nofollow">https:&#x2F;&#x2F;blog.jim-nielsen.com</a> makes the layout shift a bit in Safari on macOS. The reason is that Safari only shows the scrollbar when it&#x27;s needed but without &quot;reserving&quot; the space.<p>I once spent hours debugging this before I realized what was happening, my confusion coming from the fact that with the inspector open that wasn&#x27;t the case (As there the scrollbar was always visible...).
评论 #41613127 未加载
评论 #41613029 未加载
sdflhasjd8 个月前
This applies to mobile apps a lot. If you&#x27;re not careful (especially when using the iOS&#x2F;Android simulators too much) you can create tiny awkward hit boxes for buttons that are difficult to tap with fingers
babyshake8 个月前
It has also become quite easy when sanding a UI to provide code to an LLM and describe something like a click deadzone and it can usually fix it immediately without you needing to investigate it. The missing piece is really just the glue between the browser, coding environment and LLM. I know a bunch of YC startups are working on this but nothing has really worked well for me. Please recommend anything you are using that does in fact provide this type of glue...
评论 #41623247 未加载
djsamseng8 个月前
&gt; So I click around, using the UI over and over, until I finally cannot give myself any more splinters.<p>I’d take this with a grain of salt (pun intended). There’s a lot of bugs that you cannot reproduce without certain permissions or a particular environment. Let alone the race conditions or user setup. In my experience, most bugs would not have been uncovered using this brute force approach. A few tests using your understanding of the code and critical thinking goes a lot further in my opinion.
评论 #41617802 未加载
defanor8 个月前
Not directly related to the article&#x27;s message (though may count as collaborative &quot;sanding&quot;), but related to its UI: the page has texts centered (margin-left: auto, margin-right: auto, short lines), but paragraphs with embedded images lack that, and the images are aligned to the left. I thought it may be due to JS disabled (if it relies on JS for the layout somehow), but enabling it did not change that. Observed in Firefox 115; it is not the intended layout, is it?
throwaway143568 个月前
i always wrap the labels around the radio buttons and checkboxes. the animation also shows nicely that the label should not be selectable text. if one wants to further polish it a hover highlight might look nice at times.<p>Drawing a box around the radio buttons is perhaps not modern but it may make the form more usable.<p>The title or description of the element should not be the same as the options.<p>The 4 times might belong in two or more groups. This is something to dwell on, make a few mockups then most likely it shouldn&#x27;t be used. If it doesn&#x27;t jump out as amazingly useful restore normality.<p>consider lining up the time so that the :&#x27;s sit in a line. Try put the PM in a collum too. Maybe there should be AM as well.<p>Keep doing useless experiments until you strike gold. It should be really hard to beat default form elements (unless it is iphone)<p>Your truly fantastic 1000 line text input should most likely be deleted.<p>the example animation probably has insufficient line height. The user shouldn&#x27;t have to aim that much.
ehnto8 个月前
I have found the same to be true in game development once all the pieces start coming together. There is no substitute to just using the thing. Maybe you don&#x27;t find bugs&#x2F;splinters, maybe you realise that it just doesn&#x27;t feel right once you&#x27;ve glued the components together.
raminf8 个月前
Built an app when the iPhone first came out. Spent 2 months building the core app and another 3 months working to reduce the number of taps and remove road-bumps in the UI&#x2F;UX flow.<p>Totally paid off.<p>Working on another app now. Sweating the details on the &#x27;watercourse way.&#x27; That first experience is critical.
someoneontenet8 个月前
Sounds like op is manually fuzz testing.
评论 #41618715 未加载
donatj8 个月前
As a fellow old, I&#x27;m inclined to say labels should just wrap the control unless there&#x27;s a very good reason for it not to. Would have completely prevented the issue, wouldn&#x27;t need a global ID nor the &quot;for&quot;. Just generally more semantic and cleaner.
MBS6808 个月前
Anyone discussing theporndude.com? It&#x27;s a simple porn directory site, but I think the interface design shows a very clear information !
Retr0id8 个月前
oof ouch I just got stabbed by a giant checkmarks-in-radio-buttons splinter
jbverschoor8 个月前
Just put the input inside the label. Problem solved, no need for for=
wheresmycraisin8 个月前
I prefer a well tuned smoothing plane or a card scraper, personally.
tikkun8 个月前
Is this Jim Neilsen related to Jakob Neilsen (famous UI guy)?
jwr8 个月前
Meanwhile in Apple Photos, if you meticulously select 17 images and then accidentally click between photos, your selection disappears…
gaborme8 个月前
I really like the sticky face menu on the bottom right. Never seen this before. Gave me some inspiration for one of my sites.
4b11b48 个月前
I like this idea of sanding your UI...<p>Just recently have done quite naturally the same thing... Expand the clickable surface area of a region
评论 #41614070 未加载
wordofx8 个月前
If you’re not putting the input inside the label then you’re doing it wrong.<p>Bootstrap changing this in v4 is no excuse to not do it.
timzaman8 个月前
Decent analogy. I wonder how many techies have ever used a belt sander. Or have one. I think very, very few.
评论 #41614636 未加载
评论 #41614318 未加载
评论 #41624488 未加载
jeffreygoesto8 个月前
The computer always exactly does what you told it to do. You almost never know what exactly you told it.
anybodyhome8 个月前
Hard to believe this hasn&#x27;t been abstracted and solved at the browser level in 2024.
评论 #41620203 未加载
ants_everywhere8 个月前
The algorithm of clicking around trying to break things heavily optimizes for workflows the designer finds natural. The more you do it, the more you reinforce your existing patterns because, you know, brains.<p>This tends to produce experiences that are very smooth for a large group of people but fail really badly for anyone who is slightly different. Most Apple stuff feels like this to me, for example. It&#x27;s like carving a polished stone path where any direction you step off the path is raw and jagged.
psadri8 个月前
Just checked SkyMass&#x27;s radio + labels and they are fine.
quirino8 个月前
On Safari (iPad), type something in the search bar. If you accidentally click outside of your keyboard it will deselect the bar and delete everything you typed.<p>On Spotify the three little dots to do some action to a song have too small of a hitbox. Press even the slightest bit under the button and it will start playing the song. You&#x27;d never click there to play the song.<p>When you consider the scale of these apps, there must be so much combined annoyance.
评论 #41613942 未加载
评论 #41613757 未加载
评论 #41613318 未加载
评论 #41613472 未加载
评论 #41613191 未加载
whalesalad8 个月前
op figured out iteration and incremental improvement
snegrus8 个月前
Sir, this is Ikea.
ImHereToVote8 个月前
Seems like a multimodal LLM unit test could do the sanding.
fitsumbelay8 个月前
this is the way
评论 #41615075 未加载
paxcoder8 个月前
Might be a good idea to record clicks that have no associated action. If you could display all of such clicks visually, the problem might become obvious.
评论 #41618760 未加载
VeejayRampay8 个月前
we need to stop pretending that CSS is awesome though, it&#x27;s been in use for about twenty five years now, keeps reinventing itself and still fails at simple things (as exhibited in this example)