<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: S.M.Shahriar Rahman Maruph</title>
    <description>The latest articles on DEV Community by S.M.Shahriar Rahman Maruph (@smmaruph).</description>
    <link>https://dev.to/smmaruph</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3471302%2Fce951e60-58fe-4be3-927a-6476b1173382.jpeg</url>
      <title>DEV Community: S.M.Shahriar Rahman Maruph</title>
      <link>https://dev.to/smmaruph</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smmaruph"/>
    <language>en</language>
    <item>
      <title>Human–Computer Interaction: A Developer’s Perspective</title>
      <dc:creator>S.M.Shahriar Rahman Maruph</dc:creator>
      <pubDate>Sun, 31 Aug 2025 14:59:02 +0000</pubDate>
      <link>https://dev.to/smmaruph/human-computer-interaction-a-developers-perspective-27m</link>
      <guid>https://dev.to/smmaruph/human-computer-interaction-a-developers-perspective-27m</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1c76t2a08xzb18dqavjw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1c76t2a08xzb18dqavjw.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;When we talk about Human–Computer Interaction (HCI), a lot of folks imagine academic theory. But as developers, we practice HCI every single time we design a UI, build a feature, or debug why users keep dropping off after clicking that one button.&lt;br&gt;
HCI is not just UX designers’ responsibility—it’s ours too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Developers Should Care About HCI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bad UX = Bad Code&lt;br&gt;
If your API returns errors with no feedback in the UI, you’ve just created frustration. Good HCI means surfacing those errors in a way users understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance is Usability&lt;br&gt;
A button that responds instantly vs one that lags for 2 seconds creates completely different user experiences. Same codebase, different user trust.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accessibility Is Not Optional&lt;br&gt;
If you don’t implement ARIA labels, keyboard navigation, or proper contrast, you’re excluding a chunk of your users. That’s a dev problem, not just design.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core HCI Principles (for Developers)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Feedback Loops&lt;br&gt;
Users need to know something happened when they click. That could be:&lt;br&gt;
`&amp;lt;Button &lt;br&gt;
onClick={handleSubmit} &lt;br&gt;
disabled={loading}&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;{loading ? "Saving..." : "Save"}&lt;br&gt;
&lt;br&gt;
`&lt;br&gt;
A loading state is simple but tells the user “Yes, I heard you.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consistency&lt;br&gt;
Don’t reinvent buttons on every page. Use a shared component library. Less mental load = better UX.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Progressive Disclosure&lt;br&gt;
Show what’s necessary, hide the noise. Collapsible sections, tooltips, modals—all are HCI patterns we can implement to avoid overwhelming users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accessibility&lt;br&gt;
&lt;code&gt;&amp;lt;button aria-label="Close dialog"&amp;gt;❌&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;br&gt;
That one attribute might be the difference between usable and unusable for screen reader users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example: A Task List Done Right
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Bad HCI:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click “delete” → nothing happens, item disappears instantly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good HCI:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click “delete” → item fades out, snackbar pops up with “Undo.”&lt;/p&gt;

&lt;p&gt;That’s empathy coded into UI.&lt;/p&gt;

&lt;p&gt;Here’s a React snippet:&lt;br&gt;
`import { useState } from "react";&lt;/p&gt;

&lt;p&gt;function Task({ text, onDelete }) {&lt;br&gt;
  const [removed, setRemoved] = useState(false);&lt;/p&gt;

&lt;p&gt;const handleDelete = () =&amp;gt; {&lt;br&gt;
    setRemoved(true);&lt;br&gt;
    setTimeout(onDelete, 500); // wait for animation&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;span&gt;{text}&lt;/span&gt;&lt;br&gt;
      Delete&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}&lt;br&gt;
`&lt;br&gt;
As devs, we don’t just “make it work.” We shape the human side of computing every time we write code.

&lt;p&gt;HCI is not some academic course—it’s in our PRs, components, and error messages. When we code with empathy, our users don’t just use our apps—they actually enjoy them.&lt;/p&gt;

</description>
      <category>hci</category>
      <category>uidesign</category>
      <category>uxdesign</category>
      <category>interactivedesign</category>
    </item>
  </channel>
</rss>
