<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Opinion Column on Smashing Magazine — For Web Designers And Developers</title><link>https://www.smashingmagazine.com/category/opinion-column/index.xml</link><description>Recent content in Opinion Column on Smashing Magazine — For Web Designers And Developers</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 14 Oct 2025 04:02:41 +0000</lastBuildDate><item><author>Frederick O’Brien</author><title>The Grayscale Problem</title><link>https://www.smashingmagazine.com/2025/10/the-grayscale-problem/</link><pubDate>Mon, 13 Oct 2025 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/10/the-grayscale-problem/</guid><description>From A/B tests to AI slop, the modern web is bleeding out its colour. Standardized, templated, and overoptimized, it’s starting to feel like a digital Levittown. But it doesn’t have to be.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/10/the-grayscale-problem/" />
              <title>The Grayscale Problem</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Grayscale Problem</h1>
                  
                    
                    <address>Frederick O’Brien</address>
                  
                  <time datetime="2025-10-13T10:00:00&#43;00:00" class="op-published">2025-10-13T10:00:00+00:00</time>
                  <time datetime="2025-10-13T10:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Last year, a study found that <a href="https://www.forbes.com/sites/kbrauer/2024/07/16/where-have-all-the-colorful-cars-gone-study-shows-them-vanishing/">cars are steadily getting less colourful</a>. In the US, around 80% of cars are now black, white, gray, or silver, up from 60% in 2004. This trend has been attributed to cost savings and consumer preferences. Whatever the reasons, the result is hard to deny: a big part of daily life isn’t as colourful as it used to be.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="420"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png"
			
			sizes="100vw"
			alt=""
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/1-car-color-market-share.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The colourfulness of mass consumer products is hardly the bellwether for how vibrant life is as a whole, but the study captures a trend a lot of us recognise &mdash; offline and on. From colour to design to public discourse, a lot of life is getting less varied, more grayscale.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="580"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png"
			
			sizes="100vw"
			alt=""
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/2-grayscale-car-models.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The web is caught in the same current. There is plenty right with it &mdash; it retains plenty of its founding principles &mdash; but its state is not healthy. From AI slop to shoddy service providers to enshittification, the digital world faces its own <strong>grayscale problem</strong>.</p>

<p>This bears talking about. One of life’s great fallacies is that things get better over time on their own. They can, but it’s certainly not a given. I don’t think the moral arc of the universe does not bend towards justice, not on its own; I think it bends wherever it is dragged, kicking and screaming, by those with the will and the means to do so.</p>

<p>Much of the modern web, and the forces of optimisation and standardisation that drive it, bear an uncanny resemblance to the trend of car colours. Processes like market research and A/B testing &mdash; <a href="https://hbr.org/2017/06/a-refresher-on-ab-testing">the process by which two options are compared to see which ‘performs’ better on clickthrough, engagement, etc.</a> &mdash; have their value, but they don’t lend themselves to particularly stimulating design choices.</p>

<p>The spirit of free expression that made the formative years of the internet so exciting &mdash; think GeoCities, personal blogging, and so on &mdash; is on the slide.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="416"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png"
			
			sizes="100vw"
			alt="Screenshot from the Geocities Gallery"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Image source: <a href='https://geocities.restorativland.org/'>The Geocities Gallery</a>. (<a href='https://files.smashing.media/articles/the-grayscale-problem/3-geocities.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The ongoing transition to a more decentralised, privacy-aware <a href="https://aws.amazon.com/what-is/web3/">Web3</a> holds some promise. Two-thirds of the world’s population now has online access &mdash; <a href="https://www.weforum.org/stories/2024/01/digital-divide-internet-access-online-fwa/">though that still leaves plenty of work to do</a> &mdash; with a wealth of platforms allowing billions of people to connect. The dream of a digital world that is open, connected, and flat endures, but is tainted.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><p>Meet <a data-instant href="/the-smashing-newsletter/"><strong>Smashing Email Newsletter</strong></a> with useful tips on front-end, design &amp; UX. Subscribe and <strong>get “Smart Interface Design Checklists”</strong> &mdash; a <strong>free PDF deck</strong> with 150+ questions to ask yourself when designing and building almost <em>anything</em>.</p><div><section class="nlbf"><form action="//smashingmagazine.us1.list-manage.com/subscribe/post?u=16b832d9ad4b28edf261f34df&amp;id=a1666656e0" method="post"><div class="nlbwrapper"><label for="mce-EMAIL-hp" class="sr-only">Your (smashing) email</label><div class="nlbgroup"><input type="email" name="EMAIL" class="nlbf-email" id="mce-EMAIL-hp" placeholder="Your email">
<input type="submit" value="Meow!" name="subscribe" class="nlbf-button"></div></div></form><style>.c-garfield-the-cat .nlbwrapper{margin-bottom: 0;}.nlbf{display:flex;padding-bottom:.25em;padding-top:.5em;text-align:center;letter-spacing:-.5px;color:#fff;font-size:1.15em}.nlbgroup:hover{box-shadow:0 1px 7px -5px rgba(50,50,93,.25),0 3px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025)}.nlbf .nlbf-button,.nlbf .nlbf-email{flex-grow:1;flex-shrink:0;width:auto;margin:0;padding:.75em 1em;border:0;border-radius:11px;background:#fff;font-size:1em;box-shadow:none}.promo-box .nlbf-button:focus,.promo-box input.nlbf-email:active,.promo-box input.nlbf-email:focus{box-shadow:none}.nlbf-button:-ms-input-placeholder,.nlbf-email:-ms-input-placeholder{color:#777;font-style:italic}.nlbf-button::-webkit-input-placeholder,.nlbf-email::-webkit-input-placeholder{color:#777;font-style:italic}.nlbf-button:-ms-input-placeholder,.nlbf-button::-moz-placeholder,.nlbf-button::placeholder,.nlbf-email:-ms-input-placeholder,.nlbf-email::-moz-placeholder,.nlbf-email::placeholder{color:#777;font-style:italic}.nlbf .nlbf-button{transition:all .2s ease-in-out;color:#fff;background-color:#0168b8;font-weight:700;box-shadow:0 1px 1px rgba(0,0,0,.3);width:100%;border:0;border-left:1px solid #ddd;flex:2;border-top-left-radius:0;border-bottom-left-radius:0}.nlbf .nlbf-email{border-top-right-radius:0;border-bottom-right-radius:0;width:100%;flex:4;min-width:150px}@media all and (max-width:650px){.nlbf .nlbgroup{flex-wrap:wrap;box-shadow:none}.nlbf .nlbf-button,.nlbf .nlbf-email{border-radius:11px;border-left:none}.nlbf .nlbf-email{box-shadow:0 13px 27px -5px rgba(50,50,93,.25),0 8px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025);min-width:100%}.nlbf .nlbf-button{margin-top:1em;box-shadow:0 1px 1px rgba(0,0,0,.5)}}.nlbf .nlbf-button:active,.nlbf .nlbf-button:focus,.nlbf .nlbf-button:hover{cursor:pointer;color:#fff;background-color:#0168b8;border-color:#dadada;box-shadow:0 1px 1px rgba(0,0,0,.3)}.nlbf .nlbf-button:active,.nlbf .nlbf-button:focus{outline:0!important;text-shadow:1px 1px 1px rgba(0,0,0,.3);box-shadow:inset 0 3px 3px rgba(0,0,0,.3)}.nlbgroup{display:flex;box-shadow:0 13px 27px -5px rgba(50,50,93,.25),0 8px 16px -8px rgba(0,0,0,.3),0 -6px 16px -6px rgba(0,0,0,.025);border-radius:11px;transition:box-shadow .2s ease-in-out}.nlbwrapper{display:flex;flex-direction:column;justify-content:center}.nlbf form{width:100%}.nlbf .nlbgroup{margin:0}.nlbcaption{font-size:.9em;line-height:1.5em;color:#fff;border-radius:11px;padding:.5em 1em;display:inline-block;background-color:#0067b859;text-shadow:1px 1px 1px rgba(0,0,0,.3)}.wf-loaded-stage2 .nlbf .nlbf-button{font-family:Mija}.mts{margin-top: 5px !important;}.mbn{margin-bottom: 0 !important;}</style></section><p class="mts mbn"><small class="promo-box__footer mtm block grey"><em>Once a week. Useful tips on <a href="https://www.smashingmagazine.com/the-smashing-newsletter/">front-end &amp; UX</a>. Trusted by 207.000 friendly folks.</em></small></p></div></p>
</div>
</div>
<div class="feature-panel-right-col">
<div class="feature-panel-image">
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="/images/smashing-cat/cat-firechat.svg"
    alt="Feature Panel"
    width="310"
    height="400"
/>

</div>

<p></div>
</aside>
</div></p>

<h2 id="monopolies">Monopolies</h2>

<p>One of the main sources of concern for me is that although more people are online than ever, they are concentrating on fewer and fewer sites. A study <a href="https://www.sciencealert.com/we-re-going-to-fewer-and-fewer-websites-and-that-could-be-a-problem">published in 2021</a> found that <strong>activity is concentrated in a handful of websites</strong>. Think Google, Amazon, Facebook, Instagram, and, more recently, ChatGPT:</p>

<blockquote>“So, while there is still growth in the functions, features, and applications offered on the web, the number of entities providing these functions is shrinking. [...] The authority, influence, and visibility of the top 1,000 global websites (as measured by network centrality or PageRank) is growing every month, at the expense of all other sites.”</blockquote>

<p>Monopolies by nature <strong>reduce variance</strong>, both through their domination of the market and (understandably in fairness) internal preferences for consistency. And, let’s be frank, they have a vested interest in crushing any potential upstarts.</p>

<ul>
<li>“<a href="https://www.smashingmagazine.com/2020/05/readability-algorithms-tools-targets/">Readability Algorithms Should Be Tools, Not Targets</a>”</li>
<li>“<a href="https://www.smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/">Towards An Ad-Free Web: Diversifying The Online Economy</a>”</li>
</ul>

<p>Dominant websites often fall victim to what I like to call <strong>Internet Explorer Syndrome</strong>, where their dominance breeds a certain amount of complacency. Why improve your <a href="https://www.smashingmagazine.com/2025/05/what-zen-art-motorcycle-maintenance-teach-web-design/">quality</a> when you’re sitting on 90% market share? No wonder <a href="https://www.standard.co.uk/news/tech/google-search-worse-quality-spam-study-b1133559.html">the likes of Google are getting worse</a>.</p>

<p>The most immediate sign of this is obviously how sites are designed and how they look. A lot of the big players look an awful lot like each other. Even personal websites are built atop third-party website builders. Millions of people wind up using the same handful of templates, and that’s if they have their own website at all. On social media, we are little more than a profile picture and a pithy tagline. The rest is boilerplate.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="728"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png"
			
			sizes="100vw"
			alt="Gratscale minimalist layout example"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/4-grayscale-minimalist-layout.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Should there be sleek, minimalist, ‘grayscale’ design systems and websites? Absolutely. But there should be colourful, kooky ones too, and if anything, they’re fading away. Do we really want to spend our online lives in the digital equivalent of Levittowns? Even logos are contriving to be less eye-catching. It feels like a matter of time before every major logo is a circle in a pastel colour.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="508"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png"
			
			sizes="100vw"
			alt=""
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/5-levittown.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The arrival of Artificial Intelligence into our everyday lives (and a decent chunk of the digital services we use) has put all of this into overdrive. Amalgamating &mdash; and hallucinating from &mdash; content that was already trending towards a perfect average, it is grayscale in its purest form.</p>

<p>Mix all the colours together, and what do you get? A muddy gray gloop.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="424"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png"
			
			sizes="100vw"
			alt="Colors mixed together into gray lopp"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/6-mix-colors-muddy-gray-gloop.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>I’m not railing against best practice. A lot of conventions have become the standard for good reason. One could just as easily shake their fist at the sky and wonder why all newspapers look the same, or all books. I hope the difference here is clear, though.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20web%20is%20a%20flexible%20enough%20domain%20that%20I%20think%20it%20belongs%20in%20the%20realm%20of%20architecture.%20A%20city%20where%20all%20buildings%20look%20alike%20has%20a%20soul-crushing%20quality%20about%20it.%20The%20same%20is%20true,%20I%20think,%20of%20the%20web.%0a&url=https://smashingmagazine.com%2f2025%2f10%2fthe-grayscale-problem%2f">
      
The web is a flexible enough domain that I think it belongs in the realm of architecture. A city where all buildings look alike has a soul-crushing quality about it. The same is true, I think, of the web.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>In the Oscar Wilde play <em><a href="https://www.gutenberg.org/files/790/790-h/790-h.htm">Lady Windermere’s Fan</a></em>, a character quips that a cynic <em>“knows the price of everything and the value of nothing.”</em> In fairness, another quips back that a sentimentalist <em>“sees an absurd value in everything, and doesn’t know the market price of any single thing.”</em></p>

<p>The sweet spot is somewhere in between. Structure goes a long way, but life needs a bit of variety too.</p>

<p>So, how do we go about bringing that variety? We probably shouldn’t hold our breath on big players to lead the way. They have the most to lose, after all. Why risk being colourful or dynamic if it impacts the bottom line?</p>

<p>We, the citizens of the web, have more power than we realise. This is the web, remember, a place where if you can imagine it, odds are you can make it. And at zero cost. No materials to buy and ship, no shareholders to appease. A place as flexible &mdash; and limitless &mdash; as the web has no business being boring.</p>

<p>There are plenty of ways, big and small, of keeping this place colourful. Whether our digital footprints are on third-party websites or ones we build ourselves, we needn’t toe the line.</p>

<p><strong>Colour</strong> seems an appropriate place to start. When given the choice, try something audacious rather than safe. The worst that can happen is that it doesn’t work. It’s not like the sunk cost of painting a room; if you don’t like the palette, you simply change the hex codes. The same is true of <a href="https://www.smashingmagazine.com/2023/03/free-fonts-interface-designers/">fonts</a>, <a href="https://www.smashingmagazine.com/2021/08/open-source-icons/">icons</a>, and other building blocks of the web.</p>

<p>As an example, a couple of friends and I listen to and review albums occasionally as a hobby. On the website, the palette of each review page reflects the album artwork:</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="800"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png"
			
			sizes="100vw"
			alt=""
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/the-grayscale-problem/8-audioxide-screenshot.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>I couldn’t tell you if reviews ‘perform’ better or worse than if they had a grayscale palette, because I don’t care. I think it’s a lot nicer to look at. And for those wondering, yes, I have tried to make every page meet <a href="https://www.w3.org/WAI/WCAG2AA-Conformance">AA Web Accessibility standards</a>. Vibrant and accessible aren’t mutually exclusive.</p>

<p>Another great way of bringing vibrancy to the web is a <strong>degree of randomisation</strong>. Bruno Simon of <a href="https://threejs-journey.com/">Three Journey</a> and <a href="https://bruno-simon.com/">awesome portfolio</a> fame weaves random generation into a lot of his projects, and the results are gorgeous. What’s more, they feel familiar, natural, because life is full of wildcards.</p>

<figure><a href="https://files.smashing.media/articles/the-grayscale-problem/7-3d-model.gif"><img src="https://files.smashing.media/articles/the-grayscale-problem/7-3d-model.gif" width="800" height="520" alt="3D model" /></a></figure>

<p>This needn’t be in fancy 3D models. You could lightly rotate images to create a more informal, photo album mood, or chuck in the occasional random link in a list of recommended articles, just to shake things up.</p>

<p>In a lot of ways, it boils down to an attitude of just trying stuff out. Make your own font, give the site a sepia filter, and add that easter egg you keep thinking about. Just because someone, somewhere has already done it doesn’t mean you can’t do it your own way. And who knows, maybe your way stumbles onto someplace wholly new.</p>

<p>I’m wary of being too prescriptive. I don’t have the keys to a colourful web. No one person does. A vibrant community is the sum total of its people. What keeps things interesting is individuals trying wacky ideas and putting them out there. Expression for expression’s sake. Experimentation for experimentation’s sake. Tinkering for tinkering’s sake.</p>

<p>As users, there’s also plenty of room to be adventurous and try out <a href="https://openalternative.co/">open source alternatives to the software monopolies</a> that shape so much of today’s Web. Being active in the communities that shape those tools helps to sustain <strong>a more open, collaborative digital world</strong>.</p>

<p>Although there are lessons to be taken from it, we won’t get a more colourful web by idealising the past or pining to get back to the ‘90s. Nor is there any point in resisting new technologies. AI is here; the choice is whether we use it or it uses us. We must have the courage to carry forward what still holds true, drop what doesn’t, and explore new ideas with a spirit of play.</p>

<div class="partners__lead-place"></div>

<p>Here are a few more <em>Smashing</em> articles in that spirit:</p>

<ul>
<li>“<a href="https://www.smashingmagazine.com/2020/11/playfulness-code-supercharge-fun-learning/">Playfulness In Code: Supercharge Your Learning By Having Fun</a>” by Jhey Tompkins</li>
<li>“<a href="https://www.smashingmagazine.com/2025/08/psychology-color-ux-design-digital-products/">The Psychology Of Color In UX And Digital Products</a>” by Rodolpho Henrique</li>
<li>“<a href="https://www.smashingmagazine.com/2020/12/creativity-technology/">Creativity In A World Of Technology: Does It Exist?</a>” By Maggie Mackenzie</li>
<li>“<a href="https://www.smashingmagazine.com/2025/05/what-zen-art-motorcycle-maintenance-teach-web-design/">What Zen And The Art Of Motorcycle Maintenance Can Teach Us About Web Design</a>”</li>
<li>“<a href="https://www.smashingmagazine.com/2025/01/ode-to-side-project-time/">An Ode To Side Project Time</a>”</li>
</ul>

<p>I do think there’s a broader discussion to be had about the extent to which A/B tests, bottom lines, and focus groups seem to dictate much of how the modern web looks and feels. With sites being squeezed tighter and tighter by dwindling advertising revenues, and <a href="https://www.forbes.com/sites/torconstantino/2025/04/14/the-60-problem---how-ai-search-is-draining-your-traffic/">AI answers muscling in on search traffic</a>, the corporate entities behind larger websites can’t justify doing anything other than what is safe and proven, for fear of shrinking their slice of the pie.</p>

<p>Lest we forget, though, most of the web isn’t beholden to those types of pressure. From pet projects to wikis to forums to community news outlets to all manner of other things, there are countless reasons for websites to exist, and they needn’t take design cues from the handful of sites slugging it out at the top.</p>

<p>Connected with this is the dire need for <a href="https://tcg.uis.unesco.org/wp-content/uploads/sites/4/2021/08/Metadata-4.4.2.pdf">digital literacy</a> (PDF) &mdash; ‘the confident and critical use of a full range of digital technologies for information, communication and basic problem-solving in all aspects of life.’ For as long as using third-party platforms is a necessity rather than a choice, the needle’s only going to move so much.</p>

<p>There’s a reason why <a href="https://www.bbc.co.uk/news/technology-67105983">Minecraft is the world’s best-selling game</a>. People are creative. When given the tools &mdash; and the opportunity &mdash; that creativity will manifest in weird and wonderful ways. That game is a lot of things, but gray ain’t one of them.</p>

<p>The web has all of that flexibility and more. It is a <strong>manifestation of imagination</strong>. Imagination trends towards colour, not grayness. It doesn’t always feel like it, but where the internet goes is decided by its citizens. The internet is ours. If we want to, we can make it technicolor.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Oleksii Tkachenko</author><title>Why Non-Native Content Designers Improve Global UX</title><link>https://www.smashingmagazine.com/2025/07/why-non-native-content-designers-improve-global-ux/</link><pubDate>Fri, 18 Jul 2025 13:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/07/why-non-native-content-designers-improve-global-ux/</guid><description>Ensuring your product communicates clearly to a global audience is not just about localisation. Even for products that have a proper localisation process, English often remains the default language for UI and communications. This article focuses on how you can make English content clear and inclusive for non-native users. Oleksii offers a practical guide based on his own experience as a non-native English-speaking content designer, defining the user experience for international companies.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/07/why-non-native-content-designers-improve-global-ux/" />
              <title>Why Non-Native Content Designers Improve Global UX</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Why Non-Native Content Designers Improve Global UX</h1>
                  
                    
                    <address>Oleksii Tkachenko</address>
                  
                  <time datetime="2025-07-18T13:00:00&#43;00:00" class="op-published">2025-07-18T13:00:00+00:00</time>
                  <time datetime="2025-07-18T13:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>A few years ago, I was in a design review at a fintech company, polishing the expense management flows. It was a routine session where we reviewed the logic behind content and design decisions.</p>

<p>While looking over the statuses for submitted expenses, I noticed a label saying ‘In approval’. I paused, re-read it again, and asked myself:</p>

<blockquote>“Where is it? Are the results in? Where can I find them? Are they sending me to the app section called “Approval”?”</blockquote>

<p>This tiny label made me question what was happening with <strong>my money</strong>, and this feeling of uncertainty was quite anxiety-inducing.</p>

<p>My team, all native English speakers, did not flinch, even for a second, and moved forward to discuss other parts of the flow. I was the only non-native speaker in the room, and while the label made perfect sense to them, it still felt off to me.</p>

<p>After a quick discussion, we landed on ‘Pending approval’ &mdash; the simplest and widely recognised option internationally. More importantly, this wording makes it clear that there’s an approval process, and it hasn’t taken place yet. There’s no need to go anywhere to do it.</p>

<p>Some might call it nitpicking, but that was exactly the moment I realised how invisible &mdash; yet powerful &mdash; the non-native speaker’s perspective can be.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aIn%20a%20reality%20where%20user%20testing%20budgets%20aren%e2%80%99t%20unlimited,%20designing%20with%20familiar%20language%20patterns%20from%20the%20start%20helps%20you%20prevent%20costly%20confusions%20in%20the%20user%20journey.%0a&url=https://smashingmagazine.com%2f2025%2f07%2fwhy-non-native-content-designers-improve-global-ux%2f">
      
In a reality where user testing budgets aren’t unlimited, designing with familiar language patterns from the start helps you prevent costly confusions in the user journey.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>Those same confusions often lead to:</p>

<ul>
<li>Higher rate of customer service queries,</li>
<li>Lower adoption rates,</li>
<li>Higher churn,</li>
<li>Distrust and confusion.</li>
</ul>

<h2 id="as-a-native-speaker-you-don-t-see-the-whole-picture">As A Native Speaker, You Don’t See The Whole Picture</h2>

<p>Global products are often designed with English as their primary language. This seems logical, but here’s the catch:</p>

<blockquote><a href="https://americantesol.com/tesol-report.html">Roughly 75% of English-speaking users are not native speakers</a>, which means 3 out of every 4 users.</blockquote>

<p>Native speakers often write on instinct, which works much like autopilot. This can often lead to overconfidence in content that, in reality, is too culturally specific, vague, or complex. And that content may not be understood by 3 in 4 people who read it.</p>

<p>If your team shares the same native language, <strong>content clarity remains assumed by default rather than proven through pressure testing</strong>.</p>

<p>The price for that is the <strong>accessibility</strong> of your product. A <a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC7757700/#s016">study by National Library of Medicine</a> found that US adults who had proficiency in English but did not use it as their primary language were significantly less likely to be insured, even when provided with the same level of service as everyone else.</p>

<p>In other words, they did not finish the process of securing a healthcare provider &mdash; a process that’s vital to their well-being, in part, due to unclear or inaccessible communication.</p>

<p>If people abandon the process of getting something as vital as healthcare insurance, it’s easy to imagine them dropping out during checkout, account setup, or app onboarding.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="470"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png"
			
			sizes="100vw"
			alt="Clarity zone visualised"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Leaving a large portion of your audience outside of the “clarity zone” limits your global growth, and the issue will only expand over time. (<a href='https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/1-clarity-zone-visualised.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Non-native content designers, by contrast, do not write on autopilot. Because of their experience learning English, they’re much more likely to tune into nuances, complexity, and cultural exclusions that natives often overlook. That’s the key to designing for everyone rather than 1 in 4.</p>

<h2 id="non-native-content-designers-make-your-ux-global">Non-native Content Designers Make Your UX Global</h2>

<h3 id="spotting-the-clutter-and-cognitive-load-issues">Spotting The Clutter And Cognitive Load Issues</h3>

<p>When a non-native speaker has to pause, re-read something, or question the meaning of what’s written, they quickly identify it as a friction point in the user experience.</p>

<p><strong>Why it’s important</strong>: Every extra second users have to spend understanding your content makes them more likely to abandon the task. This is a high price that companies pay for not prioritising clarity.</p>

<p>Cognitive load is not just about complex sentences but also about the speed. There’s plenty of research <a href="https://www.researchgate.net/publication/368711420_Do_Non-native_Speakers_Read_Differently_Predicting_Reading_Times_with_Surprisal_and_Language_Models_of_Native_and_Non-native_Eye_Tracking_Data">confirming that non-native speakers read more slowly than native speakers</a>. This is especially important when you work on the visibility of system status &mdash; time-sensitive content that the user needs to scan and understand quickly.</p>

<p>One example you can experience firsthand is an ATM displaying a number of updates and instructions. Even when they’re quite similar, it still overwhelms you when you realise that you missed one, not being able to finish reading.</p>

<p>This kind of rapid-fire updates can increase frustration and the chances of errors.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="470"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png"
			
			sizes="100vw"
			alt="ATM with 6 variations of content"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      ATM giving 6 variations of content within less than 8 seconds. (<a href='https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/2-atm-flashing-messages.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h3 id="always-advocating-for-plain-english">Always Advocating For Plain English</h3>

<p>They tend to review and rewrite things more often to find the easiest way to communicate the message. What a native speaker may consider clear enough might be dense or difficult for a non-native to understand.</p>

<p><strong>Why it’s important</strong>: Simple content better scales across countries, languages, and cultures.</p>

<h3 id="catching-culture-specific-assumptions-and-references">Catching Culture-specific Assumptions And References</h3>

<p>When things do not make sense, non-native speakers challenge them. Besides the idioms and other obvious traps, native speakers tend to fall into considering their life experience to be shared with most English-speaking users.</p>

<p>Cultural differences might even exist within one globally shared language. Have you tried saying ‘soccer’ instead of ‘football’ in a conversation with someone from the UK? These details may not only cause confusion but also upset people.</p>

<p><strong>Why it’s important</strong>: Making sure your product is free from culture-specific references makes your product more inclusive and safeguards you from alienating your users.</p>

<h3 id="they-have-another-level-of-empathy-for-the-global-audience">They Have Another Level Of Empathy For The Global Audience</h3>

<p>Being a non-native speaker themselves, they have experience with products that do not speak clearly to them. They’ve been in the global user’s shoes and know how it impacts the experience.</p>

<p><strong>Why it’s important</strong>: Empathy is a key driver towards design decisions that take into account the diverse cultural and linguistic background of the users.</p>

<h2 id="how-non-native-content-design-can-shape-your-approach-to-design">How Non-native Content Design Can Shape Your Approach To Design</h2>

<p>Your product won’t become better overnight simply because you read an inspiring article telling you that you need to have a more diverse team. I get it. So here are concrete changes that you can make in your design workflows and hiring routines to make sure your content is accessible globally.</p>

<h3 id="run-copy-reviews-with-non-native-readers">Run Copy Reviews With Non-native Readers</h3>

<p>When you launch a new feature or product, it’s a standard practice to run QA sessions to review visuals and interactions. When your team does not include the non-native perspective, the content is usually overlooked and considered fine as long as it’s grammatically correct.</p>

<p>I know, having a dedicated localisation team to pressure-test your content for clarity is a privilege, but you can always start small.</p>

<p>At one of my previous companies, we established a <strong>‘clarity heroes council’</strong> &mdash; a small team of non-native English speakers with diverse cultural and linguistic backgrounds. During our reviews, they often asked questions that surprised us and highlighted where clarity was missing:</p>

<ul>
<li>What’s a “grace period”?</li>
<li>What will happen when I tap “settle the payment”?</li>
</ul>

<p>These questions flag potential problems and help you save both money and reputation by avoiding thousands of customer service tickets.</p>

<h3 id="review-existing-flows-for-clarity">Review Existing Flows For Clarity</h3>

<p>Even if your product does not have major releases regularly, it accumulates small changes over time. They’re often plugged in as fixes or small improvements, and can be easily overlooked from a QA perspective.</p>

<p>A good start will be a regular look at the flows that are critical to your business metrics: onboarding, checkout, and so on. Fence off some time for your team quarterly or even annually, depending on your product size, to come together and check whether your key content pieces serve the global audience well.</p>

<p>Usually, a proper review is conducted by a team: a product designer, a content designer, an engineer, a product manager, and a researcher. The idea is to go over the flows, research insights, and customer feedback together. For that, having a non-native speaker on the audit task force will be essential.</p>

<p>If you’ve never done an audit before, try <a href="https://www.figma.com/community/file/1489250366825103388">this template</a> as it covers everything you need to start.</p>

<h3 id="make-sure-your-content-guidelines-are-global-ready">Make Sure Your Content Guidelines Are Global-ready</h3>

<p>If you haven’t done it already, make sure your voice &amp; tone documentation includes details about the level of English your company is catering to.</p>

<p>This might mean working with the brand team to find ways to make sure your brand voice comes through to all users without sacrificing clarity and comprehension. Use examples and showcase the difference between sounding smart or playful vs sounding clear.</p>

<p>Leaning too much towards brand personality is where cultural differences usually shine through. As a user, you might’ve seen it many times. Here’s a banking app that wanted to seem relaxed and relatable by introducing ‘Dang it’ as the only call-to-action on the screen.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="449"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png"
			
			sizes="100vw"
			alt="Confusing ctas"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Sometimes even bank apps accidentally sacrifice clarity to showcase brand personality. (<a href='https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/3-confusing-ctas.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>However, users with different linguistic backgrounds might not be familiar with this expression. Worse, they might see it as an action, leaving them unsure of what will actually happen after tapping it.</p>

<p>Considering how much content is generated with AI today, your guidelines have to account for both tone and clarity. This way, when you feed these requirements to the AI, you’ll see the output that will not just be grammatically correct but also easy to understand.</p>

<h3 id="incorporate-global-english-heuristics-into-your-definition-of-success">Incorporate Global English Heuristics Into Your Definition Of Success</h3>

<p>Basic heuristic principles are often documented as a part of overarching guidelines to help UX teams do a better job. The <a href="https://www.nngroup.com/articles/ten-usability-heuristics/">Nielsen Norman Group usability heuristics</a> cover the essential ones, but it doesn’t mean you shouldn’t introduce your own. To complement this list, add this principle:</p>

<p>Aim for global understanding: Content and design should communicate clearly to any user regardless of cultural or language background.</p>

<p>You can suggest criteria to ensure it’s clear how to evaluate this:</p>

<ul>
<li><strong>Action transparency</strong>: Is it clear what happens next when the user proceeds to the next screen or page?</li>
<li><strong>Minimal ambiguity</strong>: Is the content open to multiple interpretations?</li>
<li><strong>International clarity</strong>: Does this content work in a non-Western context?</li>
</ul>

<h3 id="bring-a-non-native-perspective-to-your-research-too">Bring A Non-native Perspective To Your Research, Too</h3>

<p>This one is often overlooked, but <strong>collaboration between the research team and non-native speaking writers</strong> is super helpful. If your research involves a survey or interview, they can help you double-check whether there is complex or ambiguous language used in the questions unintentionally.</p>

<p><a href="https://dl.acm.org/doi/abs/10.5555/2835531.2835535?utm_source=chatgpt.com">In a study by the Journal of Usability Studies</a>, 37% of non-native speakers did not manage to answer the question that included a word they did not recognise or could not recall the meaning of. The question was whether they found the system to be “cumbersome to use”, and the consequences of getting unreliable data and measurements on this would have a negative impact on the UX of your product.</p>

<p><a href="https://uxpajournal.org/cultural-linguistic-usability-testing/">Another study by UX Journal of User Experience</a> highlights how important clarity is in surveys. While most people in their study interpreted the question <em>“How do you feel about … ?”</em> as <em>“What’s your opinion on …?”</em>, some took it literally and proceeded to describe their emotions instead.</p>

<p>This means that even familiar terms can be misinterpreted. To get precise research results, it’s worth defining key terms and concepts to ensure common understanding with participants.</p>

<h3 id="globalise-your-glossary">Globalise Your Glossary</h3>

<p>At Klarna, we often ran into a challenge of inconsistent translation for key terms. A well-defined English term could end up having from three to five different versions in Italian or German. Sometimes, even the same features or app sections could be referred to differently depending on the market &mdash; this led to user confusion.</p>

<p>To address this, we introduced a shared term base &mdash; a controlled vocabulary that included:</p>

<ul>
<li>English term,</li>
<li>Definition,</li>
<li>Approved translations for all markets,</li>
<li>Approved and forbidden synonyms.</li>
</ul>

<p>Importantly, the term selection was dictated by user research, not by assumption or personal preferences of the team.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="265"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg"
			
			sizes="100vw"
			alt="Controlled vocabulary for product content"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      This Notion template shows how a controlled vocabulary can look. (<a href='https://files.smashing.media/articles/why-non-native-content-designers-improve-global-ux/4-controlled-vocabulary-example.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>If you’re unsure where to begin, <a href="https://www.notion.com/templates/term-base-controlled-vocabulary-for-product-content">use this product content vocabulary template for Notion</a>. Duplicate it for free and start adding your terms.</p>

<p>We used a similar setup. Our new glossary was shared internally across teams, from product to customer service. Results? Reducing the support tickets related to unclear language used in UI (or directions in the user journey) by 18%. This included tasks like finding instructions on how to make a payment (especially with the least popular payment methods like bank transfer), where the late fee details are located, or whether it’s possible to postpone the payment. And yes, all of these features were available, and the team believed they were quite easy to find.</p>

<p>A glossary like this can live as an add-on to your guidelines. This way, you will be able to quickly get up to speed new joiners, keep product copy ready for localisation, and defend your decisions with stakeholders.</p>

<h3 id="approach-your-team-growth-with-an-open-mind">Approach Your Team Growth With An Open Mind</h3>

<p>‘Looking for a native speaker’ still remains a part of the job listing for UX Writers and content designers. There’s no point in assuming it’s intentional discrimination. It’s just a misunderstanding that stems from not fully accepting that our <strong>job is more about building the user experience than writing texts that are grammatically correct</strong>.</p>

<p>Here are a few tips to make sure you hire the best talent and treat your applicants fairly:</p>

<ul>
<li><strong>Remove the ‘native speaker’ and ‘fluency’ requirement.</strong></li>
</ul>

<p>Instead, focus on the core part of our job: add ‘clear communicator’, ‘ability to simplify’, or ‘experience writing for a global audience’.</p>

<ul>
<li><strong>Judge the work, not the accent.</strong></li>
</ul>

<p>Over the years, there have been plenty of studies confirming that the accent bias is real &mdash; people having an unusual or foreign accent are considered less hirable. While some may argue that it can have an impact on the efficiency of internal communications, it’s not enough to justify the reason to overlook the good work of the applicant.</p>

<p>My personal experience with the accent is that it mostly depends on the situation you’re in. When I’m in a friendly environment and do not feel anxiety, my English flows much better as I do not overthink how I sound. Ironically, sometimes when I’m in a room with my team full of British native speakers, I sometimes default to my Slavic accent. The question is: does it make my content design expertise or writing any worse? Not in the slightest.</p>

<p>Therefore, make sure you judge the portfolios, the ideas behind the interview answers, and whiteboard challenge presentations, instead of focusing on whether the candidate’s accent implies that they might not be good writers.</p>

<h2 id="good-global-products-need-great-non-native-content-design">Good Global Products Need Great Non-native Content Design</h2>

<p>Non-native content designers do not have a negative impact on your team’s writing. They sharpen it by helping you look at your content through the lens of your <strong>real user base</strong>. In the globalised world, linguistic purity no longer benefits your product’s user experience.</p>

<p>Try these practical steps and leverage the non-native speaking lens of your content designers to design better international products.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Frederick O’Brien</author><title>An Ode To Side Project Time</title><link>https://www.smashingmagazine.com/2025/01/ode-to-side-project-time/</link><pubDate>Fri, 17 Jan 2025 08:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/01/ode-to-side-project-time/</guid><description>A once-revered perk of some tech workplaces, the status of ‘side project time’ seems to have slipped in recent years. Frederick O’Brien believes it deserves a comeback.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/01/ode-to-side-project-time/" />
              <title>An Ode To Side Project Time</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>An Ode To Side Project Time</h1>
                  
                    
                    <address>Frederick O’Brien</address>
                  
                  <time datetime="2025-01-17T08:00:00&#43;00:00" class="op-published">2025-01-17T08:00:00+00:00</time>
                  <time datetime="2025-01-17T08:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>There seemed to be a hot minute when the tech industry understood the value of idle tinkering and made a point of providing ‘side project time’ as an explicit working perk. The concept endures &mdash; I’m lucky enough to work somewhere that has it &mdash; but it seems to have been outpaced in recent years by the endless charge toward efficiency.</p>

<p>This seems a shame. <strong>We can’t optimize our way to quality solutions and original ideas.</strong> To try is a self-defeating fantasy. The value of side project time is hard to overstate, and more workplaces should not just provide it but actively encourage it.</p>

<p>Here’s why.</p>

<h2 id="what-is-side-project-time">What Is Side Project Time?</h2>

<p>Side project time pops up under different names. At the Guardian, it’s 10% time, for example. Whatever the name, it amounts to the same thing: dedicated space and time during working hours for people to work on <strong>pet projects</strong>, <strong>independent learning</strong>, and <strong>personal development</strong>.</p>

<p>Google founders <a href="https://abc.xyz/investor/founders-letters/ipo-letter/">Larry Page and Sergey Brin famously highlighted the practice</a> as part of the company’s initial public offering in 2004, writing:</p>

<blockquote>“We encourage our employees, in addition to their regular projects, to spend 20% of their time working on what they think will most benefit Google. This empowers them to be more creative and innovative. Many of our significant advances have happened in this manner. For example, AdSense for content and Google News were both prototyped in “20% time.” Most risky projects fizzle, often teaching us something. Others succeed and become attractive businesses.”<br /><br />&mdash; Larry Page and Sergey Brin</blockquote>

<p>The extent to which Google still supports the practice 20 years on is hazy, and though other tech big hitters talk a good game, it doesn’t seem terribly widespread. The concept threatened to become mainstream for a while but has receded.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="the-ode">The Ode</h2>

<p>There are countless benefits to side project time, both on an individual and corporate level. Whether your priorities are personal growth or making lines, it ought to be on your radar.</p>

<h3 id="individuals">Individuals</h3>

<p>On an individual level, side project time frees up people to explore ideas and concepts that interest them. This is good in itself. We all, of course, hope to nurture existing skills and develop new ones in our day-to-day work. Sometimes day to day work provides that. Sometimes it doesn’t. In either case, side project time opens up new avenues for exploration.</p>

<p>It is also a space in which the waters can clear. I’ve previously written about <a href="https://frederickobrien.com/weblog/zen-and-the-art-of-pet-project-maintainence">the lessons of <strong>zen philosophy</strong> as they relate to pet project maintenance</a>, with a major aspect being <strong>the value of not doing</strong>. Getting things done isn’t always the same as making things better.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20fog%20of%20constant%20activity%20%e2%80%94%20or%20productivity%20%e2%80%94%20can%20actually%20keep%20us%20from%20seeing%20better%20solutions%20to%20problems.%20Side%20project%20time%20makes%20for%20clearer%20minds%20to%20take%20back%20with%20us%20into%20the%20day-to-day%20grind.%0a&url=https://smashingmagazine.com%2f2025%2f01%2fode-to-side-project-time%2f">
      
The fog of constant activity — or productivity — can actually keep us from seeing better solutions to problems. Side project time makes for clearer minds to take back with us into the day-to-day grind.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote> 

<p>Dedicated side project time facilitates personal growth, exploration, and learning. This is obviously good for the individual, but for the project too, because where are the benefits going to be felt?</p>

<div class="partners__lead-place"></div>

<h3 id="companies">Companies</h3>

<p>There are a couple of examples of similar company outlooks I’d like to highlight. One is <a href="https://www.forbes.com/sites/andyboynton/2014/03/17/pixar-chief-protect-your-ugly-babies-your-unsightly-ideas/">Pixar’s philosophy &mdash; as outlined by co-founder Ed Catmull &mdash; of protecting ‘ugly babies’</a>, i.e. rough, unformed ideas:</p>

<blockquote>“A new thing is hard to define; it’s not attractive, and it requires protection. When I was a researcher at DARPA, I had protection for what was ill-defined. Every new idea in any field needs protection. Pixar is set up to protect our director’s ugly baby.”<br /><br />&mdash; Ed Catmull</blockquote>

<p>He goes on to point out that they must eventually stand on their own two feet if they are to step out of the sandbox, but that formative time is vital to their development.</p>

<p>The mention of DARPA (the Defense Advanced Research Projects Agency), a research and development agency, highlights this outlook, with Bell Labs being one of its shining examples. Its work has received ten Nobel Prizes and five Turing Awards over the years.</p>

<p>As journalist Jon Gertner summarised in <em><a href="https://en.wikipedia.org/wiki/The_Idea_Factory">The Idea Factory: Bell Labs and the Great Age of American Innovation</a></em>:</p>

<blockquote>“It is now received wisdom that innovation and competitiveness are closely linked. But Bell Labs’ history demonstrates that the truth is actually far more complicated…creative environments that foster a rich exchange of ideas are far more important in eliciting new insights than are the forces of competition.”<br /><br />&mdash; Jon Gertner</blockquote>

<p>It’s a long-term outlook. One Bell employee recalled: <em>“When I first came, there was the philosophy: look, what you’re doing might not be important for ten years or twenty years, but that’s fine, we’ll be there then.”</em></p>

<p>The cynic might say side project time is research and development for companies without the budget allocation. Even if there is some truth to that, I think the former speaks to a more <strong>entwined culture</strong>. It’s not innovation over here with these people and business as usual over there with those other people.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aSide%20project%20time%20is%20also%20a%20cultural%20statement:%20you%20and%20your%20interests%20are%20valuable%20here.%20It%20encourages%20autonomy%20and%20innovation.%20If%20we%20only%20did%20OKRs%20with%20proven%20value,%20then%20original%20thinking%20would%20inevitably%20fade%20away.%0a&url=https://smashingmagazine.com%2f2025%2f01%2fode-to-side-project-time%2f">
      
Side project time is also a cultural statement: you and your interests are valuable here. It encourages autonomy and innovation. If we only did OKRs with proven value, then original thinking would inevitably fade away.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>And let’s be frank: even in purely Machiavellian terms, it benefits employers. You’ll be rewarded with <strong>happier</strong>, <strong>more knowledgeable employees</strong> and <strong>higher retention</strong>. You may even wind up with a surprising new product.</p>

<div class="partners__lead-place"></div>

<h2 id="give-it-a-spin">Give It A Spin</h2>

<p>Side project time is a slow burner but an invaluable thing to cultivate. Any readers in a position to try side project time will reap the benefits in time.</p>

<p>Some of the best things in life come from idle tinkering. Let people do their thing. Give their ideas space to grow, and they will. And they might just be brilliant.</p>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li>“<a href="https://builtin.com/software-engineering-perspectives/20-percent-time">Side Project Programs Can Have Major Benefits for Employers</a>” by Tammy Xu</li>
<li>“<a href="http://www.stat.columbia.edu/~gelman/research/published/bell.pdf">What made Bell Labs special?</a>” by Andrew Gelman (PDF)</li>
<li>“<a href="https://www.forbes.com/sites/quora/2017/07/19/why-bell-labs-was-so-important-to-innovation-in-the-20th-century">Why Bell Labs Was So Important To Innovation In The 20th Century</a>,” Forbes</li>
<li>“<a href="https://www.cnbc.com/2021/12/16/google-20-percent-rule-shows-exactly-how-much-time-you-should-spend-learning-new-skills.html">Google’s ’20% rule’ shows exactly how much time you should spend learning new skills—and why it works</a>,” Dorie Clark</li>
<li><a href="https://www.penguin.co.uk/books/414896/creativity-inc-by-animation-ed-catmull-president-of-pixar-and-disney/9780593070093">Creativity, Inc.</a> by Ed Catmull</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Victor Ayomipo</author><title>Solo Development: Learning To Let Go Of Perfection</title><link>https://www.smashingmagazine.com/2025/01/solo-development-learning-to-let-go-of-perfection/</link><pubDate>Fri, 10 Jan 2025 14:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2025/01/solo-development-learning-to-let-go-of-perfection/</guid><description>The best and worst thing about solo development is the “solo” part. There’s a lot of freedom in working alone, and that freedom can be inspiring, but it can also become a debilitating hindrance to productivity and progress. Victor Ayomipo shares his personal lessons on what it takes to navigate solo development and build the “right” app.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2025/01/solo-development-learning-to-let-go-of-perfection/" />
              <title>Solo Development: Learning To Let Go Of Perfection</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Solo Development: Learning To Let Go Of Perfection</h1>
                  
                    
                    <address>Victor Ayomipo</address>
                  
                  <time datetime="2025-01-10T14:00:00&#43;00:00" class="op-published">2025-01-10T14:00:00+00:00</time>
                  <time datetime="2025-01-10T14:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>As expected from anyone who has ever tried building anything solo, my goal was not to build an app but <em>the</em> app &mdash; the one app that’s so good you wonder how you ever survived without it. I had everything in place: wireframes, a to-do list, project structure &mdash; you name it. Then I started building. Just not the product. I started with the landing page for it, which took me four days, and I hadn’t even touched the app’s core features yet. The idea itself was so good I had to start marketing it right away!</p>

<p>I found myself making every detail <em>perfect</em>: every color, shadow, gradient, font size, margin, and padding had to be spot on. I don’t even want to say how long the logo took.</p>

<blockquote><strong>Spoiler</strong>:<br />No one cares about your logo.</blockquote>

<p>Why did I get so stuck on something that was never even part of the core app I wanted so badly to build? Why wasn’t I nagging myself to move on when I clearly needed to?</p>

<p>The reality of solo development is that there is <strong>no one to tell you when to stop</strong> or simply say, <em>“Yo, this is good enough! Move on.“</em> Most users don’t care whether a login button is yellow or green. What they want (and need) is a button that works and solves their problem when clicking it.</p>

<h2 id="test-early-and-often">Test Early And Often</h2>

<blockquote>Unnecessary tweaks, indecisive UI decisions, and perfectionism are the core reasons I spend more time on things than necessary.</blockquote>

<p>Like most solo developers, I also started with the hope of pushing out builds with the efficiency of a large-scale team. But it is easier said than done.</p>

<p>When building solo, you start coding, then you maybe notice a design flaw, and you switch to fixing it, then a bug appears, and you try fixing that, and <em>voilà</em> &mdash; the day is gone. There comes a time when it hits you that, <em>“You know what? It’s time to build messy.”</em> That’s when good intentions of project and product management go out the window, and that’s when I find myself working by the seat of my pants rather than plowing forward with defined goals and actionable tasks that are based on good UI/UX principles, like storyboards, user personas, and basic prioritization.</p>

<p>This realization is something you have to experience to grasp fully. The trick I’ve learned is to focus on getting something out there for people to see and then work on actual feedback. In other words,</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aIt%e2%80%99s%20more%20important%20to%20get%20the%20idea%20out%20there%20and%20iterate%20on%20it%20than%20reaching%20for%20perfection%20right%20out%20of%20the%20gate.%0a&url=https://smashingmagazine.com%2f2025%2f01%2fsolo-development-learning-to-let-go-of-perfection%2f">
      
It’s more important to get the idea out there and iterate on it than reaching for perfection right out of the gate.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>Because guess what? Even if you have the greatest app idea in the world, you’re never going to make it perfect until you start receiving feedback on it. You’re no mind reader &mdash; as much as we all want to be one &mdash; and some insights (often the most relevant) can only be received through real user feedback and analytics. Sure, your early assumptions may be correct, but how do you know until you ship them and start evaluating them?</p>

<p>Nowadays, I like to tell others (and myself) to work from <strong>hypotheses</strong> instead of <strong>absolutes</strong>. Make an assertion, describe how you intend to test it, and then ship it. With that, you can gather relevant insights that you can use to get closer to perfection &mdash; whatever that is.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="strength-in-recognizing-weakness">Strength In Recognizing Weakness</h2>

<p>Let’s be real: Building a full application on your own is not an easy feat. I’d say it’s like trying to build a house by yourself; it seems doable, but the reality is that it takes a lot more hands than the ones you have to make it happen. And not only to make it happen but to make it happen well.</p>

<p>There’s only so much one person can do, and admitting your strengths and weaknesses up-front will serve you well by avoiding the trap that you can do it all alone.</p>

<p>I once attempted to build a project management app alone. I knew it might be difficult, but I was confident. Within a few days, this “simple” project grew legs and expanded with new features like team collaboration, analytics, time tracking, and custom reports being added, many of which I was super excited to make.</p>

<p>Building a full app takes a lot of time. Think about it; you’re doing the work of a team all alone without any help. There’s no one to provide you with design assets, content, or back-end development. No stakeholder to <a href="https://css-tricks.com/the-impact-of-team-collaboration-and-communication-on-projects/">“swoop and poop”</a> on your ideas (which might be a good thing). Every decision, every line of code, and every design element is 100% on you alone.</p>

<p>It is technically possible to build a full-featured app solo, but when you think about it, there’s a reason why the concept of MVP exists. Take Instagram, for example; it wasn’t launched with reels, stories, creator’s insights, and so on. It started with one simple thing: <em>photo sharing</em>.</p>

<p>All I’m trying to say is <strong>start small</strong>, <strong>launch</strong>, and <strong>let users guide the evolution of the product</strong>. And if you can recruit more hands to help, that would be even better. Just remember to leverage your strengths and reinforce your weaknesses by leaning on other people’s strengths.</p>

<h2 id="yes-think-like-an-mvp">Yes, Think Like an MVP</h2>

<p>The concept of a <strong>minimum viable product</strong> (MVP) has always been fascinating to me. In its simplest form, it means building the basic version of your idea that technically works and getting it in front of users. Yes, this is such a straightforward and widely distributed tip, but it’s still one of the hardest principles for solo developers to follow, particularly for me.</p>

<p>I mentioned earlier that my “genius” app idea grew legs. And lots of them. I had more ideas than I knew what to do with, and I hadn’t even written a reasonable amount of code! Sure, this app could be enhanced to support face ID, dark mode, advanced security, real-time results, and a bunch of other features. But all these could take months of development for an app that you’re not even certain users want.</p>

<p>I’ve learned to ask myself: <em>“What would this project look like if it was easy to build?”.</em> It’s so surreal how the answer almost always aligns with what users want. If you can distill your grand idea into a single indispensable idea that does one or two things <em>extremely well</em>, I think you’ll find &mdash; as I have &mdash; that the final result is laser-focused on solving real user problems.</p>

<p>Ship the simplest version first. Dark mode can wait. All you need is a well-defined idea, a hypothesis to test, and a functional prototype to validate that hypothesis; anything else is probably noise.</p>

<div class="partners__lead-place"></div>

<h2 id="handle-imperfection-gracefully">Handle Imperfection Gracefully</h2>

<p>You may have heard about the <a href="https://medium.com/the-liberators/ship-it-fast-what-does-it-mean-why-does-it-matter-and-what-can-you-improve-3ad13d9786b4">“Ship it Fast” approach to development</a> and instantly recognize the parallels between it and what I’ve discussed so far. In a sense, “Ship it Fast” is ultimately another way of describing an MVP: get the idea out fast and iterate on it just as quickly.</p>

<p>Some might disagree with the ship-fast approach and consider it reckless and unprofessional, which is understandable because, as developers, we care deeply about the quality of our work. However,</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20ship-fast%20mentality%20is%20not%20to%20ignore%20quality%20but%20to%20push%20something%20out%20ASAP%20and%20learn%20from%20real%20user%20experiences.%20Ship%20it%20now%20%e2%80%94%20perfect%20it%20later.%0a&url=https://smashingmagazine.com%2f2025%2f01%2fsolo-development-learning-to-let-go-of-perfection%2f">
      
The ship-fast mentality is not to ignore quality but to push something out ASAP and learn from real user experiences. Ship it now — perfect it later.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>That’s why I like to tell other developers that <strong>shipping an MVP is the safest, most professional way to approach development</strong>. It forces you to stay in scope and on task without succumbing to your whimsies. I even go so far as to make myself swear an “Oath of Focus” at the start of every project.</p>

<blockquote>I, Vayo, hereby solemnly swear (with one hand on this design blueprint) to make no changes, no additions, and no extra features until this app is fully built in all its MVP glory. I pledge to avoid the temptations of endless tweaking and the thoughts of “just one more feature.”<br /><br />Only when a completed prototype is achieved will I consider any new features, enhancements, or tweaks.<br /><br />Signed,<br />Vayo, Keeper of the MVP</blockquote>

<p>Remember, there’s no one there to hold you accountable when you develop on your own. Taking a brief moment to pause and accepting that my first version won’t be flawless helps put me in the right headspace early in the project.</p>

<h2 id="prioritize-what-matters">Prioritize What Matters</h2>

<p>I have noticed that no matter what I build, there’s always going to be bugs. Always. If Google still has bugs in the Google Notes app, trust me, then it’s fine for a solo developer to accept that bugs will always be a part of any project.</p>

<p>Look at flaky tests. For instance, you could run a test over 1,000 times and get all greens, and then the next day, you run the same test, an error shows. It’s just the nature of software development. And for the case of endlessly adding features, it never ends either. There’s always going to be a new feature that you’re excited about. The challenge is <strong>to curb some of that enthusiasm and shelve it responsibly</strong> for a later time when it makes sense to work on it.</p>

<p>I’ve learned to categorize bugs and features into two types: <strong>intrusive</strong> and <strong>non-intrusive</strong>. Intrusive are those things that prevent projects from functioning properly until fixed, like crashes and serious errors. The non-intrusive items are silent ones. Sure, they should be fixed, but the product will work just fine and won’t prevent users from getting value if they aren’t addressed right away.</p>

<p>You may want to categorize your bugs and features in other ways, and I’ve seen plenty of other examples, including:</p>

<ul>
<li>High value, low value;</li>
<li>High effort, low effort;</li>
<li>High-cost, low-cost;</li>
<li>Need to have, nice to have.</li>
</ul>

<p>I’ve even seen developers and teams use these categorizations to create some fancy priority “score” that considers each category. <strong>Whatever it is that helps you stay focused and on-task is going to be the right approach for you more than what specific category you use.</strong></p>

<h2 id="live-with-your-stack">Live With Your Stack</h2>

<p>Here’s a classic conundrum in development circles:</p>

<blockquote>Should I use React? Or NextJS? Or wait, how about Vue? I heard it’s more optimized. But hold on, I read that React Redux is dead and that Zustand is the new hot tool.</blockquote>

<p>And just like that, you’ve spent an entire day thinking about nothing but the tech stack you’re using to build the darn thing.</p>

<p>We all know that an average user could care less about the tech stack under the hood. Go ahead and ask your mom what tech stack WhatsApp is built on, and let me know what she says. Most times, it’s just us who obsesses about tech stacks, and that usually only happens when we’re asked to check under the hood.</p>

<p>I have come to accept that there will always be new tech stacks released every single day with the promise of 50% performance and 10% less code. That new tool might scale better, but do I actually have a scaling problem with my current number of <em>zero</em> users? Probably not.</p>

<p>My advice:</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aPick%20the%20tools%20you%20work%20with%20best%20and%20stick%20to%20those%20tools%20until%20they%20start%20working%20against%20you.%0a&url=https://smashingmagazine.com%2f2025%2f01%2fsolo-development-learning-to-let-go-of-perfection%2f">
      
Pick the tools you work with best and stick to those tools until they start working against you.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>There’s no use fighting something early if something you already know and use gets the job done. Basically, <strong>don’t prematurely optimize or constantly chase the latest shiny object</strong>.</p>

<h2 id="do-design-before-the-first-line-of-code">Do Design Before The First Line of Code</h2>

<p>I know lots of solo developers out there suck at design, and I’m probably among the top 50. My design process has traditionally been to open VS Code, create a new project, and start building the idea in whatever way comes to mind. No design assets, comps, or wireframes to work with &mdash; just pure, unstructured improvisation. That’s not a good idea, and it’s a habit I’m actively trying to break.</p>

<p>These days, I make sure to have <strong>a blueprint of what I’m building</strong> before I start writing code. Once I have that, I make sure to follow through and not change anything to respect my “Oath of Focus.”</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="593"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg"
			
			sizes="100vw"
			alt="A blueprint of the design"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/solo-development-learning-to-let-go-of-perfection/1-blueprint-design-project.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>I like how many teams call comps and wireframes “project artifacts.” They are pieces of evidence that provide a source of truth for how something looks and works. You might be the sort of person who works better with sets of requirements, and that’s totally fine. But having some sort of documentation that you can point back to in your work is like having a turn-by-turn navigation on a long road trip &mdash; it’s indispensable for getting where you need to go.</p>

<p>And what if you’re like me and don’t pride yourself on being the best designer? That’s another opportunity to admit your weaknesses up-front and recruit help from someone with those strengths. That way, you can articulate the goal and focus on what you’re good at.</p>

<div class="partners__lead-place"></div>

<h2 id="give-yourself-timelines">Give Yourself Timelines</h2>

<p>Personally, without deadlines, I’m almost unstoppable at procrastinating. I’ve started setting time limits when building any project, as it helps with procrastination and makes sure something is pushed out at a specified time. Although this won’t work without accountability, I feel the two work hand in hand.</p>

<p>I set a 2&ndash;3 week deadline to build a project. And no matter what, as soon as that time is up, I must post or share the work in its current state on my socials. Because of this, I’m not in my comfort zone anymore because I won’t want to share a half-baked project with the public; I’m conditioned to work faster and get it all done. It’s interesting to see the length of time you can go if you can trick your brain.</p>

<p>I realize that this is an extreme constraint, and it may not work for you. I’m just the kind of person who needs to know what my boundaries are. Setting deadlines and respecting them makes me a more disciplined developer. More than that, it makes me work efficiently because <strong>I stop overthinking things when I know I have a fixed amount of time</strong>, and that leads to faster builds.</p>

<h2 id="conclusion">Conclusion</h2>

<p>The best and worst thing about solo development is the “solo” part. There’s a lot of freedom in working alone, and that freedom can be inspiring. However, all that freedom can be intoxicating, and if left unchecked, it becomes a debilitating hindrance to productivity and progress. That’s a good reason why solo development isn’t for everyone. Some folks will respond a lot better to a team environment.</p>

<p>But if you are a solo developer, then I hope my personal experiences are helpful to you. I’ve had to look hard at myself in the mirror many days to come to realize that I am not a perfect developer who can build the “perfect” app alone. It takes <strong>planning</strong>, <strong>discipline</strong>, and <strong>humility</strong> to make anything, especially the <em>right</em> app that does exactly the <em>right</em> thing.</p>

<p>Ideas are cheap and easy, but stepping out of our freedom and adding our own constraints based on <strong>progress over perfection</strong> is the secret sauce that keeps us moving and spending our time on those essential things.</p>

<h3 id="further-reading-on-smashingmag">Further Reading On SmashingMag</h3>

<ul>
<li>“<a href="https://www.smashingmagazine.com/2023/06/perfect-design-process/">What’s The Perfect Design Process?</a>,” Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2022/07/overcoming-imposter-syndrome-developing-guiding-principles/">Design Under Constraints: Challenges, Opportunities, And Practical Strategies</a>,” Paul Boag</li>
<li>“<a href="https://www.smashingmagazine.com/2023/08/improving-double-diamond-design-process/">Improving The Double Diamond Design Process</a>,” Andy Budd</li>
<li>“<a href="https://www.smashingmagazine.com/2020/09/learnings-coding-artwork/">Unexpected Learnings From Coding Artwork Every Day For Five Years</a>,” Saskia Freeke</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Juan Diego Rodríguez</author><title>Web Development Is Getting Too Complex, And It May Be Our Fault</title><link>https://www.smashingmagazine.com/2024/02/web-development-getting-too-complex/</link><pubDate>Wed, 07 Feb 2024 13:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2024/02/web-development-getting-too-complex/</guid><description>An overwhelming number of frameworks and tooling available today gives the impression that web development has gotten perhaps too complex. As a newcomer, it can be frightening to have so many to consider, almost creating a fear of missing out that we see exploited to sell courses and tutorials on the new hot framework that you “cannot work without.” But perhaps that is just an exaggeration? Juan Diego Rodríguez explores those claims and finds out if web development really is that complex and, most importantly, how we can prevent it from getting even more difficult than we already perceive it to be.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2024/02/web-development-getting-too-complex/" />
              <title>Web Development Is Getting Too Complex, And It May Be Our Fault</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Web Development Is Getting Too Complex, And It May Be Our Fault</h1>
                  
                    
                    <address>Juan Diego Rodríguez</address>
                  
                  <time datetime="2024-02-07T13:00:00&#43;00:00" class="op-published">2024-02-07T13:00:00+00:00</time>
                  <time datetime="2024-02-07T13:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Front-end development seemed simpler in the early 2000s, didn’t it? The standard website consisted mostly of static pages made of HTML and CSS seasoned with a pinch of JavaScript and jQuery. I mean, who doesn’t miss the cross-browser compatibility days, right?</p>

<p>Fast forward to today, and it looks like a parallel universe is taking place with an overwhelming number of choices. Which framework should you use for a new project? Perhaps more established ones like React, Angular, Vue, Svelte, or maybe the hot new one that came out last month? Each framework comes with its unique ecosystem. You also need to decide whether to use TypeScript over vanilla JavaScript and choose how to approach server-side rendering (or static site generation) with <em>meta-frameworks</em> like Next, Nuxt, or Gatsby. And we can’t forget about unit and end-to-end testing if you want a bug-free web app. And we’ve barely scratched the surface of the front-end ecosystem!</p>

<p>But has it <em>really</em> gotten more complex to build websites? A lot of the frameworks and tooling we reach for today were originally crafted for massive projects. As a newcomer, it can be frightening to have so many to consider, almost creating a fear of missing out that we see exploited to sell courses and tutorials on the new hot framework that you “cannot work without.”</p>

<p>All this gives the impression that web development has gotten perhaps <em>too</em> complex. But maybe that is just an exaggeration? In this article, I want to explore those claims and find out if web development really is that complex and, most importantly, how we can prevent it from getting even more difficult than we already perceive it to be.</p>

<h2 id="how-it-was-before">How It Was Before</h2>

<p>As someone who got into web development after 2010, I can’t testify to my own experience about how web development was from the late 1990s through the 2000s. However, even fifteen years ago, learning front-end development was infinitely simpler, at least to me. You could get a website started with static HTML pages, minimal CSS for styling, and a sprinkle of JavaScript (and perhaps a touch of jQuery) to add interactive features, from toggled sidebars to image carousels and other patterns. Not much else was expected from your average developer beyond that &mdash; everything else was considered “going the extra mile.” Of course, the awesome native CSS and JavaScript features we have today weren’t around back then, but they were also unnecessary for what was considered best practice in past years.</p>

<p>Large and dynamic web apps certainly existed back then &mdash; YouTube and Facebook, to name a couple &mdash; but they were developed by massive companies. No one was expected to re-create that sort of project on their own or even a small team. That would’ve been the exception rather than the norm.</p>

<p>I remember back then, tend to worry more about things like SEO and page optimization than how my IDE was configured, but only to the point of adding meta tags and keywords because best practices didn’t include minifying all your assets, three shaking your code, caching your site on edge CDNs, or rendering your content on the server (a problem created by modern frameworks along <a href="https://www.gatsbyjs.com/docs/conceptual/react-hydration/">hydration</a>). Other factors like accessibility, user experience, and responsive layouts were also largely overlooked in comparison to today’s standards. Now, they are deeply analyzed and used to boost Lighthouse scores and impress search engine algorithms.</p>

<p>The web and everything around it changed as more capabilities were added and more and more people grew to depend on it. We have created new solutions, new tools, new workflows, new features, and whatever else new that is needed to cater to a bigger web with even bigger needs.</p>

<p>The web has always had its problems in the past that were worthy of fixing: I absolutely don’t miss tables and float layouts, along with messy DOM manipulation. This post isn’t meant to throw shade on new advances while waxing nostalgic about the good days of the “old wild web.” At the same time, though, yesterday’s problems seem infinitely simpler than those we face today.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/touch-design-for-mobile-interfaces/">Touch Design for Mobile Interfaces</a></strong>, Steven Hoober’s brand-new guide on <strong>designing for mobile</strong> with proven, universal, human-centric guidelines. <strong>400 pages</strong>, jam-packed with in-depth user research and <strong>best practices</strong>.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/touch-design-for-mobile-interfaces/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/14bcab88-b622-47f6-a51d-76b0aa003597/touch-design-book-shop-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/b14658fc-bb2d-41a6-8d1a-70eaaf1b8ec8/touch-design-book-shop-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="javascript-frameworks">JavaScript Frameworks</h2>

<p>JavaScript frameworks, like Angular and React, were created by Google and Facebook, respectively, to be used in their own projects and satisfy the needs that only huge web-based companies like them have. Therein lies the main problem with web complexity: <strong>JavaScript frameworks were originally created to sustain giant projects rather than smaller ones</strong>. Many developers vastly underestimate the amount of time it takes to build a codebase that is reliable and maintainable with a JavaScript framework. However, the alternative of using vanilla JavaScript was <em>worse</em>, and jQuery was short for the task. Vanilla JavaScript was also unable to evolve quickly enough to match our development needs, which changed from simple informative websites to dynamic apps. So, many of us have quickly adopted frameworks to avoid directly mingling with JavaScript and its messy DOM manipulation.</p>

<p>Back-end development is a completely different topic, subject to its own complexities. I only want to focus on front-end development because that is the discipline that has perhaps overstepped its boundaries the most by bleeding into traditional back-end concerns.</p>

<h2 id="stacks-getting-bigger">Stacks Getting Bigger</h2>

<p>It was only logical for JavaScript frameworks to grow in size over time. The web is a big place, and no one framework can cover everything. But they try, and the complexity, in turn, increases. A framework’s size seems to have a one-to-one correlation with its complexity.</p>

<p>But the core framework is just one piece of a web app. Several other technologies make up what’s known as a tech “stack,” and with the web gaining more users and frameworks catering to their needs, tech stacks are getting bigger and bigger. You may have seen popular stacks such as MEAN (MongoDB, Express, Angular, and Node) or its React (MERN) and Vue (MEVN) variants. These stacks are marketed as mature, test-proofed foundations suitable for any front-end project. That means <strong>the advertised size of a core framework is grossly underestimated</strong> because they rely on other micro-frameworks to ensure highly reliable architectures, as you can see in <a href="https://stackshare.io/stacks">stackshare.io</a>. Besides, there isn’t a one-size-fits-all stack; the best tool has always depended &mdash; and will continue to depend &mdash; on the needs and goals of your particular project.</p>

<p>This means that each new project likely requires a unique architecture to fulfill its requirements. Giant tech companies need colossal architectures across all their projects, and their stacks are highly engineered accordingly to secure scalability and maintenance. They also have massive customer bases, so maintaining a large codebase will be easier with more revenue, more engineers, and a clearer picture of the problem. To minimize waste, the tech stacks of smaller companies and projects can and should be minimized not only to match the scale of their needs but to the abilities of the developers on the team as well.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20idea%20that%20web%20development%20is%20getting%20too%20complex%20comes%20from%20buying%20into%20the%20belief%20that%20we%20all%20have%20the%20same%20needs%20and%20resources%20as%20giant%20enterprises.%0a&url=https://smashingmagazine.com%2f2024%2f02%2fweb-development-getting-too-complex%2f">
      
The idea that web development is getting too complex comes from buying into the belief that we all have the same needs and resources as giant enterprises.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>Trying to imitate their mega stacks is pointless. Some might argue that it’s a sacrifice we have to make for future scalability and maintenance, but we should focus first on building great sites for the user without worrying about features users <em>might</em> need in the future. If what we are building is worth pursuing, it will reach the point where we need those giant architectures in good time. Cross that bridge when we get there. Otherwise, it’s not unlike wearing Shaquille O’Neal-sized sneakers in hopes of growing into them. They might not even last until then if it happens at all!</p>

<p>We must remember that the end-user experience is the focus at the end of the day, and <strong>users neither care about nor know what stack we use in our apps</strong>. What they care about is a good-looking, useful website where they can accomplish what they came for, not the technology we use to achieve it. This is how I’ve come to believe that web development is <em>not</em> getting more complex. It’s developers like us who are perpetuating it by buying into solutions for problems that do not need to be solved at a certain scale.</p>

<p>Let me be really clear: I am not saying that today’s web development is all bad. Indeed, we’ve realized a lot of great features, and many of them are thanks to JavaScript frameworks that have pushed for certain features. jQuery had that same influence on JavaScript for many, many years.</p>

<p>We can still create minimum viable products today with minimal resources. No, those might not make people smash the Like button on your social posts, but they meet the requirements, nothing more and nothing less. We want bigger! Faster! Cheaper! <a href="https://lodestar.asu.edu/blog/2011/09/research-friday-bigger-better-faster-cheaper">But we can’t have all three.</a></p>

<p>If anything, front-end development has gotten way <em>easier</em> thanks to modern features that solve age-old development issues, like the way CSS Flexbox and Grid have trivialized layouts that used to require complex hacks involving floats and tables. It’s the same deal with JavaScript gaining new ways to build interactions that used to take clever workarounds or obtuse code, such as <a href="https://www.smashingmagazine.com/2018/01/deferring-lazy-loading-intersection-observer-api/">having the Intersection Observer API to trivialize things like lazy loading</a> (although <a href="https://www.smashingmagazine.com/2019/05/hybrid-lazy-loading-progressive-migration-native/">HTML has gained its own features in that area, too</a>).</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aWe%20live%20in%20this%20tension%20between%20the%20ease%20of%20new%20platform%20features%20and%20the%20complexity%20of%20our%20stacks.%0a&url=https://smashingmagazine.com%2f2024%2f02%2fweb-development-getting-too-complex%2f">
      
We live in this tension between the ease of new platform features and the complexity of our stacks.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<div class="partners__lead-place"></div>

<h2 id="do-we-need-a-javascript-framework-for-everything">Do We Need A JavaScript Framework For Everything?</h2>

<p>Each project, regardless of its simplicity, desperately needs a JavaScript framework. A project without a complex framework is like serving caviar on a paper plate.</p>

<p>At least, that’s what everyone seems to think. But is that actually true? I’d argue on the contrary. JavaScript frameworks are best used on bigger applications. If you’re working on a smaller project, a component-based framework will only complicate matters, making you split your website into a component hierarchy that amounts to overkill for small projects.</p>

<p><strong>The idea of needing a framework for everything has been massively oversold.</strong> Maybe not directly, but you unconsciously get that feeling whenever a framework’s name pops in, as Edge engineer Alex Russell eloquently expresses in his article, “<a href="https://infrequently.org/2023/02/the-market-for-lemons/">The Market For Lemons</a>”:</p>

<blockquote>“These technologies were initially pitched on the back of “better user experiences” but have utterly failed to deliver on that promise outside of the high-management-maturity organisations in which they were born. Transplanted into the wider web, these new stacks have proven to be expensive duds.”<br /><br />&mdash; Alex Russell</blockquote>

<p>Remember, the <strong>purpose of a framework is to simplify your life and save time</strong>. If the project you’re working on is smaller, the time you supposedly save is likely overshadowed by the time you spend either setting up the framework or making it work with the rest of the project. A framework can help make bigger web apps more interactive and dynamic, but there are times when a framework is a heavy-handed solution that actually breeds inefficient workflows and introduces technical debt.</p>

<p>Step back and think about this: Are HTML, CSS, and a touch of JavaScript enough to build your website or web application? If so, then stick with those. What I am afraid of is adding complexity for complexity’s sake and inadvertently raising the barrier to entry for those coming into web development. We can still accomplish so much with HTML and CSS alone, thanks again to many advances in the last decade. But we give the impression that they are unsuitable for today’s web consumption and need to be enhanced.</p>

<h2 id="knowing-everything-and-nothing-at-the-same-time">Knowing Everything And Nothing At The Same Time</h2>

<p>The perceived standard that teams must adopt framework-centered architectures puts a burden not only on the project itself but on a developer’s well-being, too. As mentioned earlier, most teams are unable to afford those architectures and only have a few developers to maintain them. If we undermine what can be achieved with HTML and CSS alone and set the expectations that any project &mdash; regardless of size &mdash; needs to have a <em>bleeding edge</em> stack, then the weight to meet those expectations falls on the developer’s shoulders, with the great responsibility of being proficient in all areas, from the server and database to front end, to design, to accessibility, to performance, to testing, and it doesn’t stop. It’s what has been driving <a href="https://css-tricks.com/the-great-divide/">“The Great Divide” in front-end development</a>, which Chris Coyier explains like this:</p>

<blockquote>“The divide is between people who self-identify as a (or have the job title of) front-end developer yet have divergent skill sets. <strong>On one side</strong>, an army of developers whose interests, responsibilities, and skillsets are heavily revolved around JavaScript. <strong>On the other</strong>, an army of developers whose interests, responsibilities, and skillsets are focused on other areas of the front end, like HTML, CSS, design, interaction, patterns, accessibility, and so on.”<br /><br />&mdash; Chris Coyier</blockquote>

<p>Under these expectations, developers who focus more on HTML, CSS, design, and accessibility rather than the latest technology will feel less valued in an industry that appears to praise those who are concerned with the stack. What exactly are we saying when we start dividing responsibilities in terms of “full-stack development” or absurd terms like “10x development”? A while back, <a href="https://bradfrost.com/blog/post/front-of-the-front-end-and-back-of-the-front-end-web-development/">Brad Frost began distinguishing these divisions as “front-of-the-front-end” and “back-of-the-front-end”</a>.</p>

<p><a href="https://medium.com/@mandy.michael/is-there-any-value-in-people-who-cannot-write-javascript-d0a66b16de06">Mandy Michael explains</a> what impact the chase for “full-stack” has had on developers trying to keep up:</p>

<blockquote>“The worst part about pushing the “know everything” mentality is that we end up creating an industry full of professionals suffering from burnout and mental illness. We have people speaking at conferences about well-being, imposter syndrome, and full-stack anxiety, yet despite that, we perpetuate this idea that people have to know everything and be amazing at it.”<br /><br />&mdash; Mandy Michael</blockquote>

<p>This isn’t the only symptom of adopting heavy-handed solutions for what “vanilla” HTML, CSS, and JavaScript already handle nicely. As the expectations for what we can do as front-end developers grow, the learning curve of front-end development grows as well. Again, we can’t learn and know everything in this vast discipline. But we tell ourselves we have to, and thanks to this mentality, it’s unfortunately common to witness developers who may be extremely proficient with a particular framework but actually know and understand little of the web platform itself, like HTML semantics and structure.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="241"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg"
			
			sizes="100vw"
			alt="The text in the picture reads ‘Do I need to learn JavaScript first?’, and the answer is the following: ‘You might be asking whether you need to learn JavaScript before you dive into React. In 2024, I would personally say, no, you don&#39;t really need to.’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://files.smashing.media/articles/web-development-getting-too-complex/do-i-need-to-learn-javascript-first.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The fact that many budding developers tend to jump straight into frameworks at the expense of understanding the basics of HTML and CSS isn’t a new worry, as <a href="https://rachelandrew.co.uk/archives/2019/01/30/html-css-and-our-vanishing-industry-entry-points/">Rachel Andrew discussed back in 2019</a>:</p>

<blockquote>“That’s the real entry point here, and yes, in 2019, they are going to have to move on quickly to the tools and techniques that will make them employable, if that is their aim. However, those tools output HTML and CSS in the end. It is the bedrock of everything that we do, which makes the devaluing of those with real deep skills in those areas so much more baffling.”<br /><br />&mdash; Rachel Andrew</blockquote>

<p>And I want to clarify yet again that <strong>modern Javascript frameworks and libraries aren’t inherently bad; they just aren’t designed to replace the web platform and its standards</strong>. But we keep pushing them like we want them to!</p>

<h2 id="the-consequences-of-vendor-lock-in">The Consequences Of Vendor Lock-In</h2>

<p>“Vendor lock-in” happens when we depend too deeply on proprietary products and services to the extent that switching to other products and services becomes a nearly impossible task. This often occurs when cloud services from a particular company are deeply integrated into a project. It’s an issue, especially in cloud computing, since moving databases once they are set up is expensive and lengthy.</p>

<p>Vendor lock-in in web development has traditionally been restricted to the back end, like with cloud services such as AWS or Firebase; the front-end framework, meanwhile, was a completely separate concern. That said, I have noticed a recent trend where <strong>vendor lock-in is reaching into meta-frameworks</strong>, too. With the companies behind certain meta-frameworks offering hosting services for their own products, swapping hosts is increasingly harder to do (whether the lock-in is designed intentionally or not). Of course, companies and developers will be more likely to choose the hosting service of the company that made a particular framework used on their projects &mdash; they’re the experts! &mdash; but that only increases the project’s dependency on those vendors and their services.</p>

<p>A clear example is the relationship between Next and Vercel, the parent cloud service for Next. With the launch of Next 13, it has become increasingly harder to set up a Next project outside of Vercel, leading to projects like <a href="https://open-next.js.org/">Open Next</a>, which says right on its website that <em>“[w]hile Vercel is great, it’s not a good option if all your infrastructure is on AWS. Hosting it in your AWS account makes it easy to integrate with your backend [sic]. And it’s a lot cheaper than Vercel.”</em> Fortunately, the developers’ concerns have been heard, and <a href="https://nextjs.org/blog/next-14-1#improved-self-hosting">Next 14 brings clarity</a> on how to self-host Next on a Node server.</p>

<p>Another example is <a href="https://www.gatsbyjs.com">Gatsby</a> and <a href="https://www.gatsbyjs.com/docs/how-to/cloud/">Gatsby Cloud</a>. Gatsby has always offered helpful guides and alternative hosting recommendations, but since the launch of Gatsby Cloud in 2019, the main framework has been optimized so that using Gatsby and Gatsby Cloud together requires no additional hosting configurations. That’s fantastic if you adopt both, but it’s not so great if all you need is one or the other because integrating the framework with other hosts &mdash; and vice versa &mdash; is simply harder. It’s as if you are penalized for exercising choice.</p>

<p>And let’s not forget that no team expected <a href="https://www.netlify.com/press/netlify-acquires-gatsby-inc-to-accelerate-adoption-of-composable-web-architectures/">Netlify to acquire Gatsby Cloud in February 2023</a>. This is a prime case where the vendor lock-in problem hits everybody because converting from one site to another comes at a cost. Some teams were charged 120% more after converting from Gatsby Cloud to Netlify &mdash; even with the same plan they had with Gatsby Cloud!</p>

<p>What’s the solution? The common answer I hear is to stop using paid cloud services in favor of open-sourced alternatives. While that’s great and indeed a viable option for some projects, it fails to consider that <strong>an open-source project may not meet the requirements needed for a given app</strong>.</p>

<p>And even then, open-source software depends on the community of developers that maintain and update the codebase with little to no remuneration in exchange. Further, open source is equally prone to locking you into certain solutions that are designed to solve a deficiency with the software.</p>

<p>There are frameworks and libraries, of course, that are in no danger of being abandoned. React is a great example because it has an actively engaged community behind it. But you can’t have the same assurance with each new dependency you add to a project. We can’t simply keep installing more packages and components each time we spot a weak spot in the dependency chain, especially when a project is perfectly suited for a less complex architecture that properly leverages the web platform.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aChoosing%20technology%20for%20your%20stack%20is%20an%20exercise%20of%20picking%20your%20own%20poison.%20Either%20choose%20a%20paid%20service%20and%20be%20subject%20to%20vendor%20lock-in%20in%20the%20future,%20or%20choose%20an%20open-source%20one%20and%20pray%20that%20the%20community%20continues%20to%20maintain%20it.%0a&url=https://smashingmagazine.com%2f2024%2f02%2fweb-development-getting-too-complex%2f">
      
Choosing technology for your stack is an exercise of picking your own poison. Either choose a paid service and be subject to vendor lock-in in the future, or choose an open-source one and pray that the community continues to maintain it.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>Those are virtually the only two choices. Many of the teams I know or have worked on depend on third-party services because they cannot afford to develop them on their own; that’s a luxury that only massive companies can afford. It’s a problem we have to undergo when starting a new project, but one we can minimize by reducing the number of dependencies and choosing wisely when we have to.</p>

<h2 id="each-solution-introduces-a-new-problem">Each Solution Introduces A New Problem</h2>

<p>Why exactly have modern development stacks gotten so large and complex? We can point a finger at the “Development Paradox.” With each new framework or library, a new problem crops up, and time-starved developers spend months developing a new tool to solve that problem. And when there isn’t a problem, don’t worry &mdash; we will create one eventually. This is a <strong>feedback loop that creates amazing solutions and technologies but can lead to over-engineered websites</strong> if we don’t reign it in.</p>

<p>This reminds me of the famous quote:</p>

<blockquote>“The plain fact is that if you don’t have a problem, you create one. If you don’t have a problem, you don’t feel that you are living.”<br /><br />&mdash; U.G. Krishnamurti</blockquote>

<p>Let’s look specifically at <strong>React</strong>. It was originally created <em>by</em> Facebook <em>for</em> Facebook to develop more dynamic features for users while improving Facebook’s developer experience.</p>

<p>Since React was open-sourced in 2013 (and <a href="https://ma.tt/2017/09/on-react-and-wordpress/">nearly re-licensed in 2017, if it weren’t for the WordPress community</a>), hundreds of new utilities have been created to address various React-specific problems. How do you start a React project? There’s Create React App and Vite. Do you need to enhance your state management? There is Redux, among other options. Need help creating forms? There is a React Hook Form. And perhaps the most important question: Do you need server-side rendering? There’s Next, Remix, or Gatsby for that. Each solution comes with its own caveats, and developers will create their own solutions for them.</p>

<p>It may be unfair to pick on React since it considers itself a <em>library</em>, not a <em>framework</em>. It’s inevitably prone to be extended by the community. Meanwhile, Angular and Vue are frameworks with their own community ecosystems. And this is the tip of the iceberg since there are many JavaScript frameworks in the wild, each with its own distinct ideology and dependencies.</p>

<p>Again, I don’t want you to get the wrong idea. I <em>love</em> that new technologies emerge and find it liberating to have so many options. But when building something as straightforward as a webpage or small website &mdash; which some have started referring to as “multi-page applications” &mdash; we have to draw a line that defines how many new technologies we use and how reliable they are. We’re quite literally mashing together third-party code written by various third-party developers. What could go wrong? Please don’t answer that.</p>

<p>Remember that our <strong>users don’t care what’s in our stacks</strong>. They only see the final product, so we can save ourselves from working on unnecessary architectures that aren’t appreciated outside of development circles. It may seem counterintuitive in the face of advancing technology, but knowing that the user doesn’t care about what goes behind the scenes and only sees the final product will significantly enhance our developer experience and free you from locked dependencies. Why fix something that isn’t broken?</p>

<div class="partners__lead-place"></div>

<h2 id="how-can-we-simplify-our-codebases">How Can We Simplify Our Codebases?</h2>

<p>We’ve covered several reasons why web development appears to be more complex today than in years past, but blaming developers for releasing new utilities isn’t an accurate portrayal of the real problem. After all, when developing a site, it’s not like we are forced to use each new technology that enters the market. In fact, many of us are often unaware of a particular library and only learn about it when developing a new feature. For example, if we want to add <em>toast notifications</em> to our web app, we will look for a library like <a href="https://www.npmjs.com/package/react-toastify"><code>react-toastify</code></a> rather than some other way of building them because it “goes with” that specific library. It’s worth asking whether the app needs toast notifications at all if they introduce new dependencies.</p>

<p>Imagine you are developing an app that allows users to discover, review, and rate restaurants in their area. The app needs, at a bare minimum, information about each restaurant, a search tool to query them, and an account registration flow with authentication to securely access the account. It’s easy to make assumptions about what a future user might need in addition to these critical features. In many cases, a project ends up delayed because we add unnecessary features like SSR, notifications, offline mode, and fancy animations &mdash; sometimes before the app has even converted its first registered user!</p>

<p>I believe we can boil down the complexity problem to personal wishes and perceived needs rather than properly scoping a project based on user needs and experiences.</p>

<p>That level of <a href="https://www.coursera.org/gb/articles/what-is-scope-creep">scope creep</a> can easily turn into an over-engineered product that will likely never see the light of launching.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="423"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png"
			
			sizes="100vw"
			alt="Three-panel comic strip titled ‘The UX Designer Paradox.’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Image source: <a href='https://twitter.com/rspective/status/984684411181518848'>@rspective via X</a>. (<a href='https://files.smashing.media/articles/web-development-getting-too-complex/overengineering.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>What can we do to simplify our own projects? The following advice is relevant when you have control over your project, either because it’s a personal one, it’s a smaller one for a smaller team, or you have control over the decisions in whatever size organization you happen to be in.</p>

<p>The hardest and most important step is <strong>having a sense of detection when your codebase is getting unnecessarily complicated</strong>. I deem it the hardest step because there is no certainty of what the requirements are or what the user needs; we can only make assumptions. Some are obvious, like assuming the user will need a way to log into the app. Others might be unclear, like whether the app should have private messaging between users. Others are still far-fetched, like believing users need extremely low latency in an e-commerce page. Other features are in the “nice to have” territory.</p>

<p>That is regarding the user experience, but the same questions emerge on the development side:</p>

<ul>
<li>Should we be using a CSS preprocessor or a CSS framework, or can we achieve it using only CSS modules?</li>
<li>Is vanilla JavaScript enough, or are we going to add TypeScript?</li>
<li>Does the app need SSR, SSG, or a hybrid of the two?</li>
<li>Should we implement Redis on the back end for faster database queries, or is that too much scope for the work?</li>
<li>Should we be implementing end-to-end testing or unit tests?</li>
</ul>

<p>These are valid questions that should be considered when developing a site, but they can distract us from our main focus: getting things done.</p>

<blockquote>“Done is better than perfect.”<br /><br />&mdash; Sheryl Sandberg</blockquote>

<p>And, hey, even the largest and most sophisticated apps began as minimal offerings that iterated along the way.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="450"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png"
			
			sizes="100vw"
			alt="First versions of Amazon, Facebook, Google and Twitter"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      First versions of Amazon, Facebook, Google and Twitter. (<a href='https://files.smashing.media/articles/web-development-getting-too-complex/first-web-versions.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>We also ought to be asking ourselves what would happen if a particular feature or dependency <em>isn’t</em> added to the project. If the answer is “nothing,” then we should be shifting our attention to something else.</p>

<p>Another question worth asking: <em>“Why are we choosing to add [X]?”</em> Is it because that’s what is popular at the moment, or because it solves a problem affecting a core feature? Another aspect to take into consideration is how familiar we are with certain technologies and give preference to those we know and can start using them right away rather than having to stop and learn the ins and outs of a new framework.</p>

<p>Choose the right tool for the job, which is going to be the one that meets the requirements and fits your mental model. Focus less on a library’s popularity and scalability but rather on getting your app to the point where it needs to scale in the first place.</p>

<h2 id="conclusion">Conclusion</h2>

<p>It’s incredibly difficult to <em>not</em> over-engineer web apps given current one-size-fits-all and fear-of-missing-out mentalities. But we can be more conscious of our project goals and exercise vigilance in guarding our work against scope creep. The same can be applied to the stack we use, making choices based on what is really needed rather than focusing purely on what everyone else is using for their particular work.</p>

<p>After reading the word “framework” exactly 48 times in this article, can we now say the web is getting too complex? It has been complex by nature since its origins, but <strong>complexity doesn’t translate to “over-engineered” web apps</strong>. The web isn’t intrinsically over-engineered, and we only have ourselves to blame for over-engineering our projects with overly-wrought solutions for perceived needs.</p>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(gg, yk)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Geoff Graham</author><title>The Problem With WordPress Is Positioning, Not Plugins</title><link>https://www.smashingmagazine.com/2023/10/problem-wordpress-positioning-not-plugins/</link><pubDate>Tue, 03 Oct 2023 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2023/10/problem-wordpress-positioning-not-plugins/</guid><description>Geoff explores a divide between WordPress.org and WordPress.com, shedding light on the blurred lines between open-source ideals and commercial interests. Is there any winning repositioning strategy for WordPress?</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2023/10/problem-wordpress-positioning-not-plugins/" />
              <title>The Problem With WordPress Is Positioning, Not Plugins</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Problem With WordPress Is Positioning, Not Plugins</h1>
                  
                    
                    <address>Geoff Graham</address>
                  
                  <time datetime="2023-10-03T10:00:00&#43;00:00" class="op-published">2023-10-03T10:00:00+00:00</time>
                  <time datetime="2023-10-03T10:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Ask just about any casual user to explain the difference between WordPress.org and WordPress.com, and you’re likely to get a shrug in response. I know this because it’s one of the first things I ask students in my WordPress development course each semester when introducing them to the content management system.</p>

<p>I love asking that question because it boggles my mind that a platform responsible for powering <a href="https://w3techs.com/technologies/details/cm-wordpress">43% of the internet</a> can go largely unrecognized, the same sort way <a href="https://www.tmz.com/2023/09/25/taylor-swift-arrowhead-stadium-unnoticed-chiefs-game-swifties-travis-kelce/">Taylor Swift can walk into a packed football stadium unnoticed</a>.</p>

<p>But among the power users and developers among us, the difference between WordPress.org and WordPress.com is not only apparent but a divide that draws a sacred but blurry line between the lively open-source community that WordPress is known for, and the commercial efforts of Automattic, the company that uses WordPress to power its hosted CMS platform.</p>

<p>The difference is a sacred line because crossing it tarnishes the open-source-ness of WordPress as a decentralized project maintained by a community of largely unpaid contributors.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aKeeping%20special%20interests%20out%20of%20the%20mix%20is%20what%20keeps%20WordPress%20for%20the%20people,%20by%20the%20people.%0a&url=https://smashingmagazine.com%2f2023%2f10%2fproblem-wordpress-positioning-not-plugins%2f">
      
Keeping special interests out of the mix is what keeps WordPress for the people, by the people.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>That sacred line is also blurry, at best, and a great example of that popped up this past week when WordPress.com <a href="https://wptavern.com/developers-raise-concerns-about-wordpress-com-plugin-listings-outranking-wordpress-org-on-google">published a clone of the WordPress.org Plugin Directory</a> to its own site. As is usually the case with WordPress #HotDrama, one or two developers take notice of a change, <a href="https://twitter.com/johnbillion/status/1701765939534893475">post a tweet about it</a>, and Automattic founder Matt Mullenweg <a href="https://twitter.com/photomatt/status/1701978533239640196">splashes a little kerosene on it</a>. In this particular case, plugin pages on WordPress.com appeared to outrank plugin pages on WordPress.org in web searches.</p>

<p>This is yet another example of a situation that pits the open-source community against Automattic’s commercial interests. We’ve been here plenty of times in the 20-plus years that WordPress has been with us. The debates are nuanced, of course, but I’ll loosely characterize each side’s point in broad strokes:</p>

<ul>
<li><strong>WordPress.org:</strong> You are using the sweat equity of the open-source community to advance your own company.</li>
<li><strong>WordPres.com:</strong> Hey, we’re merely distributing your work to a larger audience in a way we both benefit.</li>
</ul>

<p>The problem is that this is where the debate often moves from being productive to <a href="https://wpwatercooler.com/2023/09/22/a-call-for-accountability-sharing-my-wordpress-code-of-conduct-report/">getting downright dirty</a>. No one benefits in these conditions.</p>

<p>It’s possible for both sides of the debate to be true, even if they do not agree. It would be just as disingenuous for plugin developers to claim no benefit from WordPress.com’s exposure as it is for Automattic to claim that developers gain as much in rewards as they spend writing code.</p>

<p>And therein lies the rub. When the discussion veers towards labor concerns and hurt feelings, we get away from the real issue at heart: <strong>WordPress has a positioning problem, not a plugin problem.</strong></p>

<p>Sure, that makes for a spicy headline, but there’s real substance to it. How different would it be if the debate was between WordPress and <em>Automattic</em> rather than WordPress against <em>WordPress</em>? I imagine it would be quite different.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aIt%20is%20no%20longer%20an%20issue%20of%20search%20rankings%20and%20blocked%20accounts%20but%20one%20that%20is%20truly%20about%20distribution%20and%20labor%20in%20the%20open-source%20community.%0a&url=https://smashingmagazine.com%2f2023%2f10%2fproblem-wordpress-positioning-not-plugins%2f">
      
It is no longer an issue of search rankings and blocked accounts but one that is truly about distribution and labor in the open-source community.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>When we draw sharper lines between business and community, we can have clearer discussions without the blurry divisions getting in the way and throwing the conversation off-topic.</p>

<p>This is the absolute perfect time to reposition WordPress. Five years after Matt’s <a href="https://www.youtube.com/watch?v=KrZx4IY1IgU">famous advice</a> to “Learn JavaScript deeply,” WordPress has transformed into an entirely visual editing experience that has radically transformed how we interact with it, both as users and developers. The “Gutenberg” project &mdash; and the full-site editing capabilities it brought &mdash; has ushered in a new era of WordPress where everyone’s relationship with it has changed. It’s time to change the general perception of WordPress as far as <em>what it is</em> and <em>what it’s used for</em> while we are at it.</p>

<p>It’s possible that a product becomes so successful or changes so drastically that it no longer fits under its own umbrella. Facebook becomes Meta. Google becomes Alphabet. Twitter has become whatever it is today. Products and companies evolve over time like people. This is what has happened with WordPress.com and WordPress.org. Each is vying for their own identity and winds up <strong>battling each other rather than buttressing one another</strong>. A cloned version of the WordPress.org Plugin Directory on WordPress.com exacerbates the issue rather than solving it. We’ve really reached the point of diminishing returns with the “WordPress” brand equity.</p>

<p>The only way this is fixed is by shedding the “WordPress” label from Automattic’s commercial efforts. Matt is not wrong when <a href="https://twitter.com/photomatt/status/1701978533239640196">he claims that shared branding has made it difficult for services like Typepad to compete in the CMS space</a>. That was true for a long time. But with a 43.1% market share today, is there really an existential threat to WordPress that requires co-branding two different flavors of WordPress? <strong>The current threat to WordPress’ market dominance has more to do with its future as a product and how it competes in a world of low-code and no-code platforms.</strong> There’s no amount of co-branding that is capable of solving what is, in essence, a user interface and experience challenge.</p>

<p>In that same tweet, Matt also asks us to imagine what WordPress would look like without co-branding, pointing to Joomla as a case in point. Again, co-branding may indeed have helped get WordPress to where it is today. But to say that it always has and always will is a large leap in logic on a false premise. Co-branding may not always be the best or only way to maintain market share or beat the competition. To think so is errant and myopic in a way that assumes no other possibilities, ever, as if past successes always lead to new ones. <a href="https://hbr.org/2004/07/marketing-myopia">Myopia often sows the seeds of failure.</a></p>

<p>I believe we’ve reached the point where <strong>we ought to at least question co-branding as a strategy and consider whether there are happier paths to follow</strong>. If I have to imagine what WordPress looks like without co-branding <em>today</em> instead of in the past, I see the possibility of a clear separation of concerns between business and community interests because, at this point, there is little to no difference between running a WordPress site on WordPress.com’s servers on its Business Plan and self-hosting the site on a managed host like WP Engine. You get the same access to the same files for the same underlying software that is used to power WordPress.com, the same as it is used to power any other website that chooses to download and self-host WordPress.</p>

<p>That said, I am not totally against co-branding. The problem could be as much about not going <em>far enough</em> with co-branding as it is having too much of it. As it currently stands, the similarities between WordPress.com and WordPress.org are too indistinguishable at first glance that perhaps sharing the same top-level domain name only muddies the perceived similarities &mdash; or differences &mdash; even more. Perhaps there’s a happy path that gives credit to both perspectives in the debate with more explicit names, such as WordPress Platform and WordPress CMS. Those are terrible names, but hopefully, you get what I am aiming at.</p>

<p><strong>The bottom line is this:</strong> We have danced around WordPress’ positioning problem way too long, hiding behind its past successes while tension between commercial and community interests continues to boil over. Rather than allowing this to continue by sitting somewhere in the middle with a shared brand name, maybe we’ll see a day where we go all-in on a direction either by renaming WordPress.com to allow WordPress.org to be WordPress or leaning deeper into effective co-branding that properly distinguishes the two properties while leveraging the “WordPress” brand.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Roll up your sleeves and <strong>boost your UX skills</strong>! Meet <strong><a data-instant href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a></strong>&nbsp;🍣, a 10h video library by Vitaly Friedman. <strong>100s of real-life examples</strong> and live UX training. <a href="https://www.youtube.com/watch?v=3mwZztmGgbE">Free preview</a>.</p>
<a data-instant href="https://smart-interface-design-patterns.com/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://smart-interface-design-patterns.com/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3155f571-450d-42f9-81b4-494aa9b52841/video-course-smart-interface-design-patterns-vitaly-friedman.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8c98e7f9-8e62-4c43-b833-fc6bf9fea0a9/video-course-smart-interface-design-patterns-vitaly-friedman.jpg"
    alt="Feature Panel"
    width="690"
    height="790"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h3 id="references-and-resources">References And Resources</h3>

<ul>
<li>“<a href="https://wptavern.com/developers-raise-concerns-about-wordpress-com-plugin-listings-outranking-wordpress-org-on-google">Developers Raise Concerns About WordPress.com Plugin Listings Outranking WordPress.org on Google Search</a>,” Sarah Gooding (WP Tavern)</li>
<li>“<a href="https://wptavern.com/wordpress-com-plugin-pages-add-download-link-for-using-plugins-on-self-hosted-sites">WordPress.com Plugin Pages Add Download Link for Using Plugins on Self-Hosted Sites</a>,” Sarah Gooding (WP Tavern)</li>
<li>“<a href="https://wptavern.com/developers-claim-damaged-trust-following-public-confrontations-with-wordpress-leadership">Developers Claim Damaged Trust Following Public Confrontations with WordPress Leadership</a>,” Sarah Gooding (WP Tavern)</li>
<li>“<a href="https://wpwatercooler.com/2023/09/22/a-call-for-accountability-sharing-my-wordpress-code-of-conduct-report/">A Call for Accountability: Sharing My WordPress Code of Conduct Report</a>,” Sé Reed</li>
<li>“<a href="https://www.smashingmagazine.com/2022/10/wordpress-full-site-editing/">WordPress Full-Site Editing: A Deep Dive Into The New Feature</a>,” Nick Schäferhoff</li>
<li>“<a href="https://www.smashingmagazine.com/author/nickbabich">The Modern Way To Create And Host A WordPress Site</a>,” Nick Babich</li>
<li>“<a href="https://www.smashingmagazine.com/2022/02/implications-wordpress-joining-block-protocol/">Implications Of WordPress Joining The Block Protocol</a>,” Leonardo Losoviz</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk, il)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Lyndon Cerejo</author><title>Beyond Algorithms: Skills Of Designers That AI Can’t Replicate</title><link>https://www.smashingmagazine.com/2023/04/skills-designers-ai-cant-replicate/</link><pubDate>Mon, 03 Apr 2023 10:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2023/04/skills-designers-ai-cant-replicate/</guid><description>The recent explosion of Artificial Intelligence tools for everything from writing to design has creators and designers concerned that their job functions can be replaced by AI. While AI has been programmed to perform well at certain tasks, it cannot replace the skills and behaviors of designers that are crucial to the human aspect of design. This article highlights non-technical skills like curiosity, observation, empathy, advocacy, visual communication, and collaboration that designers routinely use in their process to make a difference through design. AI can be used to augment designers’ workflow instead of replacing people.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2023/04/skills-designers-ai-cant-replicate/" />
              <title>Beyond Algorithms: Skills Of Designers That AI Can’t Replicate</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Beyond Algorithms: Skills Of Designers That AI Can’t Replicate</h1>
                  
                    
                    <address>Lyndon Cerejo</address>
                  
                  <time datetime="2023-04-03T10:00:00&#43;00:00" class="op-published">2023-04-03T10:00:00+00:00</time>
                  <time datetime="2023-04-03T10:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>At the start of the Coronavirus pandemic, I led the redesign of a tablet app used by sales representatives of the world’s largest food &amp; beverage company. Never having been a sales representative, nor having ever played one on TV, I was curious about their typical workday. Adapting the first rule of design &mdash; Know Thy User &mdash; our lockdown approach was to conduct video interviews. As soon as company restrictions allowed, I met two sales representatives at a local Walmart.</p>

<p>Masked and socially distant, I walked a mile in their shoes through the dairy, pet food, and freezer aisles. This single visit uncovered many insights that had not come up in the video interviews and online walkthroughs. I shared this with the team, spread across the world, and everyone could empathize with the sales representatives: juggling multiple devices and printouts, struggling to make technology work in extreme conditions like a low-lit walk-in freezer, and trying to work without hindering harried shoppers. The sales reps would repeat these tasks between twenty and thirty times a day, five days a week, which sounds about as fun as it is.</p>

<p>Our team used these insights to experiment with different concepts, refine them based on feedback from sales representatives, and launch a redesigned app that received glowing feedback from the representatives and praise from the company stakeholders.</p>

<p>Curiosity, empathy, and collaboration were some of the designer-like or <em>designerly</em> behaviors we used to transform the sales representatives’ experience. These behaviors are a few of the behaviors and skills that designers use throughout the design process. Design researcher and educator Nigel Cross first used the word <em>designerly</em> to refer to <strong>underlying patterns of how designers think and act</strong>.</p>

<p>Designers spend years learning technical design skills, and as they use those hard skills to do their jobs, their designs are impactful when they actively use these non-technical <em>designerly</em> skills and behaviors. <em>Designerly</em> skills and behaviors make us creative and innovative and distinguish us from machines and technology like Artificial Intelligence (AI).</p>

<p>Yes, the same AI that you can’t avoid reading or hearing about on social media or in the news. Stories and posts about people being equally worried about layoffs and AI taking over their jobs, and some even suggesting that AI is why those jobs won’t come back. Creators and people traditionally considered creative, like artists, writers, and designers, seem especially concerned about AI making them redundant. Guesstimates of when AI will perform tasks better than humans just add to the frenzy.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="377"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg"
			
			sizes="100vw"
			alt="Timeline of AI development in text, code, images, and video categories"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Timeline guesstimates of when AI will be ready for prime time. (Source: <a href='https://www.sequoiacap.com/article/generative-ai-a-creative-new-world/'>Sequoia Capital</a>) (<a href='https://files.smashing.media/articles/skills-designers-ai-cant-replicate/1-timeline-ai-development.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The assumption that AI will replace people is based on the premise that both have the same qualities, abilities, and skills. But that’s just not true. Artificial intelligence is simply technology that is taught to <strong>mimic human intelligence to perform tasks</strong>. It is trained on large amounts of data &mdash; <a href="https://www.springboard.com/blog/data-science/machine-learning-gpt-3-open-ai/">by some estimates</a>, the equivalent of a quarter of the Library of Congress, the world’s largest library.</p>

<p>AI is better than humans in certain tasks that involve processing and analyzing large amounts of data quickly, accurately, rationally, and consistently. <strong>Artificial Intelligence may create, but it can’t be creative.</strong> It cannot match humans in areas that rely on skills and behaviors that are distinctly human, like intuition, emotional intelligence, cultural context, and changing situations.</p>

<p>Humans are conscious beings with a subconscious mind that can influence decisions and change those decisions based on experience, context, environment, wisdom, and understanding. This takes us years, decades, and even a lifetime to learn and apply, and it cannot be programmed in machines, no matter how sentient they may appear to be. Not for the foreseeable future.</p>

<p>Being <em>designerly</em> takes thinking, feeling, and acting like a designer. I’ve been thinking about and observing what it means to be <em>designerly</em>, and by using six such skills and behaviors, I will discuss how humans have an advantage over AI. I used the head, heart, and hands approach for transformative sustainability learning (Orr, Sipos, et al.) to organize these <em>designerly</em> skills related to thinking (head), feeling (heart), and doing (hands), and offer ways to practice them.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aUsing%20our%20head,%20heart,%20and%20hands%20together%20to%20make%20a%20transformative%20difference%20is%20what%20distinguishes%20us%20from%20AI%20and%20makes%20us%20human,%20creative,%20and%20innovative.%0a&url=https://smashingmagazine.com%2f2023%2f04%2fskills-designers-ai-cant-replicate%2f">
      
Using our head, heart, and hands together to make a transformative difference is what distinguishes us from AI and makes us human, creative, and innovative.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="478"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png"
			
			sizes="100vw"
			alt="A picture of a wooden Lego man with designerly skills written next to him grouped and organized by the head, heart, and hands"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Designerly skills organized by the Head (thinking skills), Heart (feeling skills), and Hands (doing skills). (Source: <a href='https://beingdesignerly.com/'>BeingDesignerly</a>) (<a href='https://files.smashing.media/articles/skills-designers-ai-cant-replicate/3-designerly-skills.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="head">Head</h2>

<p>The skills, behaviors, and habits to help you think like a designer and create a <em>designerly</em> mindset include curiosity and observation.</p>

<h3 id="cultivate-curiosity">Cultivate Curiosity</h3>

<p>Curiosity is the desire to know. It is a pleasure to ask, explore, experiment, discover, learn, and understand. We see this relentless curiosity in small children, who explore everything novel around them. As they grow up, that curiosity starts getting stifled in many, partly because they are taught to look for an answer instead of exploring questions.</p>

<p>This curiosity stifler of focusing on the answer is what AI is programmed to do. AI is also limited by its knowledge and understanding of the world, unable to explore beyond those boundaries. Also, without physical senses, AI cannot experience the world and be curious about things we see, hear, touch, taste, and smell around us.</p>

<p>This gives us a leg up on AI if we can overcome other curiosity-stiflers like self-consciousness, the shame of not knowing, and the fear of ridicule.</p>

<p>Let’s deconstruct curiosity to understand different types of curiosity we can nurture and build in ways AI cannot. In the 1950s, British-Canadian psychologist Daniel Berlyne presented a model distinguishing between two types of curiosity: <strong>perceptual</strong>, based on stimulation, and <strong>epistemic</strong>, driven by a genuine desire for knowledge. He also distinguished between two types of behaviors to address that curiosity: <strong>diversive</strong> exploration, motivated by a need for novel stimulation or a desire to explore, and <strong>specific</strong> exploration, motivated by curiosity and a search for new information.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="535"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png"
			
			sizes="100vw"
			alt="Two lines crossing each other in the form of a cross which represents dimensions of curiosity, such as perceptual, epistemic, diversive, and specific based on Daniel Berlyne’s Theory of Human Curiosity"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Dimensions of curiosity based on Daniel Berlyne’s Theory of Human Curiosity. (<a href='https://files.smashing.media/articles/skills-designers-ai-cant-replicate/2-curiosity-dimensions.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>This gives us four dimensions of curiosity, which have their time and place, but the quadrant we are discussing lies at the intersection of the desire to explore and the desire for knowledge. Diversive-Epistemic curiosity is where people use the desire to explore and apply it to learning new things. TED Talks are an example of knowledge exploration, where people can learn about just about any topic they care to explore.</p>

<p>You can cultivate curiosity by being intentional in developing the joy of exploration. Set some time aside every day to learn something new, and pick topics that interest you. Start small and gradually increase the time you spend learning something daily as well as for expanding the topics. I would suggest starting with just 10&ndash;20 minutes a day. That’s enough time to watch a TED talk, read a book summary, or start learning a new skill. Reading multiple book summaries on a topic is an easy way to identify the next book you should read cover to cover over a few days or weeks.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aCurious%20exploration%20broadens%20the%20mind%20to%20new%20ideas,%20perspectives,%20and%20approaches,%20lays%20the%20foundation%20for%20the%20cross-pollination%20of%20ideas,%20and%20leads%20to%20creative%20and%20innovative%20solutions.%0a&url=https://smashingmagazine.com%2f2023%2f04%2fskills-designers-ai-cant-replicate%2f">
      
Curious exploration broadens the mind to new ideas, perspectives, and approaches, lays the foundation for the cross-pollination of ideas, and leads to creative and innovative solutions.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote> 

<p><strong>Advantage:</strong> People</p>

<h3 id="notice-observe">Notice &amp; Observe</h3>

<p>While often used as synonyms, noticing is seeing something for the first time, while observing is paying close attention to something or someone. Being creative begins with <strong>noticing what others have overlooked</strong>, followed by closer, <strong>intentional observation</strong> when warranted.</p>

<p>In traditional ethnography, researchers observe people and cultures in an immersive manner. Design ethnography or digital ethnography is not as extreme; researchers and designers only spend days or weeks observing users, instead of years. The operative word is observing &mdash; watching and listening. The payoff is that ethnography can inform and improve design decisions. You don’t need to wait for your next project to observe people. Instead, make it an everyday habit, and you will not only hone your powers of observation, but it will also gradually become second nature.</p>

<p>AI cannot do this because it relies on the limited data it is trained with, unlike people who have an unlimited ability to notice and observe new things all the time. Even if it could overcome that hurdle, without emotions and context, AI would not be able to understand the feelings and emotions involved in the people or situation being observed. We can observe a situation and understand the context and meaning behind it as we process what we are noticing and observing.</p>

<p>We can build our power of observation by taking the time to pay attention to people and their behavior. You can do this anytime &mdash; while you are in a coffee shop or waiting in the grocery checkout line. Get your nose out of that glowing rectangle, remove your headphones, and look around. While you may end up seeing others captivated by their own glowing rectangles, start observing the details:</p>

<ul>
<li>What type of phones are they using?</li>
<li>Are they passively consuming content or actively interacting with a game or person?</li>
<li>What emotions do you notice?</li>
</ul>

<p>When you start paying attention, you will be surprised by things you may have seen but not noticed or observed in the past. And the more you practice, the more natural it will become. Noticing and observing the world around you in new and different ways provides inspiration and helps reveal issues and patterns, leading to better ideas and solutions.</p>

<p><strong>Advantage</strong>: People</p>

<div class="partners__lead-place"></div>

<h2 id="heart">Heart</h2>

<p>The skills, behaviors, and habits to help you feel like a designer and create a <em>designerly</em> attitude include empathy and advocacy.</p>

<h3 id="be-empathetic">Be Empathetic</h3>

<p>My favorite definition of empathy is by Roman Krznaric in his book, <em>Empathy: Why It Matters, and How to Get It</em>:</p>

<blockquote>Empathy is the art of stepping imaginatively into the shoes of another person, understanding their feelings and perspectives, and using that understating to guide your actions.<br />&mdash; Roman Krznaric</blockquote>

<p>There are three types of empathy, according to psychologists Daniel Goleman and Paul Ekman:</p>

<ol>
<li>Cognitive,</li>
<li>Emotional,</li>
<li>Compassionate.</li>
</ol>

<p>The empathy that results in thinking, feeling, and doing are all important and have their place in our lives, but the empathy that results in doing, <strong>compassionate empathy</strong>, goes beyond understanding others and sharing their feelings by driving us to do what we can to help them. This helps us make a difference in people’s lives. I am talking about genuinely employing empathy, not doing it as lip service or checking a box off in the process.</p>

<p>Successful designers routinely use empathy in <strong>human-centered design</strong>. They start with an understanding of the people they are designing for by observing them and immersing themselves in their users’ environments. Designers then apply that deep understanding to design products and experiences that work for those users.</p>

<p>While AI can measure people’s emotions from their expressions and is being <a href="https://www.wired.com/story/artificial-intelligence-empathy/">trained to mimic human emotions</a>, AI machines and tools don’t have consciousness and cannot understand or experience emotions. AI also lacks personal, shared experiences that allow us to show empathy to varying degrees.</p>

<p>Even if you are not empathetic by nature, try building it over the coming days with one or more interactions with others:</p>

<ul>
<li><strong>Suspend judgment.</strong><br />
It is difficult to be empathetic if you are mentally judging the other person. If you voice that judgment, you will not be able to be empathetic, and the other person may stop sharing with you.</li>
<li><strong>Listen attentively with your eyes and ears.</strong><br />
Engage more than one sense to listen actively so that you can respond deeply. Pay attention to <em>what</em> the other person is saying, not how you need to respond. Be completely present with the other person, putting aside our modern distractions.</li>
</ul>

<p>Being empathetic takes practice for most of us. Be empathetic.</p>

<p><strong>Advantage:</strong> People</p>

<h3 id="advocate-for-others">Advocate For Others</h3>

<p>User advocacy is at the heart of <em>designerly</em> skills and behaviors. The skills and behaviors of curiosity, observance, and empathy create a deep understanding of users and their needs, but that is only the beginning. User advocacy brings all of the above to life and turns that respect for the user into action to address their needs. It also shares that understanding with others involved so they, too, can identify with users.</p>

<p>Being a user advocate means <strong>representing the interests of users in an ocean of competing interests</strong>. A user advocate represents the user throughout the design process, giving the user a voice, bringing them to life, and making the impersonal user personal.</p>

<p>Without curiosity, observation, and empathy, AI is unable to use those skills and behaviors to be an advocate. AI also lacks the creativity to come up with solutions to address the needs of others. AI can be programmed to follow rules and guidelines to protect people, an increasingly important area of ethical AI. If you’ve been following the news, this has led to mixed results, sometimes <a href="https://www.tomsguide.com/opinion/bing-chatgpt-goes-off-the-deep-end-and-the-latest-examples-are-very-disturbing">going off the deep end</a> in some instances. No points for guessing that AI cannot make ethical judgment calls on its own.</p>

<p>However, people can do that. And we can manifest it in design by doing what’s right for users. I previously wrote about <a href="https://www.smashingmagazine.com/2018/06/ethics-of-persuasion/#principles-and-questions">principles for designers</a>; two of them summarized below:</p>

<ul>
<li><strong>Do no harm.</strong><br />
Your decisions may affect the minds, behavior, and lives of your users and others around them, so be alert and guard against misusing the influence of your designs. Ask yourself: Would you be comfortable with someone else using your design on you, your parents, or your child?</li>
<li><strong>Be aware of your responsibility to your intended users, unintended users, and society at large.</strong><br />
Accept appropriate responsibility for the outcomes of your design. During design, follow up answers to “How might we…?” with “At what cost?”</li>
</ul>

<p>Remind yourself that you are not the user and use your knowledge of the user to represent the user when they are absent. Advocate for them.</p>

<p><strong>Advantage</strong>: People</p>

<div class="partners__lead-place"></div>

<h2 id="hands">Hands</h2>

<p>The skills, behaviors, and habits to help you act like a designer are brought to life through visual communication and collaboration.</p>

<h3 id="communicate-visually">Communicate Visually</h3>

<p><strong>Storytelling is an important skill</strong> that vividly paints a picture in people’s minds, driving them to action. It converts words to a visual that people will remember, but even then, different people may all visualize the same thing differently. This happens whether you’re listening to your favorite inspirational speaker or reading your favorite fiction author. No matter how painstakingly a speaker or author describes a character or a situation, chances are high that two people sitting right next to each other both have different images in their minds. However, when there is an accompanying image or visual, people are literally on the same page (or slide, graph), which slashes the risk of them imagining different things. That’s the power of thinking and communicating visually.</p>

<p>Not all designers are artistic, but <strong>you don’t have to be artistic to be a visual thinker or communicator</strong>. Even a rough sketch on a whiteboard or a notepad can often communicate information faster than the written or verbal form. The aim is to make ideas tangible quickly, to get to the right idea faster. User researchers and designers commonly use visualizations to help them make sense of data and come up with new ideas.</p>

<p>Without physical senses, AI cannot think or communicate visually. Without emotions, the ability to understand context, and creativity, AI cannot ‘read the room’ or come up with ideas outside its dataset and communicate outside its current language abilities, making visual communication impossible. However, people can use AI as a tool to communicate visually, especially with tools that convert text prompts to images.</p>

<p>Next time you describe something, instead of writing a page of instructions or talking it out, use a quick sketch. Describing a process? Boxes and arrows are very powerful. Talking about a screen or two? A rough layout, highlighting the important parts, along with an arrow showing how you get from one to another, is more powerful. Or a quick screen recording. Sketching not your thing? Use images. I’ve been known to use LEGO photography in my articles and presentations. You can also mock up something without advanced design tools. For instance, I had a non-designer boss who communicated visually using PowerPoint. And if you are in the mood to explore and experiment, try one of the many AI text-to-image generators.</p>

<p>Show. Don’t only tell.</p>

<p><strong>Advantage</strong>: People</p>

<h3 id="collaborate">Collaborate</h3>

<p>We can achieve much more, much faster, working together. It is uncommon for a single person to come up with the best solution by themselves. Gone are the days of the lone designer working on a solution by themselves. No single person or discipline has the answer to all problems, design or otherwise. It usually takes a team from different disciplines and backgrounds to solve big problems.</p>

<p>A multi-disciplinary team working together toward a common goal is an example of collaboration. This brings different perspectives into the creation process, from idea generation to providing feedback and validation during the creation process.</p>

<p>Collaboration relies on <strong>understanding and navigating social dynamics</strong>. While some people struggle with that, AI fails. Ditto for the ability to negotiate or compromise. Some people struggle with that too, but AI cannot unless specifically programmed to. Collaboration also requires the <strong>ability to adapt</strong> based on live inputs, feedback, or the situation, which traditional AI has limited capability to do beyond its training phase.</p>

<p>That said, AI can support collaboration if you think about people collaborating with AI tools. We’ve seen how AI tools can generate designs, logos, layouts, code, write content, do homework, and generate legal documents. But there are enough examples of it being plain wrong, which is why we should use them as assistants in our workflow.</p>

<p><a href="https://www.sogeti.com/ai-for-qe/section-4-2-automate-scale/chapter-4/">AI tools can support the efforts of designers and researchers</a> by reducing manual human effort (e.g., transcribing), making people more efficient and saving time (e.g., text-based video editing), providing machine learning-based insight (e.g., attention prediction), and augmenting human effort (e.g., AI evaluation). Just remember that AI is not perfect, and there are plenty of mistakes and errors, as shown below (I’m not India-based, did not write <em>The UX Book</em>, and never taught at the schools mentioned).</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="538"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png"
			
			sizes="100vw"
			alt="ChatGPT output on Lyndon Cerejo"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      ChatGPT output (vanity or otherwise) is not always correct or accurate. (<a href='https://files.smashing.media/articles/skills-designers-ai-cant-replicate/5-chatgpt-output.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Next time you are working on a project, get others involved. These could be different departments, different specialties, different backgrounds, and, where appropriate, even customers &mdash; maybe even AI.</p>

<p><strong>Advantage</strong>: People</p>

<h2 id="conclusion">Conclusion</h2>

<p>I’ll use an analogy from the restaurant industry of chefs and cooks to draw parallels between humans and AI. Chefs can cook meals by themselves, but they are more effective when they focus on the strategic work of planning the menu, overseeing the cooks who tactically follow recipes, sometimes improvising, and applying the finishing touches before the meal is served to customers. Robots have replaced parts of what cooks do and technology that may suggest recipes and meals, but it still needs the chef to make the final decisions.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="488"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png"
			
			sizes="100vw"
			alt="Playground AI image generation"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Playground AI image generation based on prompts of creatives using AI in their workflow. (<a href='https://files.smashing.media/articles/skills-designers-ai-cant-replicate/4-playground-ai-image-generation.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Artificial Intelligence is changing the way we work and live, making us more efficient. As designers, we can use AI to support ideation, analyze data, generate variations, and predict behavior based on patterns. This will free us up to <strong>focus on more strategic aspects of design</strong>, using the <em>designerly</em> skills above which are impossible to duplicate, and for which people have the advantage over AI. We can use AI to make us more efficient and allow us to do what we do best &mdash; understand our users, stakeholders, and real-world constraints and then collaborate with others to design successful solutions. What we do won’t change as much as how we do it, with AI augmenting, instead of replacing us.</p>

<p><strong>Advantage</strong>: People</p>

<p>AI cannot be trained to mimic these <em>designerly</em> skills the way we can practice and develop them because it is not conscious, cannot adapt, and does not have the experiences, emotions, or intuition that we have. AI can artificially mimic some but cannot match human abilities in these areas. Skills like curiosity, observation, empathy, advocacy, visual communication, and collaboration are key non-technical skills to help us use the head, heart, and hands together to be more <em>designerly</em> and thrive in a world of AI.</p>

<h3 id="resources">Resources:</h3>

<h4 id="links">Links</h4>

<ul>
<li>“<a href="https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/">What Is ChatGPT Doing … and Why Does It Work?</a>,” Stephen Wolfram<br />
Yes, AI is more than ChatGPT, but this is the AI tool that’s currently viral</li>
<li>“<a href="https://www.nytimes.com/2023/02/16/technology/chatbots-explained.html">Why Chatbots Sometimes Act Weird and Spout Nonsense</a>,” Cade Metz</li>
<li>“<a href="https://aeon.co/essays/to-understand-ai-sentience-first-understand-it-in-animals">What Has Feelings?</a>,” Kristin Andrews and Jonathan Birch</li>
<li>“<a href="https://www.emerald.com/insight/content/doi/10.1108/14676370810842193/full/html">Achieving Transformative Sustainability Learning: Engaging Head, Hands And Heart</a>,” Yona Sipos, Bryce Battisti, Kurt Grimm</li>
<li>“<a href="https://www.smashingmagazine.com/2018/06/ethics-of-persuasion/">The Ethics Of Persuasion</a>,” Lyndon Cerejo</li>
<li>“<a href="https://www.smashingmagazine.com/2022/12/future-design-human-powered-ai-driven/">The Future Of Design: Human-Powered Or AI-Driven?</a>,” Keima Kai</li>
<li>“<a href="https://www.smashingmagazine.com/2023/03/ai-technology-transform-design/">How AI Technology Will Transform Design</a>,” Nick Babich &amp; Gleb Kuznetsov</li>
</ul>

<h4 id="books">Books</h4>

<ul>
<li><a href="https://www.amazon.com/Designerly-Ways-Knowing-Nigel-Cross/dp/1846283000">Designerly Ways Of Knowing</a>, Nigel Cross</li>
<li><a href="https://www.amazon.com/Curious-Desire-Know-Future-Depends/dp/0465097626/">Curious: The Desire To Know and Why Your Future Depends On It</a>, Ian Leslie</li>
<li><a href="https://www.amazon.com/Empathy-Why-Matters-How-Get/dp/0399171401/">Empathy: Why It Matters, And How to Get It</a>, Roman Krznaric</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(cc, yk, il)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Nick Babich &amp; Gleb Kuznetsov</author><title>How AI Technology Will Transform Design</title><link>https://www.smashingmagazine.com/2023/03/ai-technology-transform-design/</link><pubDate>Fri, 03 Mar 2023 11:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2023/03/ai-technology-transform-design/</guid><description>The rise of AI-generated art makes design practitioners wonder if AI will replace designers. In this article, Nick and Gleb shed light on the current state of design, answer common questions designers have about AI tools, and share practical tips on how designers can make the most of using AI tools.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2023/03/ai-technology-transform-design/" />
              <title>How AI Technology Will Transform Design</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>How AI Technology Will Transform Design</h1>
                  
                    
                    <address>Nick Babich &amp; Gleb Kuznetsov</address>
                  
                  <time datetime="2023-03-03T11:00:00&#43;00:00" class="op-published">2023-03-03T11:00:00+00:00</time>
                  <time datetime="2023-03-03T11:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>AI-generated art is everywhere on the web. If you are an active Instagram, Twitter, or Pinterest user, you likely saw interesting artworks created using text-based tools like <a href="https://openai.com/dall-e-2/">DALLE</a>, <a href="https://www.midjourney.com/home/">Midjourney</a>, or <a href="https://stability.ai/blog/stable-diffusion-public-release">Stable Diffusion</a>. The magic of these tools is that to generate images, all you need to do is to provide a string of text that describes what the image is all about. Many AI-generated works look stunning, but it’s only the beginning. In the foreseeable future, AI tools will be so intuitive that everyone can express their ideas. The rise of tools that have AI at their core makes design practitioners wonder if AI will replace designers.</p>

<p>In this article, we will overview the current state of design, answer common questions designers have about AI tools and share practical tips on how designers can make the most of using AI tools.</p>

<h2 id="design-tools-learning-curve-and-creativity">Design Tools Learning Curve And Creativity</h2>

<p>Mastering any skill takes time, and design is no exception. Designers have a lot of great tools in their arsenal, but the process of honing design talent takes years. You need to invest years of your life to get to the point when you can create decent artwork.</p>

<figure><a href="https://files.smashing.media/articles/ai-technology-transform-design/11-glass-reflection-cgi.gif"><img src="https://files.smashing.media/articles/ai-technology-transform-design/11-glass-reflection-cgi.gif" width="600" height="450" alt="Human-made design: glass reflection CGI" /></a><figcaption>Human-made design: glass reflection CGI. A few seconds of rendering was 87 hours on 5 RTX. (Image by <a href="https://dribbble.com/shots/20098860-Glass-reflection-CGI-by-Milkinside">Gleb Kuznetsov</a>)</figcaption></figure>

<p>No matter how creative you are, you must spend time creating something using your hand. Most of the time, it’s impossible to go from idea to solution in a few minutes. As a result, sometimes it feels like design is 95% craft and only 5% art.</p>

<p>Much energy goes into the visualization of ideas, and it can be very frustrating to learn that your idea doesn’t resonate with the audience. Once you publish your work, you might learn that it’s not something your audience wants. An unsuccessful design pitch leads to a situation when your work goes straight to the garbage bin.</p>

<p>But in the near future, you will be able to use shortcuts and go from your idea to the final work in a minute rather than hours or days. You will be able to avoid the tedious process of physically making art and instead become a visioner who tells the computer what you want to build and lets the computer do the work for you. And you can experience the power of AI tools even today. Use Dalle.2 by OpenAI, Midjourney, or Stable Diffusion.</p>

<p>Let’s answer a few popular questions that designers have regarding AI.</p>

<h2 id="can-i-take-credit-for-artworks-created-by-ai">Can I Take Credit For Artworks Created By AI?</h2>

<p>The answer is yes, you can, but you shouldn’t. Many AI artwork generation tools available on the market don’t give designers much freedom to control the process of artwork creation. As a designer, you explain your intention to the AI system through plain words and let the tool do its magic. You have limited or no information on how the tool works.</p>

<p>Because modern AI tools don’t give you much freedom to impact the design direction, the final result misses the human touch. Right now, you cannot convey a lot of personality in works generated by AI tools. At the same time, it doesn’t mean this will be true in the future. We will likely see the tools that give designers more control over the process of creating visual assets.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="562"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png"
			
			sizes="100vw"
			alt="AI-generated design: 3D sphere with sea wave"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: 3D sphere with sea wave. Image by Gleb Kuznetsov created using Midjourney. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/7-ai-generated-design-3d-sphere-sea-wave.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="will-ai-take-my-job">Will AI Take My Job?</h2>

<p>Many professional artists panic because they see how good artificial intelligence has become at creating artwork. AI-generated art fills the market and takes potential clients. Instead of hiring a human digital artist, many companies ‘hire’ AI to do the job because it can do design work for a fraction of the cost. This trend not only takes jobs but also lowers the market value of the art &mdash; the artworks become less valuable because people see how easy it is to generate artwork using AI.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="648"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png"
			
			sizes="100vw"
			alt="AI-generated design: Illustrations of airplanes"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: Illustrations of airplanes. Image by Nick Babich created using Stable Diffusion 2.1. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/14-ai-generated-design-illustrations-airplanes.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>What happens right now is a predictable situation. It’s just how business works. If a business can save money by following a more effective approach, it will do it. During the industrial revolution of the 19th century, some English textile workers intentionally destroyed textile machines because they were afraid that machines would replace them. Of course, machines replaced some of the roles (typically, roles where heavy lifting or monotonous work was required), but they didn&rsquo;t replace humans. The same is true for AI tools. AI won’t completely replace human ingenuity; it will complement human potential.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aThe%20true%20power%20of%20AI%20is%20not%20about%20replacing%20humans%20but%20instead%20giving%20them%20a%20massive%20boost%20in%20productivity.%0a&url=https://smashingmagazine.com%2f2023%2f03%2fai-technology-transform-design%2f">
      
The true power of AI is not about replacing humans but instead giving them a massive boost in productivity.

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>If you think about the primary reason why people invented new tools in the first place, it becomes evident that <strong>work efficiency</strong> was the number one reason &mdash; the same works for AI. AI will help us work more efficiently.</p>

<p>The quality of your ideas and your ability to understand user problems and create solutions that help people is critically important at any age of product design, including the age of AI design.</p>

<h2 id="will-ai-tools-lead-us-to-generic-design">Will AI Tools Lead Us To Generic Design?</h2>

<p>When designers use the same tools and data inputs, they could easily end up making a homogenized design that looks generic.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="419"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png"
			
			sizes="100vw"
			alt="Three houses created by AI that look generic"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Even though these images were created by different authors using different prompts, they look very similar because they use the same model, Lexica Aperture v2. (Image by <a href='https://lexica.art'>Lexica.art</a>) (<a href='https://files.smashing.media/articles/ai-technology-transform-design/16-ai-generic-design-samples.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>But the problem of homogenized design is not new. <a href="https://www.intercom.com/blog/the-dribbblisation-of-design/">Dribbblisation of design</a> was a massive topic in the design field for a few years. Many people in the industry worry about the situation when a vast majority of the product design work on Dribbble looks the same (the same styles are applied).</p>

<p>Will the problem become worse when AI tools are popularized? The answer is no. If you look closer at the artists who publish their work at Dribbble, you will notice that there aren’t many artists who set trends. Once a new trend emerges and it resonates with the audience, many designers start to follow it and designs that look trendy.</p>

<blockquote>“Out in the sun, some painters are lined up. The first is copying nature; the second is copying the first; the third is copying the second.”<br />&mdash; Paul Gauguin</blockquote>

<p>AI tools won’t replace all designers anytime soon because imagination and creativity will still be the <strong>powerful properties of the artist’s mind</strong>. Until AI technology becomes sophisticated enough to do creative thinking, we don’t have to worry about creating AI trends. The point is, soon, it will be possible to curate the data you will provide as an input to the system, and the AI system will learn from you, so the results will include a lot of your personality.</p>

<h2 id="can-we-face-legal-troubles-using-ai-tools">Can We Face Legal Troubles Using AI Tools?</h2>

<p>Early in 2023, a group of artists filed <a href="https://www.polygon.com/23558946/ai-art-lawsuit-stability-stable-diffusion-deviantart-midjourney">a class-action lawsuit against</a> Midjourney and Stability AI, claiming copyright infringement. Both Midjourney and Stability AI were trained using billions of internet images, and this suit alleges that the companies behind those tools “violated the rights of millions of artists” who created the original images. Whether or not AI art tools violate copyright law can be challenging to determine because the database used for training is massing (billions of images). But one thing is for sure &mdash; the AI tools create <em>new</em> images based on the knowledge they learned due to the training.</p>

<p>Can designers face legal troubles using AI tools in the future? So far, there is no single correct answer to this question, but the world is quickly embracing AI art (i.e., stock photo banks <a href="https://www.theverge.com/2022/10/25/23422359/shutterstock-ai-generated-art-openai-dall-e-partnership-contributors-fund-reimbursement">will start selling AI-generated stock imagery</a>), and we will likely have more clear rules on how to use AI-generated images in the future.</p>

<div class="partners__lead-place"></div>

<h2 id="the-new-chapter-in-design-co-creation-with-ai">The New Chapter In Design: Co-creation With AI</h2>

<p>When Steve Jobs explained the power of computers, he said,</p>

<blockquote>“What a computer is to me is it's the most remarkable tool that we've ever come up with, and it's the equivalent of a bicycle for our minds.”<br />&mdash; Steve Jobs</blockquote>

<p>It’s possible to rephrase this quote in the context of AI, saying that AI is a bicycle for our creativity &mdash; our ability to create something new. Creativity is based on life experiences and ideas that creators have. AI cannot replace humans because it uses the work that humans create as an input to produce new designs. But AI can boost creativity greatly because it becomes a sort of ‘second brain’ that works with a creator and provides new inputs.</p>

<p>Of course, modern AI tools don’t give us much freedom to tweak the AI engine, but they still give us a lot of power. They can provide us with ideas we didn&rsquo;t think of. It makes AI an excellent tool for discovery and exploration.</p>

<p>Here are just a few directions of how humans and machines can work together in the future:</p>

<h3 id="conduct-visual-exploration">Conduct Visual Exploration</h3>

<p>AI tools capture the collective experience of millions of images from photo banks and give creators a unique opportunity to quickly explore the desired direction without spending too much energy. AI becomes your creative assistant during the process of visual exploration. You prompt the system with various directions you want to pursue and let the system generate various outcomes for you. You evaluate each direction and choose the best to pursue. The process of co-creation can be iterative. For example, once you see a particular design direction, you can tell the system to dive into it to explore it.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="573"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png"
			
			sizes="100vw"
			alt="AI-generated design: A glance at mountain peaks"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: A glance at mountain peaks. Image by Gleb Kuznetsov created using Midjourney. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/1-ai-generated-design-glance-mountain-peaks.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>There are two ways you can approach visual exploration, either by following text-to-image or image-to-image scenarios.</p>

<p>In an <strong>image-to-text scenario</strong>, you provide a prompt and tweak some settings to produce an image. Let’s discuss the most important properties of this scenario:</p>

<ul>
<li><strong>Prompt</strong><br />
A prompt is a text string that we submit to the system so that it can create an image for you. Generally, the more specific details you provide, the better results the system will generate for you. You can use resources like <a href="https://lexica.art/">Lexica</a> to find a relevant prompt.</li>
<li><strong>Steps</strong><br />
Think of steps as iterations of the image creation process. During the first steps, the image looks very noisy, and many elements in the image are blurry. The system refines it with every iteration by altering the visual details of the image. If you use Stable Diffusion, set steps to 60 or more.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="153"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png"
			
			sizes="100vw"
			alt="Sampling steps in Stable Diffusion"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Sampling steps in Stable Diffusion. (Image by Stability AI) (<a href='https://files.smashing.media/articles/ai-technology-transform-design/4-sampling%20steps-stable-diffusion.png'>Large preview</a>)
    </figcaption>
  
</figure>

<ul>
<li><strong>Seed</strong><br />
You can use the Seed number to create a close copy of a specific picture. For example, if you want to generate a copy of the image you saw on Lexica, you need to specify the prompt and seed number of this image.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="446"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png"
			
			sizes="100vw"
			alt="Settings to specify the seed number"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Specifying the seed number to generate a close copy of the original image. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/12-settings-specify-seed-number-generate-close-copy-original-image.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In the <strong>image-to-image (img2img) scenario</strong>, AI will use your image as a source and produce variations of the image based on it. For example, here is how we can use a famous painting, <em>Under the Wave off Kanagawa</em>, as a source for Stable Diffusion.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="452"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png"
			
			sizes="100vw"
			alt="Painting ‘Under the Wave off Kanagawa’ as a source for Stable Diffusion"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Using image-to-image AI generation in Stable Diffusion. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/6-image-to-image-ai-generation-stable-diffusion.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>We can play with Image Strength by setting it close to 0 so that AI can have more freedom in the way it can interpret the image. As you can see below, the image that the system generated for us has only a few visual attributes of the original image.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="457"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png"
			
			sizes="100vw"
			alt="Stable Diffusion with Image Strength set to 5% resulted in an image of a Japanese woman in a traditional costume"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Running Stable Diffusion with Image Strength set to 5%. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/5-ai-stable-diffusion-image-strength-5percent.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Or set Image Strength up to 95% so that AI can only create a slightly different version of the original image.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="560"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png"
			
			sizes="100vw"
			alt="Stable Diffusion with Image Strength set to 95% resulted in a very similar image to the painting ‘Under the Wave off Kanagawa’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Running Stable Diffusion with Image Strength set to 95%. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/13-ai-stable-diffusion-image-strength-95percent.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Our experiment clearly proves that AI tools have an opportunity to <strong>replace mood boards</strong>. You no longer need to create mood boards (at least do it manually using tools like Pinterest) but rather tell the system to find ideas you want to explore.</p>

<h3 id="create-a-complete-design-for-your-product">Create A Complete Design For Your Product</h3>

<p>AI can be an excellent tool to implement ideas quickly. Today we have a long and painful product design process. Going from idea to implementation takes weeks. But with AI, it can take minutes. You can create a storyboard with your product, specify the context of use for your future product, and let AI design a product.</p>

<p>Providing these details is important because AI should understand the nature of the problem you’re trying to solve with this design. For example, below are the visuals that you can create right now using a tool called Midjourney. All you need to do is to specify the text prompt <em>“mobile app UI design, hotel booking, Dribbble, Behance &ndash;v 4 &ndash;q 2”</em>.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="82"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png"
			
			sizes="100vw"
			alt="Midjourney tool with the text prompt ‘mobile app UI design, hotel booking, Dribbble, Behance --v 4 --q 2’"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Midjourney is a text-to-image tool currently available as chat in Discord. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/2-example-midjourney-text-to-image-tool.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>I think that part “mobile app UI design, hotel booking, Dribbble, Behance” is self-explanatory. But you might wonder what <code>–v</code> and <code>–q</code> means.</p>

<ul>
<li><code>–v</code> means a version of the Midjourney.<br />
On November 10, 2022, the alpha iteration of version 4 was released to users.</li>
<li><code>–q</code> means quality.<br />
This setting specifies how much rendering quality time you want to spend. The default number is 1. Creating the image in higher values takes more time and costs more.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="518"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png"
			
			sizes="100vw"
			alt="AI-generated design: A concept of a hotel booking app created by Midjourney"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: A concept of a hotel booking app created by Midjourney. Image by Nick Babich. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/3-ai-generated-design-concept-hotel-booking-app-midjourney.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>It’s important to mention a couple of common issues that images generated by Midjourney have:</p>

<ul>
<li><strong>Gibberish texts</strong><br />
You likely noticed that the text on mobile app screens in the above example is not English.</li>
<li><strong>Extra fingers</strong><br />
If you generate an image of a person, you will likely see extra fingers on their hands and legs.</li>
</ul>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="533"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png"
			
			sizes="100vw"
			alt="AI-generated design: two people shake hands with extra fingers on them"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: two people shake hands. Image by Nick Babich. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/10-ai-generated-design-two-people-shake-hands.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>In the foreseeable future, a design created by AI will automatically inherit all industry best practices, freeing designers from time-consuming activities like UI design audits. AI tools will significantly <strong>speed up the user research and design exploration phase</strong> because the tools analyze massive amounts of data and can easily provide relevant details for a particular product (i.e., create a user persona, draft a user journey, and so on). As a result, it will be possible to develop new products right during brainstorming sessions, so designers are no longer limited to low-fidelity wireframes or paper sketches. The product team members will be able to see how the product will look and work right during the session.</p>

<h3 id="create-virtual-worlds-and-virtual-people-in-it">Create Virtual Worlds And Virtual People In It</h3>

<p>No doubt that the metaverse will be the next big thing. It will be the most sophisticated digital platform humans have ever created, and content production will be an integral part of the platform design. Designers will have to find ways to speed up the creation of virtual environments and activities in them. At first, designers will likely try to recreate real-world places in the virtual world, but after that, they will rely on AI to do the rest. The role of designers in the metaverse will be more like a director (a person who will tailor the results) rather than a craftsman who does it with their hand. Imagine that you can create large virtual areas such as cities and get a sense of the scale of the city by experiencing it.</p>














<figure class="
  
  
  ">
  
    <a href="https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="512"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png"
			
			sizes="100vw"
			alt="AI-generated design: High-tech patient room space"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      AI-generated design: High-tech patient room space. Image by Gleb Kuznetsov created using Midjourney. (<a href='https://files.smashing.media/articles/ai-technology-transform-design/8-ai-generated-design-high-tech-patient-room-space.png'>Large preview</a>)
    </figcaption>
  
</figure>

<div class="partners__lead-place"></div>

<h2 id="it-s-time-to-open-a-new-chapter-in-design">It’s Time To Open A New Chapter In Design</h2>

<p>AI-powered design solutions have an opportunity to become much more than just tools designers use to create assets. They have the chance to become a natural extension of the team. I believe that the true power of AI tools will shine when tools will learn from a creator and will be able to reflect the creator’s personality in the final design. Next-gen AI will learn both <em>about</em> you and <em>from</em> you and create works that functionality and aesthetics meet your needs and taste. As a result, the output the tools will produce will have a more authentic human fingerprint.</p>

<p>The future of design is bright because technology will allow more people to express their creativity and make our world more interesting and richer.</p>

<h3 id="further-reading-on-smashingmag">Further Reading On SmashingMag</h3>

<ul>
<li>“<a href="https://www.smashingmagazine.com/2022/12/future-design-human-powered-ai-driven/">The Future Of Design: Human-Powered Or AI-Driven?</a>”, Keima Kai</li>
<li>“<a href="https://www.smashingmagazine.com/2019/09/ai-climate-change/">How AI Is Helping Solve Climate Change</a>”, Nicholas Farmen</li>
<li>“<a href="https://www.smashingmagazine.com/2017/08/ai-chatbot-web-speech-api-node-js/">Building A Simple AI Chatbot With Web Speech API And Node.js</a>”, Tomomi Imura</li>
<li>“<a href="https://www.smashingmagazine.com/2017/01/algorithm-driven-design-how-artificial-intelligence-changing-design/">Algorithm-Driven Design: How Artificial Intelligence Is Changing Design</a>”, Yury Vetrov</li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(yk, il)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Knut Melvær</author><title>Thoughts On Markdown</title><link>https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/</link><pubDate>Fri, 18 Feb 2022 10:30:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/</guid><description>Markdown in all its flavors, interpretations, and forks won’t go away. However, it’s important to look at emerging content formats that try to encompass modern needs. In this article, Knut shares his advice against Markdown by looking back on why it was introduced in the first place, and by going through some of the major developments of content on the web.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/" />
              <title>Thoughts On Markdown</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Thoughts On Markdown</h1>
                  
                    
                    <address>Knut Melvær</address>
                  
                  <time datetime="2022-02-18T10:30:00&#43;00:00" class="op-published">2022-02-18T10:30:00+00:00</time>
                  <time datetime="2022-02-18T10:30:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Markdown is second nature for many of us. Looking back, I remember starting typing in Markdown not long after John Gruber released his first Perl-based parser back in 2004 after collaborating on the language with Aaron Swartz.</p>

<blockquote>"Markdown’s syntax is intended for one purpose: to be used as a format for writing for the web."<br /><br />&mdash; <a href="https://daringfireball.net/projects/markdown/syntax#html">John Gruber</a></blockquote>

<p>That’s almost 20 years ago — yikes! What started as a more writer- and reader-friendly syntax for HTML has become a darling for how to write and store technical prose for programmers and tech-savvy people.</p>

<p>Markdown is a signifier for the developer and text-tinkerer culture. But since its introduction, the world of digital content has also changed. While Markdown is still fine for some things, I don’t believe it’s should be the go-to for content anymore.</p>

<p>There are two main reasons for this:</p>

<ol>
<li>Markdown wasn’t designed to meet today’s needs of content.</li>
<li>Markdown holds editorial experience back.</li>
</ol>

<p>Of course, this stance is influenced by working for a platform for structured content. At <a href="https://www.sanity.io/">Sanity.io</a>, we spend most of our days thinking about how content as data unlocks a lot of value, and we spend a lot of time thinking deeply about editor experiences, and how to save people time, and make working with digital content delightful. So, there’s skin in the game, but I hope I’m able to portray that even though I’ll argue against Markdown as the go-to format for content, I still have a deep appreciation for its significance, application, and legacy.</p>

<p>Before my current gig, I worked as a technology consultant at an agency where we had to literally fight CMSes that locked our client’s content down by embedding it in presentation and complex data models (yes, even the open-source ones). I have observed people struggle with Markdown syntax, and be demotivated in their jobs as editors and content creators. We have spent hours (and client’s money) on building custom tag-renderers that were never used because people don’t have time or motivation to use the syntax. Even I, when highly motivated, have given up contributing to open-source documentation because the component-based Markdown implementation introduced too much friction.</p>

<p>But I also see the other side of the coin. Markdown comes with an impressive ecosystem and from a developer’s standpoint, there is an elegant simplicity to plain-text files and easy-to-parse syntax for people who are used to reading code. I once spent days building an impressive <code>MultiMarkdown</code>-&gt;<code>LaTeX</code>-&gt;<code>real-time-PDF-preview-pipeline</code> in Sublime Text for my academic writing. And it makes sense that a <code>README.md</code> file can be opened and edited in a code editor and rendered nicely on GitHub. There’s little doubt that Markdown brings convenience for developers in some use cases.</p>

<p>That is also why I want to build my advice against Markdown by looking back on why it was introduced in the first place, and by going through some of the major developments of content on the web. For many of us, I suspect Markdown is something we just take for granted as a “thing that exists.” But all technology has a history and is a product of human interaction. This is important to remember when you, the reader, develop technology for others to use.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="flavors-and-specifications">Flavors And Specifications</h2>

<p>Markdown was designed to make it easier for web writers to work with articles in an age where web publishing required writing HTML. So, the intent was to make it simpler to interface with text formatting in HTML. It wasn’t the first simplified syntax on the planet, but it was the one that gained the most traction over the years. Today, the usage of Markdown has grown far beyond its design intent to be a simpler way to read and write HTML, to become an approach of marking up plain text in a lot of different contexts. Sure, technologies and ideas can evolve beyond their intent, but the tension in today’s use of Markdown can be traced to this origin and the constraints put into its design.</p>

<p>For those who aren’t familiar with the syntax, take the following HTML content:</p>

<div class="break-out">

<pre><code class="language-html">&lt;p&gt;The &lt;a href=”https://daringfireball.net/projects/markdown/syntax#philosophy”&gt;Markdown syntax&lt;/a&gt; is designed to be &lt;em&gt;easy-to-read&lt;/em&gt; and &lt;em&gt;easy-to.write&lt;/em&gt;.&lt;/p&gt;</code></pre>

</div>

<p>With Markdown, you can express the same formatting as:</p>

<div class="break-out">

<pre><code class="language-markdown">The [Markdown syntax](https://daringfireball.net/projects/markdown/syntax#philosophy) is designed to be &#95;easy-to-read&#95; and &#95;easy-to-write&#95;.</code></pre>

</div>

<p>It’s like a law of nature that technology adoption comes with the pressure to evolve and add features to it. Markdown’s increasing popularity meant that people wanted to adapt it for their use cases. They wanted more features like support for footnotes and tables. The original implementation came with an opinionated stance, which at the time were reasonable for what the design intent was:</p>

<blockquote>"For any markup that is not covered by Markdown’s syntax, you simply use HTML itself. There’s no need to preface it or delimit it to indicate that you’re switching from Markdown to HTML; you just use the tags."<br /><br />&mdash; <a href="https://daringfireball.net/projects/markdown/syntax#html">John Gruber</a></blockquote>

<p>In other words, if you want a table, then use <code>&lt;table&gt;&lt;/table&gt;</code>. You’ll find that this is still the case for the original implementation. One of Markdown’s spiritual successors, <a href="https://mdxjs.com/">MDX</a>, has taken the same principle but extended it to <a href="https://react.dev/learn/writing-markup-with-jsx">JSX</a>, a JS-based templating language.</p>

<h3 id="from-markdown-to-markdown">From Markdown To Markdown?</h3>

<p>It can look like Markdown’s appeal for many wasn’t so much its tie-in to HTML, but the ergonomics of plaintext and simple syntax for formatting. Some content creators wanted to use Markdown for other use cases than simple articles on the web. Implementations like <a href="https://fletcherpenney.net/multimarkdown/">MultiMarkdown</a> introduced affordances for academic writers who wanted to use plain text files but needed more features. Soon you would have a range of writing apps that accepted Markdown syntax, without necessarily turning it into HTML or even using the markdown syntax as a storage format.</p>

<p>In a lot of apps, you’ll find editors that give you a limited set of formatting options, and some of them are more “inspired” by the original syntax. In fact, one of the feedbacks I got on a draft of this article was that by now, “Markdown” should be lower-cased, since it has become so common, and to make it distinct from the original implementation. Because what we recognize as markdown has also become very diverse.</p>

<h3 id="commonmark-an-attempt-to-tame-markdown">CommonMark: An Attempt To Tame Markdown</h3>

<p>Like ice cream, Markdown comes in a lot of flavors, some more popular than others. When people started to fork the original implementation and add features to it, two things happened:</p>

<ol>
<li>It became more unpredictable what you as a writer could and couldn’t do with Markdown.</li>
<li>Software developers had to make decisions of what implementation to adopt for their software. The original implementation also contained <a href="https://johnmacfarlane.net/babelmark2/faq.html#what-is-this-for">some inconsistencies</a> that added friction for people who wanted to use it programmatically.</li>
</ol>

<p>This started conversations about formalizing Markdown into a specification proper. Something that Gruber resisted, <a href="https://twitter.com/gruber/status/1475905192847622155?s=20">and still does</a>, interestingly, because he recognized that people wanted to use Markdown for different purposes and “<a href="https://twitter.com/gruber/status/507670720886091776?s=20">No one syntax would make all happy.</a>” It’s an interesting stance considering that Markdown translates to HTML, which is a specification that evolves to accommodate different needs.</p>

<p>Even though the original implementation of Markdown is covered by a <a href="https://daringfireball.net/projects/markdown/license">“BSD-like” license</a>, it also reads “Neither the name Markdown nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.” We can safely assume that most products that use “Markdown” as part of their marketing materials haven’t acquired this written permission.</p>

<p>The most successful attempt to bring Markdown into a shared specification is what is today known as <a href="https://commonmark.org/">CommonMark</a>. It was headed by <a href="https://blog.codinghorror.com/">Jeff Atwood</a> (known for co-founding <a href="https://stackoverflow.com/">Stack Overflow</a> and <a href="https://www.discourse.org/">Discourse</a>) and <a href="https://johnmacfarlane.net/">John McFarlane</a> (a professor of philosophy at Berkely who’s behind <a href="http://babelmark.github.io/">Babelmark</a> and <a href="https://pandoc.org/">pandoc</a>). They initially launched it as “Standard Markdown,” but <a href="https://blog.codinghorror.com/standard-markdown-is-now-common-markdown/">changed it to “CommonMark” after receiving criticism from Gruber</a>. Whose stance was consistent, the <em>intent</em> of Markdown is to be a simple authoring syntax that translates to HTML:</p>

<p><blockquote class="twitter-tweet"><p lang="en" dir="ltr"><a href="https://twitter.com/davewiner?ref_src=twsrc%5Etfw">@davewiner</a> And that’s what’s flawed with CommonMark. They want to make things easier for programmers as a primary goal. They miss the point.</p>&mdash; John Gruber (@gruber) <a href="https://twitter.com/gruber/status/509060983990812673?ref_src=twsrc%5Etfw">September 8, 2014</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>

<p>I think this also marked the point where Markdown had entered the public domain. Even though CommonMark isn’t branded as “Markdown,” (as per licensing) this specification is recognized and referred to as “markdown”. Today, you’ll find CommonMark as the underlying implementation for software like Discourse, GitHub, GitLab, Reddit, Qt, Stack Overflow, and Swift. Projects like <a href="https://unifiedjs.com/"><code>unified.js</code></a> bridges syntaxes by translating them into <a href="https://en.wikipedia.org/wiki/Abstract_syntax_tree">Abstract Syntax Trees</a>, also rely on CommonMark for their markdown support.</p>

<p>CommonMark has brought a lot of unification around how markdown is implemented, and in a lot of ways has made it simpler for programmers to integrate markdown support in software. But it hasn’t brought the same unification to how markdown is written and used. Take <a href="https://github.github.com/gfm/#introduction">GitHub Flavored Markdown</a> (GFM). It’s based on CommonMark but extends it with more features (like tables, task lists, and strikethrough). Reddit describes its “Reddit Flavored Markdown” as “<a href="https://www.reddit.com/wiki/markdown#wiki_new_reddit-flavored_markdown#wiki_more_about_markdown_at_reddit">a variation of GFM</a>,” and introduces features like syntax for marking up spoilers. I think we can safely conclude that both the group behind CommonMark and Gruber were right: it certainly helps with shared specifications, but yes, people want to use Markdown for different specific things.</p>

<h3 id="markdown-as-a-formatting-shortcut">Markdown As A Formatting Shortcut</h3>

<p>Gruber resisted formalizing Markdown into a shared specification because <a href="https://twitter.com/gruber/status/509060983990812673?s=20">he assumed it would make it less a tool for writers and more a tool for programmers</a>. We have already seen that even with the broad adoption of a specification, we don’t automatically get a syntax that predictably works the same across different contexts. And specifications like CommonMark, popular as it is, also have limited success. An obvious example is Slack’s markdown implementation (called <a href="https://api.slack.com/reference/surfaces/formatting#basics"><code>mrkdown</code></a>) that translates <code>*this*</code> to strong/bold, and not emphasis/italic, and doesn’t support the <code>[link](https://slack.com)</code> syntax, but uses <code>&lt;link|https://slack.com&gt;</code> instead.</p>

<p>You’ll also find that you can use Markdown-like syntax to initialize formatting in rich text editors in software like Notion, Dropbox Paper, Craft, and to a degree, Google Docs (e.g. <code>asterisk</code> + <code>space</code> on a new line will transform to a bulleted list). What’s supported and what’s translated to what varies. So, you can’t necessarily take your muscle memory with you across these applications. For some people, this is fine, and they can adapt. For others, this is a papercut and it keeps them from using these features. Which asks the question, who was Markdown designed for, and who are its users today?</p>

<h2 id="who-are-the-users-of-markdown-supposed-to-be">Who Are The Users Of Markdown Supposed To Be?</h2>

<p>We have seen markdown exist in a tension between different use cases, audiences, and notions of whom its users are. What started as a markup language for HTML-proficient web writers specifically, became a darling for developer types.</p>

<p>In 2014, web writers started to move away from moving files through parsers in Perl and FTP. Content Management Systems (CMSs) like WordPress, Drupal, and Moveable Type (which I believe Gruber still uses) had steadily grown to become the go-to tools for web publishing. They offered affordances like rich text editors that web writers could use in their browsers.</p>

<p>These rich text editors still assumed HTML and Markdown as the underlying rich text syntax, but they took away some of the cognitive overhead by adding buttons to insert this syntax in the editor. And increasingly, writers weren’t and didn’t have to be versed in HTML. I bet if you did web development with CMSs in the 2010s, you probably had to deal with “junk HTML” that came through these editors when people pasted directly from Word.</p>

<p>Today, I will argue that Markdown’s primary users are developers and people who are interested in code. It’s not a coincidence that <a href="https://www.vice.com/en/article/pa7nbn/slacks-new-rich-text-editor-shows-why-markdown-still-scares-people">Slack made the <code>WYSIWYG</code> the default input</a> mode once their software was used by more people outside of technical departments. And the fact that this was a controversial decision, so much that they had to bring it back as an option, shows how deep the love for markdown is in the developer community. There wasn’t much celebration of Slack trying to make it easier and more accessible for everyone. And this is the crux of the matter.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="172"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png"
			
			sizes="100vw"
			alt="A comment section on Slack with markdown."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8cccd8c9-388c-4b94-8b71-a051ec458990/1-thoughts-on-markdown.png'>Large preview</a>)
    </figcaption>
  
</figure>

<h2 id="the-ideology-of-markdown">The Ideology Of Markdown</h2>

<p>The fact that markdown has become the lingua franca writing style, and what most website frameworks cater to, is also the main reason I’ve been a bit skittish about publishing this. It’s often talked about as an inherent and undeniable good. Markdown has become a hallmark of being developer-friendly. Smart and skilled people have sunk a lot of collective hours in enabling markdown in all sorts of contexts. So, challenging its hegemony will surely annoy some. But hopefully, it can spawn some fruitful discussion about a thing that’s often taken for granted.</p>

<p>My impression is that the developer friendliness that people relate to Markdown has mostly to do with 3 factors:</p>

<ol>
<li>The comfortable abstraction of a plain text file.</li>
<li>There is an ecosystem of tooling.</li>
<li>You can keep your content close to your development workflow.</li>
</ol>

<p>I’m not saying that these stances are wrong, but I’ll suggest that they come with trade-offs and some unreasonable assumptions.</p>

<h3 id="the-simple-mental-model-of-a-plain-text-file">The Simple Mental Model Of A Plain Text File</h3>

<p>Databases are amazing things. But they have also had an earned reputation of being hard and inaccessible for frontend developers. I’ve known a lot of great developers who shy away from backend code and databases, because they represent complexity they don’t want to spend time on. Even with WordPress, which does a lot out of the box to keep you from having to deal with its database after setup, it was overhead of getting up and running.</p>

<p>Plain text files, however, are more tangible and are fairly simple to reason about (as long as you’re used to file management that is). Especially compared to a system that will break your content into multiple tables in a relational database with some proprietary structure. For limited use cases, like blog posts of simple rich text with images and links, markdown will get the job done. You can copy the file and stick it in a folder or check it into git. The content feels <em>yours</em> because of the tangibility of files. Even if they’re hosted on GitHub, which is a for-profit Software as a Service owned by Microsoft, and thus covered by their terms of service.</p>

<p>In the era where you actually had to spin up a local database to get your local development going and deal with syncing it with remote, the appeal of plain text files is understandable. But that era is pretty much gone with the emergence of backends as a service. Services and tools like <a href="https://fauna.com/">Fauna</a>, <a href="https://firebase.google.com/docs/firestore">Firestore</a>, <a href="https://hasura.io/">Hasura</a>, <a href="https://www.prisma.io/">Prisma</a>, <a href="https://planetscale.com/">PlanetScale</a>, and <a href="https://www.sanity.io/docs/datastore">Sanity’s Content Lake</a>, invest heavily in developer experience. Even operating traditional databases on local development has become less of a hassle compared to just 10 years ago.</p>

<p>If you think about it, do you own your content less if it’s hosted in a database? And hasn’t the developer experience of dealing with databases become significantly simpler with the advent of SaaS tools? And is it fair to say that proprietary database technology impinges on the portability of your content? Today you can launch what’s essentially a Postgres database with no sysadmin skills, make your tables and columns, put your content inside of it, and at any time export it as a <code>.sql</code> dump.</p>

<p>The portability of content has much more to do with how you <em>structure</em> that content in the first place. Take WordPress, it’s fully open-source, you can host your own DB. It even has a <a href="https://wordpress.com/support/export/">standardized export format in XML</a>. But anyone who has tried to move out of a mature WordPress install knows how little this helps if you’re trying to get away from WordPress.</p>

<h3 id="a-vast-ecosystem-for-developers">A Vast Ecosystem… For Developers</h3>

<p>We already touched on the vast markdown ecosystem. If you look at contemporary website frameworks, most of them assume markdown as a primary content format, some of them, the <em>only</em> format. For example, Hugo, the static site generator used by Smashing Magazine, still requires markdown files for paginated publishing. Meaning that if Smashing Magazine wants to use a CMS to store articles, it has to interact with markdown files, or convert all the content to markdown files. If you look in the documentation for <a href="https://nextjs.org/">Next.js</a>, <a href="https://nuxtjs.org/docs/directory-structure/content">Nuxt.js</a>, <a href="https://vuepress.vuejs.org/">VuePress</a>, <a href="https://www.gatsbyjs.com/">Gatsby.js</a>, and so on, markdown will figure prominently. It’s also the default syntax for <code>README</code>-files on GitHub, which also uses it for formatting in Pull Request notes and comments.</p>

<p>There are some honorable mentions of initiatives to bring the ergonomics of markdown to the masses. <a href="https://www.netlify.com/blog/tags/cms/">Netlify CMS</a> and <a href="https://tina.io/">TinaCMS</a> (the spiritual descendant of Forestry) will give you user interfaces where the markdown syntax is mostly abstracted away for editors. You will commonly find that markdown-based editors in CMSes give you preview functionality for the formatting. Some editors, like <a href="https://www.notion.so/">Notion</a>’s, will let you paste markdown syntax, and they will translate it to their native formatting. But I think it’s safe to say, that the energy that has gone to innovate for markdown hasn’t favored people who aren’t into writing its syntax. It hasn’t trickled up the stack, as it were.</p>

<h3 id="content-workflows-or-developer-workflows">Content Workflows Or Developer Workflows?</h3>

<p>For a developer who makes their blog, using markdown files reduces some of the overhead of getting it up and running, since frameworks often come with built-in parsing or commonly offer it as part of starter code. And there is nothing extra to sign up for. You can use git to commit these files alongside your code. If you are comfortable with git diffs, you’ll even have revision control like you’re used to with programming. In other words, since markdown files are in plain text, they can be integrated with your developer workflow.</p>

<p>But beyond this, the developer experience soon gets more complex. And you end up compromising on your team’s user experience as content creators, and our own developer experience being stuck with markdown to solve problems that are way beyond its design intent.</p>

<p>Yes, it might be cool if you get your content team to use git and check in their changes, but at the same time, is this the best use of their time? Do you really want your editors to bump against merge conflicts or how to rebase branches? Git is hard enough for developers who use it every day. And does this setup really represent the best workflow for people who are primarily working with content? Isn’t this a case where developer experience has trumped editor experience, and isn’t the cost, the time and effort that could go into making something better for users?</p>

<p>Because the expectations and needs from content and editing environments have evolved, I don’t think markdown will do it for us. I don’t see how some of the developer ergonomics end up favoring non-developers, and I think even for developers, markdown is holding our own content creation and needs back. Because content on the web has significantly changed since the early 2000s.</p>

<h2 id="from-paragraphs-to-blocks">From Paragraphs To Blocks</h2>

<p>Markdown has always had the option of opting out to HTML if you wanted more complex things. This worked well when the author was also the webmaster, or at least knew HTML. It also worked well because websites usually were mostly HTML and CSS. The way you designed websites was mostly by creating whole page layouts. You could transform Markdown to the HTML markup and put it up alongside your <code>style.css</code> file. Of course, we had CMSes and static site generators in the 2000s too, but they mostly worked the same, by inserting the HTML content inside of templates without any passing of “props” between the components.</p>

<p>But most of us don’t really author HTML like in the old days anymore. Content on the web has evolved from mostly being articles with simple rich text formatting to composed multimedia and specialized components often with user interactivity (which is a fancy way of saying “newsletter signup call to actions”).</p>

<h3 id="from-articles-to-apps">From Articles To Apps</h3>

<p>In the early 2010s, Web 2.0 was in its heyday, and Software as a Service-companies began to use the web for data-heavy applications. HTML, CSS, and JavaScript were increasingly used to drive interactive UIs. Twitter open-sourced Bootstrap, their framework for building more consistent and resilient user interfaces. This drove what we can call the “componentization” of web design. It shifted the way we build for the web in a fundamental way.</p>

<p>The various CSS frameworks that emerged in this era (e.g. <a href="https://getbootstrap.com/">Bootstrap</a> and <a href="https://get.foundation/">Foundation</a>) tended to use standardized class names and assumed specific HTML structures to make it less hard to make resilient and responsive user interfaces. With the web design philosophy of <a href="https://bradfrost.com/blog/post/atomic-web-design/">Atomic Design</a> and class-name conventions like <a href="http://getbem.com/naming/">Block-Element-Modifier</a> (BEM) the default was shifted from thinking page-layout first, to seeing pages as a collection of repeatable and compatible design elements.</p>

<p>Whatever content you have inside of markdown is not compatible with this. Unless you down the rabbit hole of interjecting the markdown parsers, and tweaked it to output the syntax you wanted (more on this later). No wonder, Markdown was designed to be simple rich text articles of native HTML elements that you would target with a stylesheet.</p>

<p>This is still an issue for people who use Markdown to drive content for their sites.</p>

<h3 id="the-embeddable-web">The Embeddable Web</h3>

<p>But something also happened to our content as well. Not only could we start finding it outside of the semantic <code>&lt;article&gt;</code> HTML-tags, but it started to contain more… stuff. A lot of our content moved out from our LiveJournals and blogs and into social media: Facebook, Twitter, tumblr, YouTube. To get the snippets of content back into our articles, we needed to be able to embed them. The HTML convention started using the <code>&lt;iframe&gt;</code> tag to channel the video player from YouTube or even insert a tweet-box in between your paragraphs of text. Some systems started abstracting this into “short-codes”, most often brackets containing some keyword to identify what block of content it should represent, and some key-value attributes. For example, <a href="https://dev.to/p/editor_guide">dev.to have enabled syntax from the templating language liquid to be inserted into their Markdown editor</a>:</p>

<pre><code class="language-markup">{% youtube dQw4w9WgXcQ %}</code></pre>

<p>Of course, this requires you to use a customized Markdown parser, and have special logic to make sure the right HTML was inserted when the syntax was turned into HTML. And your content creators will have to remember these codes (unless there was some kind of toolbar to automatically insert them). And if a bracket gets deleted or messed up, that might break the site.</p>

<div class="partners__lead-place"></div>

<h4 id="but-what-about-mdx">But What About MDX?</h4>

<p>An attempt to solve the need for block content is <a href="https://mdxjs.com/">MDX</a>, presented with the tagline “Markdown for the component era.” MDX lets you use the <a href="https://react.dev/learn/writing-markup-with-jsx">JSX templating language</a>, as well as JavaScript, interlaced in markdown syntax. There is a lot of impressive engineering in the community around MDX, including <a href="https://unifiedjs.com/"><code>Unified.js</code></a>, which specializes in parsing various syntaxes into Abstract Syntax Trees (ASTs), so that they are more accessible to be used programmatically. Note, that the standardization of markdown would make the work for the folks behind <code>Unified.js</code> and its users simpler, because there are fewer edge cases to cater for.</p>

<p>MDX certainly brings better developer experience in integrating components into Markdown. But it doesn’t bring better editor experience, because it adds a lot of cognitive overhead to content production and editing:</p>

<pre><code class="language-markup">import {Chart} from './snowfall.js'
export const year = 2018

# Last Year’s Snowfall

In {year}, the snowfall was above average.
It was followed by a warm spring which caused
flood conditions in many of the nearby rivers.

&lt;Chart year={year} color="#fcb32c" /&gt;</code></pre>

<p>The amount of assumed knowledge just for this simple example is substantial. You need to know about <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules">ES6 modules</a>, JavaScript variables, JSX templating syntax, and how to use props, hex codes, and data types, and you need to be familiar with what components you can use, and how to use them. And you need to type it correctly and in an environment that gives you some kind of feedback. I have no doubt that there will be more accessible authoring tools on top of MDX, it feels like solving for something that doesn’t need to be a problem in the first place.</p>

<p>Unless you are extremely diligent in how you compose and name your MDX components, it also ties your content to a specific presentation. Just take the example above brought from the MDX front page. You’ll find a hard-coded color hex for the chart. When you redesign your site, that color might not be compatible with your new design system. Of course, there’s nothing keeping you from abstracting this and using the prop <code>color=”primary”</code>, but there’s also nothing in the tool that nudges you to make wise decisions like this.</p>

<p>Embedding specific presentation concerns in your content has increasingly become a liability and something that will get in the way of adapting, iterating, and moving quickly with your content. It locks it down in ways that are much more subtle than having content in a database. You risk ending up in the same place as moving out of a mature WordPress install with plugins. It is cumbersome <a href="https://www.youtube.com/watch?v=lVHj7Y90Ieg">to unmix structure and presentation</a>.</p>

<h3 id="the-demand-for-structured-content">The Demand For Structured Content</h3>

<p>With more complex sites and user journeys, we also see the need to present the same pieces of content throughout a website. If you’re running an e-commerce site, you want to embed product information in many places outside a single product page. If you run a modern marketing site, you want to be able to share the same copy across multiple personalized views.</p>

<p>To do this efficiently and reliable you will need to adapt structured content. That means your content needs to be embedded with metadata and chunked up in ways that make it possible to parse for intent. If a developer just sees “page” with “content,” that makes it very difficult to include the right things in the right places. If they can get to all “product descriptions” with an API or a query, that makes everything easier.</p>

<p>With markdown, you’re limited to expressing taxonomies and structured content either to some sort of folder organization (making it hard to put the same piece of content in multiple taxonomies) or you need to augment the syntax with something else.</p>

<p>Jekyll, an early Static Site Generator (SSG) built for markdown files, introduced “<a href="https://jekyllrb.com/docs/front-matter/">Front Matter</a>” as a way to add metadata to posts using YAML (a simple key-value format that uses spaces to create scope) between three dashes at the top of the file. So, now you’ll have two syntaxes to deal with. YAML also has <a href="https://www.google.com/search?q=yaml+harmful&amp;oq=yaml+harmful">a reputation for being mischievous</a> (<a href="https://hitchdev.com/strictyaml/why/implicit-typing-removed/">especially if you’re from Norway</a>). Nevertheless, other SSGs have adopted this convention, as well as git-based CMSes that use markdown as their content format.</p>

<p>When you have to add additional syntax to your plain files to get <em>some</em> of the affordances of structured content, you may start to wonder if it’s really worth it. And who the format is for and who it excludes.</p>

<p>If you think about it, a lot of what we do on the web is not only consuming content, we’re creating it! I’m currently writing this lengthy article in an advanced word processor in my browser.</p>

<p>There’s a growing expectation that you should also be able to author block content in modern content applications. People have started to get used to delightful user experiences that works and looks nice, and where you aren’t expected to have to learn specialized syntax. Medium popularized the notion that you could have delightful and intuitive content creation on the web. And speaking of “notion”, the popular note app has gone all in on block content, and lets users mix max from a wide range of different types. Most of these blocks goes beyond markdown, and the native elements of HTML.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="520"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png"
			
			sizes="100vw"
			alt="An example of block content on the notion."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/256443e2-316a-41d2-a9a9-55c346f6aba3/2-thoughts-on-markdown.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>It’s notable that Notion, <a href="https://www.notion.so/blog/creating-the-notion-api">describing their process to make their content accessible through their highly anticipated API</a>, makes a point out of chosing their content format, that:</p>

<blockquote>
<p>&ldquo;Documents from one Markdown editor will often parse and render differently in another application. The inconsistency tends to be manageable for simple documents, but it&rsquo;s a big problem for Notion&rsquo;s rich library of blocks and inline formatting options, many of which are simply not supported in any widely-used Markdown implementation.&rdquo;</p>
</blockquote>

<p>Notion went with a JSON based format that let them express as structured data. Their argument is that it makes it easier and more predictable to interact with for developers who want to build their own presentation of the block content that comes out of Notion’s APIs.</p>

<h2 id="if-not-markdown-then-what">If Not Markdown, Then What?</h2>

<p>I suspect that the prominence of Markdown has held back innovation and progress for digital content. So, when I argue that we should stop choosing it as a primary way to store content, it’s hard to give a straight answer to what should replace it. What we do know, however, is what we should expect from modern content formats and authoring tools.</p>

<h3 id="let-s-invest-in-accessible-authoring-experiences">Let’s Invest In Accessible Authoring Experiences</h3>

<p>Using markdown requires you to learn syntax, and often multiple syntaxes and bespoke tags to be practical with modern expectations. Today, that feels like a completely unnecessary expectation to put on most people. I wish we could direct more energy into making accessible and delightful editorial experiences that produces modern portable content formats.</p>

<p>Even though it’s notoriously difficult to build great block content editors, there are a couple of viable options out there that can be extended and customized for your use case (for example <a href="https://www.slatejs.org/">Slate.js</a>, <a href="https://quilljs.com/">Quill.js</a>, or <a href="https://prosemirror.net/">Prosemirror</a>). Then again, investing in the communities around these tools might also help their development further.</p>

<p>Increasingly, people will expect authoring tools to be accessible, real-time, and collaborative. Why should one have to push a save button on the web in 2021? Why shouldn’t it be possible to make a change in a document without risking a race condition, because your colleague happened to have the document open in a tab? Should we expect authors to have to deal with merge conflicts? And shouldn’t we make it easy for content creators to work with structured content with visual affordances that make sense?</p>

<p>To be a bit polemical: the last decade’s innovations in reactive JavaScript frameworks and UI components are perfect for creating awesome authoring tools. Instead of using them to transpile Markdown to HTML and into an abstract syntax tree to then integrate it in a JavaScript template language that outputs HTML.</p>

<h3 id="block-content-should-follow-a-specification">Block Content Should Follow A Specification</h3>

<p>I haven’t mentioned WYSIWYG editors for HTML. Because they are the wrong thing. Modern block content editors should preferably interoperate with a specified format. The aforementioned editors do at least have a sensible internal document model that can be transformed into something more portable. If you look at the content management system landscape, you start to see various JSON-based block content formats emerge. Some of them are still tied to HTML assumptions or overly concerned with character positions. And none of them aren’t really offered as a generic specification.</p>

<p>At <a href="https://www.sanity.io/">Sanity.io</a>, we decided early that the block content format should never assume HTML as neither input nor output, and that we could use <a href="https://github.com/google/diff-match-patch">algorithms</a> to synchronize text strings. More importantly, was it that block content and rich text should be deeply typed and queryable. The result was the open specification <a href="https://www.portabletext.org/">Portable Text</a>. Its structure not only makes it flexible enough to accommodate custom data structures as blocks and inline spans; it’s also fully queryable with open-source query languages like <a href="https://www.sanity.io/docs/groq">GROQ</a>.</p>

<p>Portable Text isn’t design to be written or be easily readable in its raw form; it’s designed to be produced by an user interface, manipulated by code, and to be serialized and rendered where ever it needs to go. For example, <a href="https://www.smashingmagazine.com/2019/03/sanity-portabletext-speech-synthesis/">you can use it to express content for voice assistants</a>.</p>

<pre><code class="language-markup">{
  "style": "normal",
  "_type": "block",
  "children": [
    {
      "_type": "span",
      "marks": ["a-key", "emphasis"],
      "text": "some text"
    }
  ],
  "markDefs": [
    {
      "_key": "a-key",
      "_type": "markType",
      "extraData": "some data"
    }
  ]
}
</code></pre>

<p>An interesting side-effect of turning block content into structured data is exactly that: It becomes data! And data can be queried and processed. That can be highly useful and practical, and it lets you ask your content repository questions that would be otherwise harder and more errorprone in formats like Markdown.</p>

<p>For example, if I for some reason wanted to know what programming languages we’ve covered in examples on Sanity’s blog, that’s within reach with a short query. You can imagine how trivial it is to build specialized tools and views on top of this that can be helpful for content editors:</p>

<pre><code class="language-markup">distinct(
  &#42;["code" in body[]._type]
      .body[_type == "code"]
      .language
)
// output
[
  "text",
  "javascript",
  "json",
  "html",
  "markdown",
  "sh",
  "groq",
  "jsx",
  "bash",
  "css",
  "typescript",
  "tsx",
  "scss"
]</code></pre>

<p><strong><em>Example:</em></strong> <em>Get a distinct list of all programming languages that you have code blocks of.</em></p>

<p>Portable Text is also serializable, meaning that you can recursively loop through it, and make an API that exposes its nodes in callback functions mapped to block types, marked-up spans, and so on. We have spent the last years learning a lot about how it works and how it can be improved, and plan to take it to 1.0 in the near future. The next step is to offer an editor experience outside of Sanity Studio. As we have learned from Markdown, the design intent is important.</p>

<p>Of course, whatever the alternative to markdown is, it doesn’t <em>need</em> to be Portable Text, but it needs to be portable text. And it needs to share a lot of its characteristics. There have been a couple of other JSON-based block content format popping up the last few years, but a lot of them seem to bring with them a lot of “HTMLism.” The convenience is understandable, since a lot of content still ends up on the web serialized into HTML, but the convenience limits the portability and the potential for reuse.</p>

<p>You can disregard my short pitch for something we made at Sanity, as long as you embrace the idea of structured content and formats that let you move between systems in a fundamental manner. For example, a goal for Portable Text will be improved compatibility with Unified.js, so it’s easier to travel between formats.</p>

<h2 id="embracing-the-legacy-of-markdown">Embracing The Legacy Of Markdown</h2>

<p>Markdown in all its flavors, interpretations, and forks won’t go away. I suspect that plain text files will always have a place in developers’ note apps, blogs, docs, and digital gardens. As a writer who has used markdown for almost two decades, I’ve become accustomed to “markdown shortcuts” that are available in many rich text editors and am frequently stumped from Google Docs’ lack of markdownisms. But I’m not sure if the next generation of content creators and even developers will be as bought in on markdown, and nor should they have to be.</p>

<p>I also think that markdown captured a culture of savvy tinkerers who love text, markup, and automation. I’d love to see that creative energy expand and move into collectively figuring out how we can make better and more accessible block content editors, and building out an ecosystem around specifications that can express block content that’s agnostic to HTML. Structured data formats for block content might not have the same plain text ergonomics, but they are highly “tinkerable” and open for a lot of creativity of expression and authoring.</p>

<p>If you are a developer, product owner, or a decision-maker, I really want you to be circumspect of how you want to store and format your content going forward. If you’re going for markdown, at least consider the following trade-offs:</p>

<p>Markdown is <strong>not great for the developer experience in modern stacks</strong>:</p>

<ul>
<li>It can be a hassle to parse and validate, even with great tooling.</li>
<li>Even if you adopt CommonMark, you aren’t guaranteed compatibility with tooling or people’s expectations.</li>
<li>It’s not great for structured content, YAML frontmatter only takes you so far.</li>
</ul>

<p>Markdown is <strong>not great for editorial experience</strong>:</p>

<ul>
<li>Most content creators don’t want to learn syntax, their time is better spent on other things.</li>
<li>Most markdown systems are brittle, especially when people get syntax wrong (which they will).</li>
<li>It’s hard to accommodate great collaborative user experiences for block content on top of markdown.</li>
</ul>

<p>Markdown is <strong>not great in block content age</strong>, and shouldn’t be forced into it. Block content needs to:</p>

<ul>
<li>Be untangled from HTMLisms and presentation agnostic.</li>
<li>Accommodate structured content, so it can be easily used wherever it needs to be used.</li>
<li>Have stable specification(s), so it’s possible to build on.</li>
<li>Support real-time collaborative systems.</li>
</ul>

<p>What’s common for people like me who challenge the prevalence of markdown, and those who are really into the simple way of expressing text formating is an appreciation of how we transcribe intent into code. That’s where I think we can all meet. But I do think it’s time to look at the landscape and the emerging content formats that try to encompass modern needs, and ask how we can make sure that we build something that truly caters to editorial experience, and that can speak to developer experience as well.</p>

<p><em>I want to express my gratitude to Titus Wormer (<a href="https://github.com/wooorm">@wooorm</a>) for his insightful feedback on my first draft of this post, and for the great work he and the <a href="https://unifiedjs.com/">Unified.js</a> team have done for the web community.</em></p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2025/01/transitioning-top-layer-entries-display-property-css/">Transitioning Top-Layer Entries And The Display Property In CSS</a></li>
<li><a href="https://www.smashingmagazine.com/2025/02/integrations-from-simple-data-transfer-to-composable-architectures/">Integrations: From Simple Data Transfer To Modern Composable Architectures</a></li>
<li><a href="https://www.smashingmagazine.com/2025/01/digital-playbook-crucial-counterpart-design-system/">The Digital Playbook: A Crucial Counterpart To Your Design System</a></li>
<li><a href="https://www.smashingmagazine.com/2025/01/ode-to-side-project-time/">An Ode To Side Project Time</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(vf, yk, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Berwyn Powell</author><title>Reducing Carbon Emissions On The Web</title><link>https://www.smashingmagazine.com/2021/09/reducing-carbon-emissions-on-web/</link><pubDate>Fri, 03 Sep 2021 11:30:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2021/09/reducing-carbon-emissions-on-web/</guid><description>Websites, unfortunately, aren’t as environmentally friendly as we might like them to be. In this article, Berwyn Powell takes a look at his experience in trying to make websites better for the environment. Hopefully, this will give you some ideas for things to try on your own websites. It can be quite disheartening to run a page through the Website Carbon Calculator and be told that it could be emitting hundreds of kilograms of CO2 a year. Fortunately, the sheer size of the web can amplify positive changes as well as negative ones, and even small improvements soon add up on websites with thousands of visitors a week.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2021/09/reducing-carbon-emissions-on-web/" />
              <title>Reducing Carbon Emissions On The Web</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Reducing Carbon Emissions On The Web</h1>
                  
                    
                    <address>Berwyn Powell</address>
                  
                  <time datetime="2021-09-03T11:30:00&#43;00:00" class="op-published">2021-09-03T11:30:00+00:00</time>
                  <time datetime="2021-09-03T11:30:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>As is the case with many other developers, the reports over the last few years of the huge energy requirements of the web have prompted me to take a look at my own websites and see what I can do to minimize their impact. This piece will cover some of my experiences in doing this, as well as my current thoughts on <strong>optimizing websites for carbon emissions</strong>, and some practical examples of things you can do to improve your own pages.</p>

<p>But first, a confession: When I first heard about the environmental impact of websites, I didn’t quite believe it. After all, digital is supposed to be better for the planet, isn’t it?</p>

<p>I’ve been involved in various green and environmental groups for decades. In all of that time, I can’t consciously remember anyone ever discussing the possible <strong>environmental impacts of the web</strong>. The focus was always on reducing consumption and moving away from burning fossil fuels. The only time the Internet was mentioned was as a tool for communicating with one another without the need to chop down more trees, or for working without a commute.</p>

<p>So, when people first started talking about the <a href="https://www.bbc.com/future/article/20200305-why-your-internet-habits-are-not-as-clean-as-you-think">Internet having similar carbon emissions to the airline industry</a>, I was a bit skeptical.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Roll up your sleeves and <strong>boost your UX skills</strong>! Meet <strong><a data-instant href="https://smart-interface-design-patterns.com/">Smart Interface Design Patterns</a></strong>&nbsp;🍣, a 10h video library by Vitaly Friedman. <strong>100s of real-life examples</strong> and live UX training. <a href="https://www.youtube.com/watch?v=3mwZztmGgbE">Free preview</a>.</p>
<a data-instant href="https://smart-interface-design-patterns.com/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://smart-interface-design-patterns.com/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3155f571-450d-42f9-81b4-494aa9b52841/video-course-smart-interface-design-patterns-vitaly-friedman.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/8c98e7f9-8e62-4c43-b833-fc6bf9fea0a9/video-course-smart-interface-design-patterns-vitaly-friedman.jpg"
    alt="Feature Panel"
    width="690"
    height="790"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="emissions">Emissions</h2>

<p>It can be hard to visualize the huge network of hardware that allows you to send a request for a page to a server and then receive a response back. Most of us don’t live in data centers, and the cables that carry the signals from one computer to another are often buried beneath our feet. When you can’t see a process in action, the whole thing can feel a little bit like magic — something that isn’t helped by the insistence of certain companies on adding words like “cloud” and “serverless” to their product names.</p>

<p>As a result of this, my view of the Internet for a long time was a little ephemeral, a sort of mirage. When I started writing this article, however, I performed a little thought experiment: <strong>How many pieces of hardware does a signal travel through from the computer I’m writing at to get outside of the house?</strong></p>

<p>The answer was quite shocking: 3 cat cables, a switch, 2 powerline adapters, a router and modem, an RJ11 cable, and several meters of electrical wiring. Suddenly, that mirage was beginning to look rather more solid.</p>

<p>Of course, the web (any, by extension, the websites we make) does have a carbon footprint. All of the servers, routers, switches, modems, repeaters, telephone cabinets, optical-to-electrical converters, and satellite uplinks of the Internet must be built from metals extracted from the Earth, and from plastics refined from crude oil. To then provide data to the estimated <a href="https://www.gartner.com/imagesrv/books/iot/iotEbook_digital.pdf">20 billion connected devices</a> worldwide, they need to consume electricity, which also releases carbon when it is generated (even renewable electricity is not carbon neutral, although it is a lot better than fossil fuels).</p>

<p>Accurately measuring just what those emissions are is probably impossible — <strong>each device is different</strong> and the energy that powers them can vary over the course of a day — but we can get a rough idea by looking at typical figures for power consumption, user bases, and so on. One tool that uses this data to estimate the carbon emissions of a single page is the <a href="https://www.websitecarbon.com/">Website Carbon Calculator</a>. According to it, the average page tested “produces 1.76 grams of CO2 per page view”.</p>

<p>If you’ve been used to thinking about the work you do as essentially harmless to the environment, this realization can be quite disheartening. The good news is that, as developers, we can do an awful lot about it.</p>

<p><strong>Recommended reading</strong>: <em><a href="https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/">How Improving Website Performance Can Help Save The Planet</a></em></p>

<h2 id="performance-and-emissions">Performance And Emissions</h2>

<p>If we remember that viewing websites uses electricity and that producing electricity releases carbon, then we’ll know that the emissions of a page must heavily depend on the amount of work that both the server and client have to perform in order to display the page. Also, the amount of data that is required for the page, and the complexity of the route it must travel through, will determine the amount of carbon released by the network itself.</p>

<p>For example, downloading and rendering <a href="https://example.com/">example.com</a> will likely consume far less electricity than <a href="https://www.apple.com/">Apple’s home page</a>, and it will also be much quicker. In effect, what we are saying is that high emissions and slow page loads are just two symptoms of the same underlying causes.</p>

<p>It’s all very well to talk about this relationship in theory, of course, but having some real-world data to back it up would be nice. To do just that, I decided to conduct a little study. I wrote a simple command-line interface program to take a list of the 500 most popular websites on the Internet, <a href="https://moz.com/top500">according to MOZ</a>, and check their home pages against both Google’s PageSpeed Insights and the Website Carbon Calculator.</p>

<p>Some of the checks timed out (often because the page in question simply took too long to load), but in total, I managed to collect results for over 400 pages on 14 July 2021. You can download the <a href="https://moz.com/top-500/download/?table=top500Domains">summary of results</a> to examine yourself but to provide a visual indication, I have plotted them in the chart below:</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="452"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg"
			
			sizes="100vw"
			alt="Chart showing trend of almost 6 grams of carbon at 0 PageSpeed, dropping to 1 gram of carbon at 100 PageSpeed."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Carbon versus PageSpeed of 400 popular websites. (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/92553f73-8a45-4830-b666-e74671313616/1-reducing-carbon-emissions-on-web.jpeg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>As you can see, while the variation between individual websites is very high, there is a strong trend towards lower emissions from faster pages. The mean average emissions for websites with a PageSpeed score of 100 is about 1 gram of carbon, which rises to a projected almost 6 grams for websites with a score of 0. I find it slightly reassuring that, despite there being many websites with very low speeds and high emissions, most of the results are clustered in the bottom right of the chart.</p>

<h2 id="taking-action">Taking Action</h2>

<p>Once we understand that much of a page’s emissions originate from poor performance, we can start taking steps to reduce them. Many of the things that contribute to a website’s emissions are beyond our control as developers. We can’t, for example, choose the devices that our users access our pages from or decide on the network infrastructure that their requests travel through, but we can take steps to improve our websites’ performance.</p>

<p>Performance optimization is a broad topic, and many of you reading this likely have more experience than I do, but I would like to briefly mention <strong>a few things that I have observed recently</strong> when optimizing various pages’ loading speed and carbon emissions.</p>

<h3 id="rendering-is-much-slower-on-mobile">Rendering Is Much Slower On Mobile</h3>

<p>I recently reworked the design of my personal blog in order to make it a little more user-friendly. One of my hobbies is photography, and the website had previously featured a full-height header image.</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="432"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png"
			
			sizes="100vw"
			alt="Full-height image of trees on website. No content visible."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      The old home page showing a full-height image header. (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2b6230bc-00fe-434f-8cd4-63d44ee5e530/2-reducing-carbon-emissions-on-web.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>While the design did a good job of showcasing my photographs, it was a complete pain to scroll past, especially when moving through pages of blog posts. I didn’t want to lose the feeling of having a photo in the header, however, and eventually settled on using it as a background for the page title.</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			width="800"
			height="432"
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png"
			
			sizes="100vw"
			alt="Web page with text and image as background for title."
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      The new home page with a greatly reduced image. (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9e6dfcee-5e6a-40a9-a9c6-11b813c2a25d/3-reducing-carbon-emissions-on-web.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The full-height header had been using <code>srcset</code> in order to make loading as fast as possible, but the images were still very big on high-resolution screens, and my longest contentful paint (LCP) time on mobile for the old design was almost 3 seconds. A big advantage of the new design was that it allowed me to make the images much smaller, which reduced the LCP time to about 1.5 seconds.</p>

<p>On laptops and desktops, people wouldn’t have noticed a difference, because both versions were well under a second, but on much less powerful mobile devices, it was quite dramatic. What was the effect of this change on carbon emissions? 0.31 grams per view before, 0.05 grams after. <strong>Decoding and rendering images is very resource-intensive</strong>, and this grows exponentially as the images get bigger.</p>

<p>The size of images isn’t the only thing that can have an impact on the time to decode; the format is important as well. Google’s Lighthouse often recommends serving images in next-generation formats to reduce the amount of data that needs to be downloaded, but <a href="https://calendar.perfplanet.com/2018/dont-use-jpeg-xr-on-the-web/">new formats are often slower to decode</a>, especially on mobile. Sending less data over the wire is better for the environment, but it is possible that consuming more energy to decode could offset that benefit. As with most things, testing is key here.</p>

<p>From my own testing in trying to add support for AVIF encoding to the Zola static site generator, I found that AVIF, which promises <a href="https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4">much smaller file sizes than JPG at the same quality</a>, took orders of magnitude longer to encode; something that bunny.net’s observation that <a href="https://bunny.net/blog/lets-talk-avif-and-why-we-are-not-adding-support-just-yet/">WebP outperforms AVIF by as much as 100 times</a> supports. While doing this, the server will be consuming electricity, and I do wonder whether, for websites with low visitor counts, switching to the new format might actually end up increasing emissions and reducing performance.</p>

<p>Images, of course, are not the only component of modern web pages that take a long time to process. Small JavaScript files, depending on what they are doing, can take a long time to execute and the same potential pitfalls as images will apply.</p>

<p><strong>Recommended reading</strong>: <a href="https://www.smashingmagazine.com/2021/04/humble-img-element-core-web-vitals/"><em>The Humble <code>img</code> Element And Core Web Vitals</em></a></p>

<h3 id="round-trips-add-up">Round-Trips Add Up</h3>

<p>Another thing that can have a surprising impact on performance and emissions is where your data is coming from. Conventional wisdom has long said that serving assets such as frameworks from a central content delivery network (CDN) will improve performance because getting data from local nodes is generally faster for users than from a central server. jQuery, for example, has the option to be loaded from a CDN, and its maintainers say that this can improve performance, but real-world testing by Harry Roberts has shown that <a href="https://csswizardry.com/2019/05/self-host-your-static-assets/">self-hosting assets is generally faster</a>.</p>

<p>This has also been my experience. I recently helped a gaming website improve its performance. The website was using a fairly large CSS framework and loading all of its third-party assets via a CDN. We switched to self-hosting all assets and removed unused components from the framework.</p>

<p>None of the optimizations resulted in any visual changes to the website, but together they increased the <strong>Lighthouse score from 72 to 98</strong> and reduced carbon emissions from 0.26 grams per view to 0.15.</p>

<h3 id="send-only-what-you-need">Send Only What You Need</h3>

<p>This leads nicely onto the subject of sending users only the data they actually need. I’ve worked on (and visited) many, many websites that are dominated by stock images of people in suits smiling at one another. There seems to be a mentality amongst certain organizations that what they do is really boring and that adding photos will somehow convince the general public otherwise.</p>

<p>I can sort of understand the thinking behind this because there are numerous pieces on how the <a href="https://www.amacad.org/humanities-indicators/public-life/time-spent-reading">amount of time people spend reading is declining</a>. Text, we are repeatedly told, is going out of fashion; all people are interested in now are videos and interactive experiences.</p>

<p>From that point of view, stock photos could be seen as a useful tool to liven up pages, but eye-tracking studies show that <a href="https://www.nngroup.com/articles/photos-as-web-content/">people ignore images that aren’t relevant</a>. When people aren’t looking at your images, the images might as well be empty space. And when every byte costs money, contributes to climate change, and slows down loading times, it would be better for everyone if they actually were.</p>

<p>Again, what can be said for images can be said for everything else that isn’t the page’s core content. If something isn’t contributing to a user’s experience in a meaningful way, it shouldn’t be there. I’m not for a moment advocating that we all start serving unstyled pages — some people, such as those with dyslexia, do find large blocks of text difficult to read, and other users almost certainly would find such pages boring and go elsewhere — but <strong>we should look critically at every part of our websites</strong> to consider whether they are earning their keep.</p>

<h2 id="accessibility-and-the-environment">Accessibility And The Environment</h2>

<p>Another area where performance and emissions converge is in the field of accessibility. There is a common misconception that making websites accessible involves adding <code>aria</code> attributes and JavaScript to a page, but often what you leave out is more important than what you put in, making an accessible website relatively lightweight and performant.</p>

<div class="partners__lead-place"></div>

<h3 id="using-standard-elements">Using Standard Elements</h3>

<p>MDN Web Docs has some very good tutorials on accessibility. In “<a href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility/HTML">HTML: A Good Basis for Accessibility</a>”, they cover how the best foundation of an accessible website lies in using the correct HTML elements for the content. One of the most interesting sections of the article is where they try to recreate the functionality of a <code>button</code> element using a <code>div</code> and custom JavaScript.</p>

<p>This is obviously a minimal example, but I thought it would be interesting to compare the size of this button version to one using standard HTML elements. The fake button example in this case weighs around 1,403 bytes uncompressed, whereas an actual <code>button</code> with less JavaScript and no styling weighs 746 bytes. The <code>div</code> button will also be semantically meaningless and, therefore, much harder for people with screen readers to use and for bots to parse.</p>

<p><strong>Recommended reading</strong>: <em><a href="https://www.smashingmagazine.com/2021/05/accessible-svg-patterns-comparison/">Accessible SVGs: Perfect Patterns For Screen Reader Users</a></em></p>

<p>When scaled up, these sorts of things make a difference. Parsing minimal markup and JavaScript is easier for a browser, just as it is easier for developers.</p>

<p>On a larger scale, I was recently <strong>refactoring the HTML of a website</strong> that I work on — doing things like removing redundant title attributes and replacing <code>div</code>s with more semantic equivalents. The original page had a structure like the following (content removed for privacy and brevity):</p>

<pre><code class="language-html">&lt;div class="container"&gt;
    &lt;section&gt;
        &lt;div class="row"&gt;

            &lt;div class="col-md-3"&gt;
                &lt;aside&gt;
                    &lt;!-- Sidebar content here --&gt;
                &lt;/aside&gt;
            &lt;/div&gt;

            &lt;div class="col-md-9"&gt;
                &lt;!-- Main content here --&gt;
                &lt;h4&gt;Content piece heading&lt;/h4&gt;
                &lt;p&gt;
                    Some items;&lt;br&gt;
                    Item 1 &lt;br&gt;
                    Item 2 &lt;br&gt;
                    Item 3 &lt;br&gt;
                &lt;br&gt;
                &lt;/p&gt;
                &lt;!-- More main content here --&gt;
            &lt;/div&gt;

        &lt;/div&gt;
    &lt;/section&gt;
&lt;/div&gt;</code></pre>

<p>With the full content, this weighed 34,168 bytes.</p>

<p>After refactoring, the structure resembled this:</p>

<pre><code class="language-html">&lt;div class="container"&gt;
    &lt;div class="row"&gt;

        &lt;main class="col-md-9 col-md-push-3"&gt;
            &lt;!-- Main content here --&gt;
            &lt;h3&gt;Content piece heading&lt;/h3&gt;
            &lt;p&gt;Some items;&lt;/p&gt;
            &lt;ul&gt;
              &lt;li&gt;Item 1&lt;/li&gt;
              &lt;li&gt;Item 2&lt;/li&gt;
              &lt;li&gt;Item 3&lt;/li&gt;
            &lt;/ul&gt;
            &lt;!-- More main content here --&gt;
        &lt;/main&gt;

        &lt;aside class="col-md-3 col-md-pull-9"&gt;
            &lt;!-- Sidebar content here --&gt;
        &lt;/aside&gt;

    &lt;/div&gt;
&lt;/div&gt;</code></pre>

<p>It weighed 32,805 bytes.</p>

<p>The changes are currently ongoing, but already the markup is far more accessible according to WebAIM, Lighthouse, and manual testing. The file size has also gone down, and, when averaging the time from five profiles in Chrome, the time to parse the HTML has dropped by about 2 milliseconds.</p>

<p>These are obviously small changes and probably won’t make any perceptual difference to users. However, it is nice to know that <strong>every byte costs users and the environment</strong> — making a website accessible can also make it a little bit lighter as well.</p>

<h3 id="videos">Videos</h3>

<p>Project Gutenberg’s HTML version of <em><a href="https://www.gutenberg.org/files/100/100-h/100-h.htm">The Complete Works of William Shakespeare</a></em> is approximately 7.4 MB uncompressed. According to Android Authority in “<a href="https://www.androidauthority.com/how-much-data-does-youtube-use-964560/">How Much Data Does YouTube Actually Use?</a>”, a 360p YouTube video weighs about 5 to 7.5 MB per minute of footage and 1080p about 50 to 68. So, for the same amount of bandwidth as all of Shakespeare’s plays, you will get only about 7 seconds of high-definition video. Video is also very intensive to encode and decode, and this is probably a major contributing factor to <a href="https://www.iea.org/commentaries/the-carbon-footprint-of-streaming-video-fact-checking-the-headlines">estimates of Netflix’s carbon emissions</a> being as high as 3.2 KG per hour.</p>

<p>Most videos rely on both visual and auditory components to communicate their message, and <strong>large files sizes require a certain level of connectivity</strong>. This obviously places limits on who can benefit from such content. <a href="https://www.w3.org/WAI/media/av/">Making video accessible</a> is possible but far from simple, and many websites simply don’t bother.</p>

<p>If video was only ever treated as a form of progressive enhancement, this would perhaps not be a problem, but I have lost count of the number of times I have been searching for something on the web, and the only way to find the information I wanted was by watching a video. On YouTube, the <a href="https://backlinko.com/youtube-users#usage-growth">average number of monthly users</a> grew from 20 million in 2006 to 2 billion in 2020. Vimeo also has a <a href="https://www.statista.com/statistics/705598/vimeo-subscribers-worldwide/">continually growing user base</a>.</p>

<p>Despite the huge number of visitors to video-sharing websites, many of the most popular ones <a href="https://www.vyond.com/resources/508-compliance-and-accessible-video/">do not seem to be fully compliant with accessibility legislation</a>. In contrast to this, numerous <a href="https://www.w3.org/WAI/people-use-web/tools-techniques/">types of assistive technologies</a> are designed to make plain text accessible to as wide a variety of people as possible. Text is also easy to convert from one format to another, so it can be used in a number of different contexts.</p>

<p>As we can see from the example of Shakespeare, plain text is also incredibly space-efficient, and it has a far lower carbon footprint than any other form of human-friendly information transmitted on the web.</p>

<p>Video can be great, and many people learn best by watching a process in action, but it also leaves some people out and has an environmental cost. To keep our websites as lightweight and inclusive as possible, we should treat text as the primary form of communication wherever possible, and offer things such as audio and video as an extra.</p>

<p><strong>Recommended Reading</strong>: <em><a href="https://www.smashingmagazine.com/2021/02/optimizing-video-size-quality/">Optimizing Video For Size And Quality</a></em></p>

<h2 id="in-conclusion">In Conclusion</h2>

<p>Hopefully, this brief look at my experience in trying to make websites better for the environment has given you some ideas for things to try on your own websites. It can be quite disheartening to run a page through the <em>Website Carbon Calculator</em> and be told that it could be emitting hundreds of kilograms of CO2 a year. Fortunately, the sheer size of the web can amplify positive changes as well as negative ones, and <strong>even small improvements soon add up on websites</strong> with thousands of visitors a week.</p>

<p>Even though we are seeing things like a 25-year-old website <a href="https://mxb.dev/blog/space-jam/">increasing 39 times in size</a> after a redesign, we are also seeing websites being made to <a href="https://www.wholegraindigital.com/blog/designing-web-services-for-people-living-in-data-poverty/">use as little data as possible</a>, and clever people are figuring out how to <a href="https://css-tricks.com/delivering-wordpress-in-7kb/">deliver WordPress in 7 KB</a>. So, in order for us to reduce the carbon emissions of our websites, we need to make them faster — and that benefits <em>everybody</em>.</p>

<h3 id="other-resources">Other Resources</h3>

<ul>
<li><a href="https://gerrymcgovern.com/books/world-wide-waste/">World Wide Waste</a>, Gerry McGovern</li>
<li>“<a href="https://siipo.la/blog/is-webp-really-better-than-jpeg">Is WebP Really Better Than JPEG?</a>”, Johannes Siipola</li>
<li>“<a href="https://css-tricks.com/make-jamstack-slow-challenge-accepted/">Make Jamstack Slow? Challenge Accepted.</a>”, Steve Keep, CSS-Tricks</li>
<li>“<a href="https://www.bbc.co.uk/programmes/w3ct0xbc">Can the Internet Ever Be Green?</a>”, The Climate Question, BBC</li>
<li>“<a href="https://www.wholegraindigital.com/blog/data-center-salad/">Could Your Data Center Not Just Power Your Website, But Also Grow Your Salad?</a>”, Tom Greenwood, Wholegrain Digital</li>
<li><a href="https://www.better-web-alliance.net/">The Better Web Alliance</a> (my own project)</li>
<li><a href="https://www.sustainablewebmanifesto.com/">Sustainable Web Manifesto</a></li>
</ul>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2024/11/why-optimizing-lighthouse-score-not-enough-fast-website/">Why Optimizing Your Lighthouse Score Is Not Enough For A Fast Website</a></li>
<li><a href="https://www.smashingmagazine.com/2024/06/scaling-success-key-insights-pratical-takeaways/">Scaling Success: Key Insights And Practical Takeaways</a></li>
<li><a href="https://www.smashingmagazine.com/2023/08/optimize-performance-serve-global-audience/">How We Optimized Performance To Serve A Global Audience</a></li>
<li><a href="https://www.smashingmagazine.com/2024/02/web-development-getting-too-complex/">Web Development Is Getting Too Complex, And It May Be Our Fault</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(vf, yk, il, al, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Noam Rosenthal</author><title>Should The Web Expose Hardware Capabilities?</title><link>https://www.smashingmagazine.com/2021/01/web-expose-hardware-capabilities/</link><pubDate>Tue, 05 Jan 2021 12:30:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2021/01/web-expose-hardware-capabilities/</guid><description>This article is a response to the &lt;a href="https://infrequently.org/2020/06/platform-adjacency-theory/">Platform Adjacency Theory&lt;/a> by &lt;a href="https://twitter.com/slightlylate">Alex Russell&lt;/a>, with specific takes on &lt;a href="https://wicg.github.io/webusb/">WebUSB&lt;/a> and some alternative proposals for a way forward.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2021/01/web-expose-hardware-capabilities/" />
              <title>Should The Web Expose Hardware Capabilities?</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Should The Web Expose Hardware Capabilities?</h1>
                  
                    
                    <address>Noam Rosenthal</address>
                  
                  <time datetime="2021-01-05T12:30:00&#43;00:00" class="op-published">2021-01-05T12:30:00+00:00</time>
                  <time datetime="2021-01-05T12:30:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>I have recently been interested in the difference of opinions between the different browser vendors about the future of the web — specifically in the various efforts to push web platform capabilities closer to native platforms, such as Chromium’s <a href="https://www.chromium.org/teams/web-capabilities-fugu">Project Fugu</a>.</p>

<p>The main positions can be summarized as:</p>

<ul>
<li>Google (together with partners like Intel, Microsoft and Samsung) is aggressively pushing forward and innovating with a plethora of new APIs like the ones in Fugu, and ships them in Chromium;</li>
<li>Apple is pushing back with a more conservative approach, marking many of the new APIs as <a href="https://webkit.org/tracking-prevention/">raising security &amp; privacy concerns</a>;</li>
<li>This (together with Apple’s <a href="https://developer.apple.com/app-store/review/guidelines/#software-requirements">restrictions on browser choice in iOS</a>) has created a stance labeling Safari to be the <a href="https://www.safari-is-the-new-ie.com/">new IE</a> while claiming that Apple is slowing down the progress of the web;</li>
<li>Mozilla seems closer to Apple than to Google on this.</li>
</ul>

<p>My intention in this article is to look at claims identified with Google, specifically ones in the <a href="https://infrequently.org/2020/06/platform-adjacency-theory/">Platform Adjacency Theory</a> by Project Fugu leader Alex Russell, look at the evidence presented in those claims, and perhaps reach my own conclusion.</p>

<p>Specifically, I intend to dive into <a href="https://wicg.github.io/webusb/">WebUSB</a> (a particular controversial API from Project Fugu), check whether the security claims against it have merit, and try to see if an alternative emerges.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="the-platform-adjacency-theory">The Platform Adjacency Theory</h2>

<p>The aforementioned <a href="https://infrequently.org/2020/06/platform-adjacency-theory/">theory</a> makes the following claims:</p>

<ul>
<li>Software is moving to the web because it is a better version of computing;</li>
<li>The web is a meta-platform — a platform abstracted from its operating system;</li>
<li>The success of a meta-platform is based on it accomplishing the things we expect most computers to do;</li>
<li>Declining to add adjacent capabilities to the web meta-platform on security grounds, while ignoring the same security issues in native platforms, will eventually make the web less and less relevant;</li>
<li>Apple &amp; Mozilla are doing exactly that — declining to add adjacent computing capabilities to the web, thus “casting the web in amber”.</li>
</ul>

<p>I relate with the author’s passion for keeping the open web relevant, and with the concern that going too slow with enhancing the web with new features will make it irrelevant. This is augmented by my dislike of app stores and other <a href="https://en.wikipedia.org/wiki/Closed_platform">walled gardens</a>. But as a user I can relate to the opposite perspective — I get dizzy sometimes when I don’t know what websites I’m browsing are capable or not capable of doing, and I find platform restrictions and auditing to be comforting.</p>

<h3 id="meta-platforms">Meta-Platforms</h3>

<p>To understand the term “meta-platform”, I looked at what the theory uses that name for — Java and Flash, both products of the turn of the millennium.</p>

<p>I find it confusing to compare either Java or Flash to the web. Both Java and Flash, as mentioned in the theory, were widely distributed at the time through browser plug-ins, making them more of an alternative runtime riding on top of the browser platform. Today, Java is used mainly in the server and as part of the Android platform, and both do not share much in common, except the language.</p>

<p>Today server-side Java is perhaps a meta-platform, and <a href="https://nodejs.org/">node.js</a> is also a good example of a server-side meta-platform. It’s a set of APIs, a cross-platform runtime, and a package ecosystem. Indeed node.js is always adding more capabilities, previously only possible as part of a platform.</p>

<p>On the client side, <a href="https://www.qt.io/">Qt</a>, a C++-based cross-platform framework, does not come with a separate runtime, it’s merely a (good!) cross-platform library for UI development.</p>

<p>The same applies for <a href="https://www.rust-lang.org/">Rust</a> — it’s a language and a package manager, but does not depend on pre-installed runtimes.</p>

<p>The other ways to develop client-side applications are mainly platform-specific, but also include some cross-platform mobile solutions like <a href="https://flutter.dev/">Flutter</a> and <a href="https://dotnet.microsoft.com/learn/xamarin/what-is-xamarin">Xamarin</a>.</p>

<h3 id="capabilities-vs-time">Capabilities Vs. Time</h3>

<p>The main graph in the theory, shows the relevance of meta-platforms on a 2D axis of capabilities vs. time:</p>














<figure class="
  
  
  ">
  
    <a href="https://infrequently.org/2020/06/platform-adjacency-theory/">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_400/the-relevance-gap_kzwi6q.png 400w,
			        https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_800/the-relevance-gap_kzwi6q.png 800w,
			        https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_1200/the-relevance-gap_kzwi6q.png 1200w,
			        https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_1600/the-relevance-gap_kzwi6q.png 1600w,
			        https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_2000/the-relevance-gap_kzwi6q.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/upload/f_auto,q_80/w_400/the-relevance-gap_kzwi6q.png"
			
			sizes="100vw"
			alt="The Relevance Gap"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Image credit: <a href='https://infrequently.org/2020/06/platform-adjacency-theory/'>Alex Russell</a>
    </figcaption>
  
</figure>

<p>I can see how the above graph makes sense when talking about cross-platform development frameworks mentioned above like Qt, Xamarin, Flutter and Rust, and also to server platforms like node.js and Java/Scala.</p>

<p>But all of the above have a key difference from the web.</p>

<h2 id="the-3rd-dimension">The 3rd Dimension</h2>

<p>The meta-platforms mentioned earlier are indeed competing against their host OSes in the race for capabilities, but unlike the web, they are not opinionated about <em>trust</em> and <em>distribution</em> — the 3rd dimension, that in my opinion is missing in the above graph.</p>

<p>Qt and Rust are good ways to create apps that are distributed via <a href="https://webassembly.org/">WebAssembly</a>, downloaded and installed directly on the host OS, or administered through package managers like <a href="https://crates.io/">Cargo</a> or Linux distributions like <a href="https://ubuntu.com/">Ubuntu</a>. <a href="https://reactnative.dev/">React Native</a>, Flutter and Xamarin are all decent ways to create apps that are distributed via app stores. node.js and Java services are usually distributed via a <a href="https://www.docker.com/">docker</a> container, a virtual machine, or some other server mechanism.</p>

<p>Users are mostly unaware of what was used to develop their content, but are aware to some degree of how it is distributed. Users don’t know what Xamarin and node.js are, and if their Swift App was replaced one day by a Flutter App, most users wouldn’t and ideally shouldn’t care about it.</p>

<p>But users <em>do</em> know the web — they know that when they’re “browsing” in Chrome or Firefox, they are “online” and can access content they don’t necessarily trust. They know that downloading software and installing it is a possible hazard, and might be blocked by their IT administrator. In fact, it’s important for the web platform that users know that they’re currently “browsing the web”. That’s why, for example, switching to full-screen mode shows a clear prompt to the user, with instructions of how to get back from it.</p>

<p>The web has become successful <em>because</em> it’s not transparent — but clearly separated from its host OS. If I can’t trust my browser to keep random websites away from reading files on my hard-drive, I probably wouldn’t go to any website.</p>

<p>Users also know that their computer software is “Windows” or “Mac”, whether their phones are Android or iOS-based, and whether they’re currently using an <em>app</em> (when on iOS or Android, and on Mac OS to some degree). The <em>OS</em> and the <em>distribution model</em> are generally known to the user — the user trusts their OS and the web to do different things, and to different degrees of trust.</p>

<p>So, the web cannot be compared to cross-platform development frameworks, without taking its unique distribution model into account.</p>

<p>On the other hand, web technologies are also used for cross-platform development, with frameworks like <a href="https://www.electronjs.org/">Electron</a> and <a href="https://cordova.apache.org/">Cordova</a>. But those are not exactly “the web”. When compared to Java or node.js, The term “The web” needs to be substituted with “Web Technologies”. And “web technologies” used in this way don’t necessarily need to be standard-based or work on multiple browsers. The conversation about Fugu APIs is somewhat tangential to Electron and Cordova.</p>

<h3 id="native-apps">Native Apps</h3>

<p>When adding capabilities to the web platform, the 3rd dimension — the trust and distribution model — cannot be ignored, or taken lightly. When the author claims that <em>“Apple and Mozilla posturing about risks from new capabilities is belied by accepted extant native platform risks”</em>, he is putting the web and native platforms in the same dimension in regards to trust.</p>

<p>Granted, native apps have their <a href="https://www.imore.com/malicious-apps-ios-and-android-clock-24-million-downloads-500000-revenue">own security issues</a> and challenges. But I don’t see how that’s an argument in favor of more web capabilities, like <a href="https://infrequently.org/2020/06/platform-adjacency-theory/#fn-platform-adjacency-theory-25">here</a>. This is a fallacy — the conclusion should be fixing security issues with native apps, not relaxing security for web apps because they’re in a relevance catch-up game with OS capabilities.</p>

<p>Native and web cannot be compared in terms of capabilities, without taking the 3rd dimension of trust and distribution model into account.</p>

<h3 id="app-store-limitations">App Store Limitations</h3>

<p>One of the criticisms about native apps in the theory is about <a href="https://infrequently.org/2020/06/platform-adjacency-theory/#fn-platform-adjacency-theory-22">lack of browser engine choice</a> on iOS. This is a common thread of criticism against Apple, but there is more than one perspective to this.</p>

<p>The criticism is specifically about <a href="https://developer.apple.com/app-store/review/guidelines/#software-requirements">Item 2.5.6</a> of Apple’s app store review guidelines:</p>

<blockquote>“Apps that browse the web must use the appropriate WebKit framework and WebKit JavaScript.”</blockquote>

<p>This might seem anti-competitive, and I do have my own reservation about how restrictive iOS is. But item 2.5.6 cannot be read without the context of the rest of the app-store review guidelines, for example <a href="https://developer.apple.com/app-store/review/guidelines/#accurate-metadata">Item 2.3.12</a>:</p>

<blockquote>“Apps must clearly describe new features and product changes in their ‘What’s New’ text.”</blockquote>

<p>If an app could receive device access permissions, and then included its own framework that could execute code from any web site out there, those items in the app store review guidelines would become meaningless. Unlike apps, web sites don’t have to describe their features and product changes with every revision.</p>

<p>This becomes an even bigger problem when browsers ship experimental features, like the ones in project Fugu, which are not yet considered a standard. Who defines what a browser is? By allowing apps to ship any web framework, the app store would essentially allow the “app” to run any unaudited code, or change the product completely, circumventing the store’s review process.</p>

<p>As a user of both web sites and apps, I think both of them have space in the computing world, although I hope as much as possible could move to the web. But when considering the current state of web standards, and how the dimension of trust and sandboxing around things like Bluetooth and USB is far from being solved, I don’t see how allowing apps to freely execute content from the web would be beneficial for users.</p>

<h3 id="the-pursuit-of-appiness">The Pursuit Of Appiness</h3>

<p>In another related <a href="https://infrequently.org/2020/09/the-pursuit-of-appiness/">blog post</a>, the same author addresses some of this, when speaking about native apps:</p>

<blockquote>“Being ‘an app’ is merely meeting a set of arbitrary and changeable OS conventions.”</blockquote>

<p>I agree with the notion that the definition of “app” is arbitrary, and that its definition relies on whoever defines the app store policies. But today, the same is true for browsers. The claim from the post that <em>web applications are safe by default</em> is also somewhat arbitrary. Who draws the line in the sand of “what is a browser”? Is the Facebook app with a built-in browser “a browser”?</p>

<p>The definition of an app is arbitrary, but also important. The fact that every revision of an application using low-level capabilities is audited by <em>someone</em> that I might trust, even if that someone is arbitrary, makes apps what they are. If that <em>someone</em> is the manufacturer of the hardware I’ve paid for, it makes it even less arbitrary — the company that I’ve bought my computer from is the one auditing software with lower capabilities to that computer.</p>

<h3 id="everything-can-be-a-browser">Everything Can Be A Browser</h3>

<p>Without drawing a line of “what&rsquo;s a browser”, which is what the Apple app store essentially does, every app could ship its own web engine, lure the user to browse to any website using its in-app browser, and add whatever tracking code it wants, collapsing the 3rd dimension difference between apps and websites.</p>

<p>When I use an app on iOS, I know my actions are currently exposed to two players: Apple &amp; the identified app manufacturer. When I use a website on Safari or in a Safari WebView, my actions are exposed to Apple &amp; to the owner of the top-level domain of the web site I’m currently viewing. When I use an in-app browser with an unidentified engine, I am exposed to Apple, the manufacturer of the app, and to the owner of the top-level domain. This can create avoidable same-origin violations, such as the owner of the app tracking all of my clicks on foreign websites.</p>

<p>I agree that perhaps the line in the sand of “Only WebKit” is too harsh. What would be an alternative definition of a browser that wouldn’t create a backdoor for tracking user browsing?</p>

<h3 id="other-criticism-about-apple">Other Criticism About Apple</h3>

<p>The theory claims that Apple’s decline to implement features is not limited to privacy/security concerns. It includes a <a href="https://caniuse.com">link</a>, which does indeed show a lot of features that are implemented in Chrome and not in Safari. However, when scrolling down, it also lists a sizable amount of other features that are implemented in Safari and not in Chrome.</p>

<p>Those two browser projects have different priorities, but it’s far from the categorical statement <a href="https://infrequently.org/2020/06/platform-adjacency-theory/#fn-platform-adjacency-theory-18">“The game becomes clear when zooming out”</a> and from the harsh criticism about Apple trying to cast the web in amber.</p>

<p>Also, the links titled <strong>it&rsquo;s hard and we don&rsquo;t want to try</strong> lead to Apple’s <a href="https://twitter.com/othermaciej/status/1277836968605265921?s=20">statements</a> that they would implement features if security/privacy concerns were met. I feel that putting these links with those titles is misleading.</p>

<p>I would agree with a more balanced statement, that Google is a lot more bullish than Apple about implementing features and advancing the web.</p>

<h3 id="permission-prompt">Permission Prompt</h3>

<p>Google goes long innovative ways in the 3rd dimension, developing new ways to broker trust between the user, the developer and the platform, sometimes with great success, like in the case of <a href="https://developers.google.com/web/android/trusted-web-activity">Trusted Web Activities</a>.</p>

<p>But still, most of the work in the 3rd dimension as it relates to device APIs is focused around permission prompts and <a href="https://twitter.com/reillyeon/status/1321484051006414848">making them more scary</a>, or things like time-box permission grants, and block-listed domains.</p>

<p>“Scary” prompts, like the ones in <a href="https://emilymstark.com/2020/07/14/debunking-the-users-always-click-yes-myth.html">this example</a> we see from time to time, look like they are meant to discourage people from going to pages that seem potentially malicious. Because they’re so blatant, those warnings encourage developers to move to safer APIs and to renew their certificates.</p>

<p>I wish that for device-access capabilities we could come up with prompts that encourage engagement and ensure that the engagement is safe, rather than discourage it and transfer the liability to the user, with no remediation available for the web developer. More on that later.</p>

<p>I do agree with the argument that Mozilla &amp; Apple should at least try to innovate in that space rather than “decline to implement”. But maybe they are? I think <a href="https://github.com/privacycg/is-logged-in">isLoggedIn</a> from Apple, for example, is an interesting and relevant proposal in the 3rd dimension that future device APIs could build upon — for example, device APIs that are fingerprinting-prone can be made available when the current website already knows the identity of the user.</p>

<h2 id="webusb">WebUSB</h2>

<p>In the next section I will dive into WebUSB, check what it allows, and how it’s handled in the 3rd dimension — what is the trust and distribution model? Is it sufficient? What are the alternatives?</p>

<h3 id="the-premise">The Premise</h3>

<p>The <a href="https://wicg.github.io/webusb/">WebUSB API</a> allows full access to the USB protocol for device-classes that are not <a href="https://groups.google.com/a/chromium.org/g/blink-dev/c/LZXocaeCwDw">block-listed</a>.</p>

<p>It can achieve powerful things like connecting to an <a href="https://github.com/webusb/arduino">Arduino</a> board or <a href="https://webadb.github.io/">debugging an Android phone</a>.</p>

<p>It’s exciting to see <a href="https://www.youtube.com/watch?v=IpfZ8Nj3uiE">Suz Hinton’s videos</a> on how this API can help achieve things that were very expensive to achieve before.</p>

<p>I truly wish platforms found ways to be more open and allow quick iterations on educational hardware/software projects, as an example.</p>

<h3 id="funny-feeling">Funny Feeling</h3>

<p>But still, I get a funny feeling when I look at what WebUSB enables, and the <a href="https://www.srlabs.de/">existing security issues</a> with USB in general.</p>

<p>USB feels too powerful as a protocol exposed to the web, even with permission prompts.</p>

<p>So I’ve researched further.</p>

<div class="partners__lead-place"></div>

<h3 id="mozilla-s-official-view">Mozilla&rsquo;s Official View</h3>

<p>I started by reading what <a href="https://dbaron.org/">David Baron</a> had to say about why Mozilla ended up rejecting WebUSB, in Mozilla’s <a href="https://github.com/mozilla/standards-positions/issues/100">official standards position</a>:</p>

<blockquote>“Because many USB devices are not designed to handle potentially-malicious interactions over the USB protocols and because those devices can have significant effects on the computer they’re connected to, we believe that the security risks of exposing USB devices to the Web are too broad to risk exposing users to them or to explain properly to end users to obtain meaningful informed consent.”</blockquote>

<h3 id="the-current-permission-prompt">The Current Permission Prompt</h3>

<p>This is what Chrome’s WebUSB permission prompt looks like at the time of publishing this post:</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png"
			
			sizes="100vw"
			alt="Permission Prompt"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Permission Prompt. (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/75452ff6-887e-4bc2-baa2-8674f58100cc/1-web-expose-hardware-capabilities.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>Particular domain Foo wants to connect to particular device Bar. To do what? and how can I know for sure?</p>

<p>When granting access to the printer, camera, microphone, <a href="https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API">GPS</a>, or even to a few of the more contained <a href="https://web.dev/bluetooth/">WebBluetooth</a> GATT profiles like <a href="https://www.bluetooth.com/specifications/gatt/">heart rate monitoring</a>, this question is relatively clear, and focuses on the <em>content</em> or <em>action</em> rather than on the <em>device</em>. There is a clear understanding of what information I want from the peripheral or what action I want to perform with it, and the user-agent mediates and makes sure that this particular action is handled.</p>

<h3 id="usb-is-generic">USB Is Generic</h3>

<p>Unlike the devices mentioned above that are exposed via special APIs, USB is not content-specific. As mentioned in <a href="https://wicg.github.io/webusb/#introduction">the intro of the spec</a>, WebUSB goes further and is intentionally designed for unknown or not-yet-invented types of devices, not for well-known device classes like keyboards or external drives.</p>

<p>So, unlike the cases of the printer, GPS and camera, I cannot think of a prompt that would inform the user of what granting a page permission to connect to a device with WebUSB would allow in the content realm, without a deep understanding of the particular device and auditing the code that’s accessing it.</p>

<h3 id="the-yubikey-incident-and-mitigation">The Yubikey Incident And Mitigation</h3>

<p>A good example from not too long ago is the <a href="https://www.wired.com/story/chrome-yubikey-phishing-webusb/">Yubikey incident</a>, where Chrome’s WebUSB was used to phish data from a USB-powered authentication device.</p>

<p>Since this is a security issue that is said to be resolved, I was curious to dive into Chrome’s <a href="https://www.yubico.com/support/security-advisories/ysa-2018-02/">mitigation efforts</a> in Chrome 67, which include blocking <a href="https://github.com/chromium/chromium/blob/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/chrome/browser/usb/usb_blocklist.cc#L59">a specific set of devices</a> and <a href="https://github.com/chromium/chromium/blob/0aee4434a4dba42a42abaea9bfbc0cd196a63bc1/third_party/blink/renderer/modules/webusb/usb_device.cc#L520">a specific set of classes</a>.</p>

<h3 id="class-device-block-list">Class/Device Block-List</h3>

<p>So Chrome’s actual defense against WebUSB exploits that happened in the wild, in addition to the currently very general permission prompt, was to block specific devices and device classes.</p>

<p>This may be a straightforward solution for a new technology or experiment, but will become harder and harder to accomplish when (and if) WebUSB becomes more popular.</p>

<p>I’m afraid that the people innovating on educational devices via WebUSB might reach a difficult situation. By the time they’re done prototyping, they could be facing a set of ever-changing non-standard block lists, that only update together with browser versions, based on security issues that have nothing to do with them.</p>

<p>I think that standardizing this API without addressing this will end up being counterproductive to the developers relying on it. For example, someone could spend cycles developing a WebUSB application for motion detectors, only to find out later that motion detectors become a blocked class, either due to security reasons or because the OS decides to handle them, causing their entire WebUSB effort to go to waste.</p>

<h3 id="security-vs-features">Security Vs. Features</h3>

<p>The platform adjacency theory, in some ways, considers capabilities and security to be a zero-sum game, and that being too conservative on security &amp; privacy concerns would cause platforms to lose their relevance.</p>

<p>Let’s take Arduino as an example. Arduino communication is possible with WebUSB and is a <a href="https://webusb.github.io/arduino/demos/">major use case</a>. Someone developing an Arduino device will now have to consider a new threat scenario, where a site tries to access their device using WebUSB (with some user permission). As per <a href="https://wicg.github.io/webusb/#attacking-the-host">the spec</a>, this device manufacturer now has to “design their devices to only accept signed firmware”. This can add burden to firmware developers, and increase development costs, while the whole purpose of the spec is to do the opposite.</p>

<h3 id="what-makes-webusb-different-from-other-peripherals">What Makes WebUSB Different From Other Peripherals</h3>

<p>In browsers, there is a clear distinction between user interactions and synthetic interactions (interactions instantiated by the web page).</p>

<p>For example, a web page can’t decide on its own to click a link on or wake up the CPU/display. But external devices can — for example, a mouse device can click a link on behalf of the user and almost any USB device can wake up the CPU, depending on the OS.</p>

<p>So even with the current WebUSB specification, devices can choose to implement several interfaces, e.g. debug for <a href="https://developer.android.com/studio/command-line/adb">adb</a> and <a href="https://www.usb.org/hid">HID</a> for pointer input, and using malicious code that takes advantage of ADB, become a keylogger and browse websites on behalf of the user, given the right exploitable firmware flashing mechanism.</p>

<p>Adding that device to a blocklist would be too late for devices with firmware that was compromised using ADB or other allowed forms of flashing, and would make device manufacturers even more reliant than before on browser versions for security fixes associated with their devices.</p>

<h3 id="informed-consent-content">Informed Consent &amp; Content</h3>

<p>The problem with informed consent and USB, as mentioned before, is that USB (specifically in the extra-generic WebUSB use-cases) is not content-specific. Users know what a printer is, what a camera is, but “USB” for most users is merely a cable (or a socket) — a means to an end — very few users know that USB is a protocol and what enabling it between websites and devices means.</p>

<p>One suggestion was to have a “scary” prompt, something along the lines of “Allow this web page to take over the device” (which is an improvement over the seemingly harmless “wants to connect”).</p>

<p>But as scary as prompts get, they cannot explain the breadth of possible things that can be done with raw access to a USB peripheral that the browser doesn’t know intimately, and if they did, no user in their right mind would click “Yes”, unless it’s a device that they fully trust to be bug-free and a website they truly trust to be up-to-date and not malicious.</p>

<p>A possible prompt like that would read “Allow this web page to potentially take over your computer”. I don’t think that a scary prompt like this one would be beneficial for the WebUSB community, and constant changes to these dialogs will leave the community confused.</p>

<h3 id="prototyping-vs-product">Prototyping Vs. Product</h3>

<p>I can see a possible exception to this. If the premise of WebUSB and the other project Fugu APIs was to support prototyping rather than product-grade devices, all-encompassing generic prompts could make sense.</p>

<p>In order to make that viable, though, I think the following must happen:</p>

<ol>
<li>Use language in the specs that set expectations about this being for prototyping;</li>
<li>Have these APIs available only after some opt-in gesture, like having the user enable them manually in the browser settings;</li>
<li>Have “scary” permission prompts, like the ones for invalid SSL certificates.</li>
</ol>

<p>Not having the above makes me think that these APIs are for real products rather than for prototypes, and as such, the feedback holds.</p>

<h2 id="an-alternative-proposal">An Alternative Proposal</h2>

<p>One of the parts in the original blog post that I agree with is that it’s not enough to say “no” — major players in the web world who decline certain APIs for being harmful should also play offense and propose ways in which these capabilities that matter to users and developers can be safely exposed. I don’t represent any major player, but I’m going to give it a humble go.</p>

<p>I believe that the answer to this lies in the 3rd dimension of trust and relationship, and that it’s outside the box of permission prompts and block-lists.</p>

<h3 id="straightforward-and-verified-prompt">Straightforward And Verified Prompt</h3>

<p>The main case I’m going to make is that the prompt should be about the content or action, and not about the peripheral, and that informed consent can be granted for a specific straightforward action with a specific set of verified parameters, not for a general action like “taking over” or “connecting to” a device.</p>

<h3 id="the-3d-printer-example">The 3D Printer Example</h3>

<p>In the <a href="https://wicg.github.io/webusb/#app-drivers">WebUSB spec</a>, 3D printers are brought as an example, so I’m going to use it here.</p>

<p>When developing a WebUSB application for a 3D printer, I want the browser/OS prompt to ask me something along the lines of <strong>Allow AutoDesk 3ds-mask to print a model to your CreatBot 3D printer?</strong>, be shown a browser/OS dialog with some print parameters, like refinement, thickness and output dimensions, and with a preview of what’s going to be printed. All of these parameters should be verified by a trusted user agent, not by a drive-by web page.</p>

<p>Currently, the browser doesn’t know the printer, and it can verify only some of the claims in the prompt:</p>

<ul>
<li>The requesting domain has a certificate registered to AutoDesk, so there is some certainty that this is AutoDesk Inc;</li>
<li>The requested peripheral calls itself “CreatBot 3d printer”;</li>
<li>This device, device class and domain are not found in the browser’s block-lists;</li>
<li>The user responded “Yes” or “No” to a general question they were asked.</li>
</ul>

<p>But in order to show a truthful prompt and dialog with the above details, the browser would also have to verify the following:</p>

<ul>
<li>When permission is granted, the action performed will be printing a 3D model, and nothing but that;</li>
<li>The selected parameters (refinement/thickness/dimensions etc.) are going to be respected;</li>
<li>A verified preview of what is going to be printed was shown to the user;</li>
<li>In certain sensitive cases, an additional verification that this is in fact AutoDesk, maybe with something like a revokable short-lived token.</li>
</ul>

<p>Without verifying the above, a website that was granted permission to “connect to” or “take over” a 3D printer can start printing huge 3D models due to a bug (or malicious code in one of its dependencies).</p>

<p>Also, an imagined full-blown web 3D printing capability would do a lot more than what WebUSB can provide — for example, spooling and queuing different print requests. How would that be handled if the browser window is closed? I haven’t researched all the possible WebUSB peripheral use-cases, but I’m guessing that when looking at them from a content/action perspective, most will need more than USB access.</p>

<p>Because of the above, using WebUSB for 3D printing will probably be hacky and short-lived, and developers relying on it will have to provide a “real” driver for their printer at some point. For example, if OS vendors decide to add built-in support for 3D printers, all sites using that printer with WebUSB would stop working.</p>

<h3 id="proposal-driver-auditing-authority">Proposal: Driver Auditing Authority</h3>

<p>So, overarching permissions like “take over the peripheral” are problematic, we don’t have enough information in order to show a full-fledged parameter dialog and verify that its results are going to be respected, and we don’t want to send the user on an unsafe trip to download a random executable from the web.</p>

<p>But what if there was an <em>audited</em> piece of code, a driver, that used the WebUSB API internally and did the following:</p>

<ul>
<li>Implemented the “print” command;</li>
<li>Displayed an out-of-page print dialog;</li>
<li>Connected to a particular set of USB devices;</li>
<li>Performed some of its actions when the page is in the background (e.g. in a service worker), or even when the browser is closed.</li>
</ul>

<p>An auditing of a driver like this can make sure that what it does amounts to “printing”, that it respects the parameters, and that it shows the print preview.</p>

<p>I see this as being similar to <a href="https://en.wikipedia.org/wiki/Certificate_authority">certificate authorities</a>, an important piece in the web ecosystem that is somewhat disconnected from the browser vendors.</p>

<h3 id="driver-syndication">Driver Syndication</h3>

<p>The drivers don’t have to be audited by Google/Apple, though the browser/OS vendor can choose to audit drivers on its own. It can work like SSL certificate authorities — the issuer is a highly trusted organization; for example, the manufacturer of the particular peripheral or an organization that certifies many drivers, or a platform like Arduino. (I imagine organizations popping up similar to <a href="https://letsencrypt.org/">Let’s Encrypt</a>.)</p>

<p>It might be enough to say to users: “Arduino trusts that this code is going to flash your Uno with <em>this</em> firmware” (with a preview of the firmware).</p>

<h3 id="caveats">Caveats</h3>

<p>This is of course not free of potential problems:</p>

<ul>
<li>The driver itself can be buggy or malicious. But at least it’s audited;</li>
<li>It’s less “webby” and generates an additional development burden;</li>
<li>It doesn’t exist today, and cannot be solved by internal innovation in browser engines.</li>
</ul>

<h3 id="other-alternatives">Other Alternatives</h3>

<p>Other alternatives could be to somehow standardize and improve the cross-browser <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions">Web Extensions</a> API, and make the existing browser add-on stores like <a href="https://chrome.google.com/webstore/category/extensions">Chrome Web Store</a> into somewhat of a driver auditing authority, mediating between user requests and peripheral access.</p>

<h2 id="summary-of-opinion">Summary Of Opinion</h2>

<p>The author, Google and partners’ bold efforts to keep the open web relevant by enhancing its capabilities are inspirational.</p>

<p>When I get down to the details, I see Apple and Mozilla’s more conservative view of the web, and their defensive approach to new device capabilities, as carrying technical merit. Core issues with informed consent around open-ended hardware capabilities are far from being solved.</p>

<p>Apple could be more forthcoming in the discussion to find new ways to enable device capabilities, but I believe this comes from a different perspective about computing, a standpoint that was part of Apple’s identity for decades, not from an anti-competitive standpoint.</p>

<p>In order to support things like the somewhat open-ended hardware capabilities in project Fugu, and specifically WebUSB, the <em>trust model</em> of the web needs to evolve beyond permission prompts and domain/device block-lists, drawing inspiration from trust ecosystems like certificate authorities and package distributions.</p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
    <li><a title="Read 'How Improving Website Performance Can Help Save The Planet'" href="https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/" rel="bookmark">How Improving Website Performance Can Help Save The Planet</a></li>
    <li><a title="Read 'Towards An Ad-Free Web: Diversifying The Online Economy'" href="https://www.smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/" rel="bookmark">Towards An Ad-Free Web: Diversifying The Online Economy</a></li>
    <li><a title="Read 'Is There A Future Beyond Writing Great Code?'" href="https://www.smashingmagazine.com/2019/11/future-beyond-writing-great-code/" rel="bookmark">Is There A Future Beyond Writing Great Code?</a></li>
    <li><a title="Read 'Using Ethics In Web Design'" href="https://www.smashingmagazine.com/2018/03/using-ethics-in-web-design/" rel="bookmark">Using Ethics In Web Design</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(ra, yk, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Frederick O’Brien</author><title>Towards An Ad-Free Web: Diversifying The Online Economy</title><link>https://www.smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/</link><pubDate>Mon, 04 Jan 2021 13:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/</guid><description>The founding principles of the World Wide Web have been warped by years of over-reliance on advertising. Fixing that imbalance and moving toward a more ethical, open web means relaying the foundations, with sites showing other ways are possible. Incorporate sustainability into your designs. Communicate what you do and how you survive and what people can do to help. Progress does not happen on its own!</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2021/01/towards-ad-free-web-diversifying-online-economy/" />
              <title>Towards An Ad-Free Web: Diversifying The Online Economy</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Towards An Ad-Free Web: Diversifying The Online Economy</h1>
                  
                    
                    <address>Frederick O’Brien</address>
                  
                  <time datetime="2021-01-04T13:00:00&#43;00:00" class="op-published">2021-01-04T13:00:00+00:00</time>
                  <time datetime="2021-01-04T13:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Money talks, and there is an awful lot of money on the web these days. That is not necessarily a bad thing in and of itself, but it does seem to have hamstrung how websites are designed and financed. The pandemic — and the consequent collapse of an already warped online ad ecosystem — makes it all the clearer that the web needs to diversify the way it makes money, and who it ultimately serves.</p>

<h2 id="state-of-the-web">State Of The Web</h2>

<p>The Internet is not in the best shape right now. Back in 2017, the founder of the World Wide Web, <a href="https://www.theguardian.com/technology/2017/nov/15/tim-berners-lee-world-wide-web-net-neutrality">Sir Tim Berners-Lee</a>, said:</p>

<blockquote>“The system is failing. The way ad revenue works with clickbait is not fulfilling the goal of helping humanity promote truth and democracy.”</blockquote>

<p>I think it’s safe to say things have largely gotten worse since then. Ads everywhere, tracking run amok, clickbait, misinformation, net neutrality under siege&hellip; engagement is king — more important than nuance, ethics, or truth — because that’s where the money is. <a href="https://goadfuel.com/the-daily-ad-exposure-how-many-ads-does-the-average-person-see-each-day/#:~:text=Research%20on%20the%20exact%20number,4%2C000%20to%2010%2C000%20ads%20daily.">The average user sees thousands of ads per day</a>. The World Wide Web isn’t exactly humanity’s shining light right now, at a time when a whole lot of things are compounding our general sense of inescapable doom.</p>

<p>In the midst of this dog-track-dog online culture, the common website has been browbeaten into meek, insipid husks of what they could be. Can we get another ad in there? What about a few more pop-ups? Maybe a few affiliate links. We’ve all experienced the insidiousness of the modern web, we’ve all seen the pop-ups saying ‘We care about your privacy’ before asking us to sign away our privacy. One tires of being lied to so often, and so casually.</p>

<p>Still, I’m not here to complain. At least, I’m not <em>just</em> here to complain. There are flickers of light in the darkness. There are other ways to pay for websites. It’s just as well too because <a href="https://www.vox.com/recode/2019/6/24/18715421/internet-free-data-ads-cost">legislation will catch up with the wild wild World Wide Web eventually</a> and then ads will be worth even less.</p>

<p>That’s what this piece is about: alternatives, and why they’re worth embracing. There will always be ads, and up to a point that’s fine, but there shouldn’t <em>only</em> be ads.</p>

<h4 id="other-resources">Other Resources</h4>

<ul>
<li>“<em><a href="https://themarkup.org/blacklight/2020/09/22/blacklight-tracking-advertisers-digital-privacy-sensitive-websites">The High Privacy Cost of a “Free” Website</a></em>,” <em>Matt Chase</em></li>
<li><em><a href="https://www.nytimes.com/2020/12/16/technology/google-monopoly-antitrust.html">10 States Accuse Google of Abusing Monopoly in Online Ads</a></em>, <em>David McCabe &amp; Daisuke Wakabayashi</em></li>
</ul>

<h2 id="exploring-alternatives">Exploring Alternatives</h2>

<p>Not every website needs to make money. Let’s get that out of the way. Making money is not the measure of a thing. Not every website needs to care about cost. Hobbies, blogs, forums, digital art… plenty of things are worth doing for their own sake.</p>

<p>This article is directed at sites or web apps that offer some kind of service, with operational costs and long-term financial factors that extend beyond a few dollars on a domain name. This article is about widening the horizon of the online economy beyond ads, ads, and more ads.</p>

<h3 id="subscriptions">Subscriptions</h3>

<p>This is probably the most obvious alternative to ads, and trickier than you might think to implement. The principle of it is simple: a website does something of value and asks users to pay for it.</p>

<p>A major advantage of subscriptions is their simplicity. Want X? Pay for X. More and more people are wising up to the fact that few things online are truly free. More often than not when an online service is ‘free’ its users are the product. A valuable service reasonably priced is a welcome antidote to that.</p>

<p>A high profile example of this is <a href="https://productmint.com/the-medium-business-model-how-does-medium-make-money/">Medium</a>. Signing up for a few dollars a month gives members access to articles. It’s an increasingly popular approach in editorial circles. Some publications, like <em>The Guardian</em>, make their content accessible to everyone, while the likes of <em>The New York Times</em> use a paywall. In either case, the pitch is the same: help make what we do possible by subscribing.</p>

<p><em>Smashing</em> itself does this well, having pivoted away from ads during the big site redesign a few years back. Ads still play a big part, yes, but they’re not the <em>only</em> part. Sustainability online isn’t about moving all your eggs from one basket to another — it’s about variety, about escaping the tunnel vision of advertising.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/544842f6-d36f-4fab-96d5-bba83de7bb82/smashing-magazine-signup.png"
			
			sizes="100vw"
			alt="Signup prompt for Smashing Magazine membership"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Weaving tasteful, on-brand subscription prompts into a site’s design can help you build a strong community. (Why yes, you can <a href='https://www.smashingmagazine.com/membership/'>learn more about becoming a Smashing member here</a>.)
    </figcaption>
  
</figure>

<p>There are examples of subscriptions and donations working away from editorial contexts. <a href="https://www.lynda.com/">Lynda</a> charges for its courses. <a href="https://wikipedia.org">Wikipedia</a>, mercifully, is ad-free, sustained by intermittent <a href="https://donate.wikimedia.org/wiki/Ways_to_Give">donation drives</a> to its parent organization, the Wikimedia Foundation.</p>

<p>The subscription approach isn’t for everyone. The above examples all happen to be household names, after all. Strange that. Trust is such a big factor, and if you’re new on the block how many people are likely to give you their moola?</p>

<p>And, of course, there is also the Catch-22 situation of paywalls making a site inaccessible to most of the Internet. It’s bad for growing an audience and at odds with the web’s founding spirit of openness and transparency. That doesn’t sit well with a lot of people — including myself.</p>

<p>I think the saving grace here is that the ‘subscription model’ is much more of a spectrum than it was even five years ago. You can have everything from paywalls to ‘buy me a coffee’ buttons depending on what a website does.</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png"
			
			sizes="100vw"
			alt="A generic ‘Buy Me a Coffee’ button"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bc4f5584-4493-4a7f-bf66-46682ae9df85/buy-coffee-button.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>If you provide a service — be it quality editorial content, useful tools, open access to data, or whatever else — don’t be shy about asking for support. And don’t be shy about incorporating those requests into the website’s design. A variety of tools and platforms can be integrated into existing sites with relative ease. <a href="https://www.patreon.com/">Patreon</a>, <a href="https://ko-fi.com/">Ko-fi</a>, and plenty more.</p>

<p>This is not about making people feel guilty. Not everyone can afford to support the sites they visit, and not everyone will think you’re worth supporting. It’s on you to make a positive case for yourself. Crowdfunding platforms like <a href="https://opencollective.com/">Open Collective</a> and <a href="https://chuffed.org/">Chuffed</a> are especially good reference points for this, modeling behavior such as:</p>

<ul>
<li>Not making visitors feel guilty;</li>
<li>Telling stories people want to be part of and support;</li>
<li>Transparency about where the money’s going.</li>
</ul>

<p>There is also the question of integration. Buttons, pop-ups, prudently placed CTAs. It all adds up, having started and pushed a <a href="https://romanroadlondon.com/support-us/">reader patron scheme</a> at a previous job.</p>

<div class="partners__lead-place"></div>

<h4 id="other-resources-resources">Other Resources &amp; Resources</h4>

<ul>
<li><em><a href="https://writersanctuary.com/review-monetizing-with-buy-me-a-coffee-does-it-work/">Monetising With Buy Me a Coffee, Does it Work?</a></em>, <em>Michael Brockbank</em></li>
<li><em><a href="https://opencollective.com/">Open Collective</a></em>, <em>a platform for transparent financing</em></li>
</ul>

<h3 id="micropayments">Micropayments</h3>

<p>It’s early days for this one, but something to keep an eye on. Web Monetization is a concept whereby Internet users have a kind of fund they top up regularly — let’s say $5 every month. When time is spent on a site, a fraction of the fund is transferred to that site.</p>

<p>The Brave web browser is a major example of this. Another is Web Monetization, which is <a href="https://webmonetization.org/">being proposed as a W3C standard</a>. Or Scroll, a kind of catch-all ad-free web package.</p>

<p>This approach seems to have struck a nerve, I think because it hits a balance between a Wild West Internet and a corporate one. The more people believe in it, the better it works. Three billion people use the web. If 10% signed up for three bucks a month that would still be a cool ten billion dollars up for grabs.</p>

<p>For the time being results are closer to pennies. But hey, nothing worth having comes easy. Supporting this approach is a two-way street. Depending on the system, implementation can be as simple as adding a line of code to the <code>&lt;head&gt;</code> of your website. It’s also a case of walking the walk.</p>

<p>Will this approach alone save the Internet? Probably not, but again, moving away from ads is about diversification, not finding a silver bullet.</p>

<h3 id="free-non-corporate-platforms">Free, Non-Corporate Platforms</h3>

<p>Now obviously, free platforms are not the answer to large-scale applications and web experiences. They are, however, often a perfect way to have an online presence without being sucked into the engagement black hole of modern social media.</p>

<p>Places like <a href="https://neocities.org/">Neocities</a> — a homage of sorts to GeoCities — still have a lot of life in them. I know, I’m on it. Independent, playful non-corporate platforms feel like something from another time, but they’re still perfectly good ways of planting your flag online.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png"
			
			sizes="100vw"
			alt="Mobile screenshot of the Neocities website"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Weird, wonderful, self-reliant web communities are alive and well. You just have to seek them out. (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/36022b39-7243-4337-b224-29450945c064/neocities.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>It seems marketing has hammered into people that the only website worth having is one you’re paying through the nose for. Not so. The DIY weird web is alive and well.</p>

<p>With the likes of <a href="https://www.netlify.com/">Netlify</a> and <a href="https://pages.github.com/">GitHub pages</a> about it’s perfectly possible to piggyback along without paying for anything more than a domain name, and even that is optional.</p>

<p>Of course, there is a limit to this kind of approach, but that doesn’t make it any less viable. By the time a website is bringing in enough traffic to warrant a dedicated hosting plan, it’s likely well placed to be asking for support.</p>

<h4 id="other-resources-1">Other Resources</h4>

<ul>
<li><em><a href="https://www.smashingmagazine.com/2020/08/autonomy-online-indieweb/">Autonomy Online: A Case For The IndieWeb</a></em>, <em>Ana Rodrigues</em></li>
</ul>

<h2 id="taking-control-of-your-data">Taking Control Of Your Data</h2>

<p>All this talk of diversification and sustainability ties into a broader discussion going on right now about privacy. Half the battle is messaging. Although awareness is growing, a lot of people still don’t know about the costs of ‘free’ online experiences. That’s not an accident. Take the time to explain that if someone subscribes to a website’s service, they’re not just receiving the service. They’re receiving priority, respect, and privacy.</p>

<p>Advocating for a less ad-centric web means taking an honest look at who our masters are online. When you make a site, who is the site for? Is it for advertisers? Affiliates? Clients? Or is it for the people visiting the site? How lovely would it be to have robust, ethical income strategies that made websites beholden first and foremost to the people who use them.</p>

<h2 id="the-role-of-developers">The Role Of Developers</h2>

<p>In a line of work where projects are increasingly fragmented, it’s easy to remove oneself from the moral failings of any given project. Edward Snowden said the same was true of the NSA spying programs he leaked in 2013. Just this year <a href="https://www.digitalinformationworld.com/2020/06/edward-snowden-tech-workers-role-in-helping-the-apps-violate-user-privacy.html">he identified social networks and apps as carrying similar risks</a>.</p>

<p>Incorporate sustainability into your designs. Communicate what you do and how you survive and what people can do to help. Progress does not happen on its own. It never has and it never will. We have to be the change we want to see.</p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/">Thoughts On Markdown</a></li>
<li><a href="https://www.smashingmagazine.com/2024/09/how-build-custom-data-visualizations-luzmo-flex/">How To Build Custom Data Visualizations Using Luzmo Flex</a></li>
<li><a href="https://www.smashingmagazine.com/2020/01/mythical-man-month/">The Mythical Mythical Man-Month</a></li>
<li><a href="https://www.smashingmagazine.com/2024/06/how-improve-microcopy-ux-writing-tips-non-ux-writers/">How To Improve Your Microcopy: UX Writing Tips For Non-UX Writers</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(ra, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>John Foreman</author><title>The Mythical Mythical Man-Month</title><link>https://www.smashingmagazine.com/2020/01/mythical-man-month/</link><pubDate>Wed, 15 Jan 2020 13:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2020/01/mythical-man-month/</guid><description>How do you move faster when adding folks to a project supposedly slows it down? Mailchimp’s CPO takes the reader through some considerations for preserving momentum while scaling up. Software is difficult to build with lots of complex interdependencies. And everyone needs to work together to get it done. As you work to manage dependencies and introduce tools to help scale, make sure you clearly communicate the why behind the practices.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2020/01/mythical-man-month/" />
              <title>The Mythical Mythical Man-Month</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>The Mythical Mythical Man-Month</h1>
                  
                    
                    <address>John Foreman</address>
                  
                  <time datetime="2020-01-15T13:00:00&#43;00:00" class="op-published">2020-01-15T13:00:00+00:00</time>
                  <time datetime="2020-01-15T13:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>As a product leader at a tech company, I am a bottomless pit of need. My job as the Chief Product Officer at Mailchimp is to bring the product to market that’s going to <em>win</em> in a very competitive space. Mailchimp’s aspirations are high, and to realize them we need to deliver a substantial amount of product to the market. Oftentimes to many at the company, it feels like we are doing <em>too much.</em> We’re always at the edge of the wheels coming off.</p>

<p>And when you’re doing too much and you decide to do more than even that, you will inevitably begin to hear <em><a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month">The Mythical Man-Month</a></em> referenced. It’s like one of those stress-relief balls where if you squeeze one end, then out pops the <em>Mythical Man-Month</em> at the other end.</p>

<p>Published by Frederick Brooks back in 1975 (you remember 1975, right? When software development 100% resembled software development in 2020?), this book is rather famous amongst software engineers. Specifically, there’s one point in the entire book that’s famous (I’m not convinced people read anything but this point if they’ve read the book at all):</p>

<blockquote>“...adding more men lengthens, not shortens, the schedule.”</blockquote>

<p>Easy fix. I’ll just staff women to projects from now on (see the <em>Return of the King</em> and <a href="https://www.youtube.com/watch?v=dQ_-rmuPZC4">the fight against the Witch King of Angmar</a>).</p>

<p>But let’s assume that Brooks’ point holds regardless of the gender identification of the software engineers in question. Here’s the point: software is difficult to build with lots of complex interdependencies. And everyone needs to work together to get it done.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/image-optimization/">Image Optimization</a></strong>, Addy Osmani’s new practical guide to optimizing and delivering <strong>high-quality images</strong> on the web. Everything in one single <strong>528-pages</strong> book.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2c669cf1-c6ef-4c87-9901-018b04f7871f/image-optimization-shop-cover-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/87fd0cfa-692e-459c-b2f3-15209a1f6aa7/image-optimization-shop-cover-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<p>As I add people to a team, they need to be onboarded and grafted into the project. Someone’s gotta carve off the right work for them. The team has to communicate to make sure their stuff all works together, and each additional person increases that communication complexity geometrically. And at some point, adding people becomes a burden to the project — not a benefit.</p>

<p>Here’s the graph from the book illustrating that point:</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png"
			
			sizes="100vw"
			alt="As you add people to tasks with complex interdependencies, progress grinds to a halt"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      Add people to go slow (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/658bb92e-f120-4930-bc82-04093e9e7e33/mythical-man-month-2-4.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>This is absolutely a fair point. That’s why I hear it so much at work. Exhausted individual contributors and exhausted leaders alike will toss it out — we can’t go faster, we can’t do more, stop the hiring, read <em>The Mythical Man-Month</em> and despair! The only solution is apparently to stop growing and kill some projects.</p>

<p>When I as CPO say, “we’re going to do this thing!” the reply then is often, “OK, so then what are we going to kill?” The <em>Mythical Man-Month</em> <strong>turns product development into a zero-sum game. If we want one thing, we must stop another.</strong> Now, that’s an actual myth, and I call hogwash.</p>

<p>And taken to its pathologically misinterpreted (we’ll get to this) conclusion, the book apparently says that the fastest tech company is one that employs all of four people — four <em>men</em>, apparently. Anything more just slows it all down. Someone should send Amazon, Apple, and Google copies of the book, so they can fix their obviously bloated orgs.</p>

<p>The only problem with this approach is that in a space where the competition is growing and iterating and executing — merely tamping organizational growth — editing and focusing the workload to match can be a recipe for extinction. You’ll be more sane and less stressed — right until you’re out of a job.</p>

<p>And as the owner of product management for my company, I’m not unsympathetic with this need to slow down and focus. We <strong>must</strong> ruthlessly prioritize! No doubt. But running a product is an exercise in contradiction. I must prioritize what I’ve got while simultaneously scheming to get more done. But what am I to do in the face of the <em>Mythical Man-Month</em>?</p>

<p>Surprisingly, the answer to this question comes from Brooks’ same book. Here’s another graph in the same chapter:</p>














<figure class="
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png"
			
			sizes="100vw"
			alt="Partitionable tasks requiring communication can still add workers and go faster"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/68a0b0cd-3302-4904-96bc-a26ca468a83e/mythical-man-month-2-3.png'>Large preview</a>)
    </figcaption>
  
</figure>

<p>There is a battle in scaling product development. If the work you’re trying to accomplish is purely partitionable, then go ahead and add people! If your work is all connected, then at some point adding people is just wrong.</p>

<p>If someone says that I absolutely have to kill a project in order to start another one, that’s just not the case. If the two projects require very little communication and coordination, then we can scale away.</p>

<p>This is why adding cores to a CPU can increase the experienced speed of your computer or phone up to a point — something engineers should know all about. Sure, adding cores won’t help me complete a complex single-threaded computation. But it may help me run a bunch of <em>independent</em> tasks.</p>

<p>The conflict for a product executive then between scaling and ruthless prioritization can be managed.</p>

<ol>
<li>You ruthlessly prioritize in places that are single-threaded (the backlog for a product team let’s say).</li>
<li>You scale by adding <em>more cores</em> to handle independent work.</li>
</ol>

<p>Very rarely, however, is anything fully-independent of all else at a company. At the bare minimum, your company is going to centralize supporting functions (global IT, legal, HR, etc.) leading to bottlenecks.</p>

<div class="partners__lead-place"></div>

<h2 id="it-s-all-about-dependency-management">It’s All About Dependency Management</h2>

<p>The job of a product executive then becomes not only creating a strategy, but executing in a way that maximizes value for the customer and the business by ensuring throughput and reducing interdependency risk as much as possible. “As much as possible” being key here. That way you can make the company look as much like the latter graph rather than the former. <strong>Interdependency is a disease with no cure</strong>, but its symptoms can be managed with many treatments.</p>

<p>One solution is to assemble a strategic direction for the company that minimizes or limits dependency through a carefully-selected portfolio of initiatives. The funny thing here is that many folks will push back on this. Let’s say I have two options, one where I can execute projects A, B, and C that have very little coordination (let’s say they impact <em>different</em> products), and another option with projects D1, D2, and D3 that have tons of interdependencies (let’s say they all impact the <em>same</em> product). It’s often the case that the <em>Mythical Man-Month</em> will be invoked against the former plan rather than the latter. Because on paper it <strong>looks like more</strong>.</p>

<p>Indeed, it’s less “focused.” But, it’s actually less difficult from a dependency perspective and hence fairs better with added personnel.</p>

<p>Keep in mind, I’m not saying to choose a bunch of work for the company that’s not related. Mailchimp will not be building a microwave oven anytime soon. All work should drive in the same long-term direction. This approach can increase customer experience risk (which we’ll discuss later) as well as the burden on global functions such as customer research. Keep an eye out for that.</p>

<p>Another treatment is to create a product and program management process that facilitates dependency coordination and communication where necessary <strong>without over-burdening teams with coordination if not required</strong>. Sometimes in attempting to manage coordination so we can <em>do more</em> we end up creating such onerous processes that we end up <em>doing less.</em> It’s a balance between doing too little coordination causing the pieces to not inter-operate and doing too much coordination causing the pieces to never get built because we’re all in stand-ups for eternity.</p>

<p>The contention in the <em>Mythical Man-Month</em> is that as you add folks to a software project, the communication needs to increase geometrically. For example, if you have 3 people on the project, that’s 3 lines of communication. But if you have 4, that’s 6 lines of communication. One extra person, in this case, leads to double the communication! Fun. (This is, of course, an over-simplification of communication on software development projects.)</p>

<p>Different people have different roles and hence receive different amounts of autonomy. Perhaps the project manager needs to communicate with everyone on the team. But does an engineer working on the API need to communicate with the product marketer? Or can the marketer just go through the product manager? A good process and meeting cadence can then eliminate unnecessary communication and meetings. The point is that Brooks’ intercommunication formula is an <strong>upper bound on coordination</strong>, not a death sentence.</p>

<p>Finally, use tools, principles, and frameworks combined with independent work over actual collaboration to combat interdependency symptoms. For example, if I can coordinate two teams’ key performance indicators (KPIs, i.e. measurements of success) to incentivize movement in more-or-less the same direction, then their independent work is more likely to end up “closer together” than if their KPIs incentivize orthogonal movement. This won’t ensure things fit together perfectly, only that the work I need to do to make them fit together in the future is less than it might otherwise be. Other examples might include using “even-over” statements, design systems, and automated testing.</p>

<p>So there’s a start. But interdependencies take on lots of forms beyond code. Let me give an example from Mailchimp.</p>

<h2 id="customer-experience-risk-the-hidden-but-acceptable-cost-of-firewalling-work">Customer Experience Risk: The Hidden (But Acceptable?) Cost Of Firewalling Work</h2>

<p>Since Mailchimp’s customer is often a small business owner who’s a marketing novice (and there are millions of small business owners turned marketers worldwide), we must deliver an experience that is seamless and immediately understandable <em>end-to-end</em>. We’re not afforded the luxury of assembling a Frankenstein’s monster of clouds via acquisition the way that enterprise players can. We can’t paper over poorly-integrated software with consultants and account managers.</p>

<p>As a consumer product (think Instagram or a Nintendo Switch or a Roomba), we have to be usable out of the box. For an all-in-one marketing platform meant to power your business, that’s hard! And that means each thing Mailchimp builds must be seamlessly connected from an experience perspective.</p>

<p>But, perfectly partitioning projects then introduces <em>experience risk</em>. It’s not that the code can’t be written independently. That can be achieved, but there’s still a risk that the products will look like they’ve been built by different teams, and that experience can be really damn confusing for the user. We bump up against Conway’s law — our customers can tell where one team’s work ends and the other team’s work begins.</p>

<p>So you try to connect everyone’s work together — not just on the back-end but on the front-end, too. In the ecosystem era, dominated by CX excellence from players like Apple, this has become almost table stakes in the consumer space. But this is a <em>Mythical Man-Month</em> nightmare, though not from an engineering perspective this time. It’s from a service design perspective. As we add more people to all of this “end-to-end” connected work, everything slows to a collaborative crawl.</p>

<p>Other than the third fix I noted above, using tools and frameworks rather than over-watchers and stage-gates, there is another release valve: <em>make some deliberate customer experience trade-offs</em>. Specifically, where are we comfortable releasing an experience that’s <em>disconnected</em> from the rest (i.e. that’s sub-par)? Accepting risk and moving forward is the product leader’s job. And so you use some criteria to sort it out (perhaps it’s not holding new, low-traffic areas of the app to the same experience standards as your “cash cows”), and make a decision (e.g. iteration and learning over polish on adjacent innovations). This, of course, extends beyond design.</p>

<blockquote class="pull-quote">
  <p>
    <a class="pull-quote__link" aria-label="Share on Twitter" href="https://twitter.com/share?text=%0aYou%20can%20always%20short-circuit%20Brooks%e2%80%99%20law%20by%20choosing%20to%20firewall%20efforts,%20including%20efforts%20that,%20in%20a%20perfect%20world,%20shouldn%e2%80%99t%20be%20firewalled!%0a&url=https://smashingmagazine.com%2f2020%2f01%2fmythical-man-month%2f">
      
You can always short-circuit Brooks’ law by choosing to firewall efforts, including efforts that, in a perfect world, shouldn’t be firewalled!

    </a>
  </p>
  <div class="pull-quote__quotation">
    <div class="pull-quote__bg">
      <span class="pull-quote__symbol">“</span></div>
  </div>
</blockquote>

<p>I’ll caveat this by saying the software I build doesn’t kill anyone. I wouldn’t advocate this approach if I were building a medical device. But at a marketing software company, I can deliberately isolate teams knowing that I’ve increased the odds of incompatibility as a trade-off for scaling up personnel and moving faster.</p>

<p>I’m sad to admit that the <em>Mythical Man-Month</em> is a reality at my company, and I suspect at yours as well. But <strong>it’s manageable</strong> — that’s the bottom line. Parallelization and dependency mitigation offer us a way out that limits the near-mythical status of the <em>Mythical Man-Month</em>. So the next time the stark dichotomy is raised at your company (scale to go slower or give up your aspirations) remember that if you’re smart about how you line up the work, you can still grow big.</p>

<h2 id="don-t-forget-about-the-softer-side-of-scaling">Don’t Forget About The Softer Side Of Scaling</h2>

<p>Keep in mind that managing the <em>Mythical Man-Month</em> will not stop engineers from invoking it like dark magic. They’re invoking the principle not only because there’s some truth in it, but because scaling just sucks (always) from an emotional and cognitive perspective. If I think I’m paid to write code and solve customer problems, the last thing I wanna do is change up my routine and figure out how to work with new people and a larger team.</p>

<p>As you scale your company, remember to empathize with the pain of scaling and change. A team that adds even a single member becomes a whole new team from a trust and cultural perspective. People are tired of this change. That means that while you go about managing and mitigating the <em>Mythical Man-Month</em>, you’ll need to manage the emotions surrounding growth. That’s perhaps the most critical task of all.</p>

<p>Strong belief in the <em>Mythical Man-Month</em> by a team in and of itself can bring its conclusions into reality. It’s basically the equivalent of the belief in flying in Peter Pan. If the team believes that scaling will slow them and they don’t buy into the change, they will indeed slow down.</p>

<p>So as you work to manage dependencies and introduce tools to help scale, make sure you clearly communicate the why behind the practices. Get folks involved in selecting the work and processes that mitigate man-month issues, because when they’re part of the change and their outlook changes, suddenly scaling becomes at least culturally possible.</p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2024/04/lessons-learned-after-selling-startup/">Lessons Learned After Selling My Startup</a></li>
<li><a href="https://www.smashingmagazine.com/2024/06/how-improve-microcopy-ux-writing-tips-non-ux-writers/">How To Improve Your Microcopy: UX Writing Tips For Non-UX Writers</a></li>
<li><a href="https://www.smashingmagazine.com/2024/05/building-user-segmentation-matrix-foster-cross-org-alignment/">Building A User Segmentation Matrix To Foster Cross-Org Alignment</a></li>
<li><a href="https://www.smashingmagazine.com/2023/03/ai-technology-transform-design/">How AI Technology Will Transform Design</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(ra, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Ronald Mendez</author><title>Is There A Future Beyond Writing Great Code?</title><link>https://www.smashingmagazine.com/2019/11/future-beyond-writing-great-code/</link><pubDate>Mon, 25 Nov 2019 11:00:00 +0000</pubDate><guid>https://www.smashingmagazine.com/2019/11/future-beyond-writing-great-code/</guid><description>Many developers get to a point in their careers in which they’ve achieved many of their goals and wonder about the future. Although some are confident continuing down the same road, others might feel the urge to explore different options in which their skills can be used to have a broader impact on the projects we work on and the teams we work with. I explored some of the different directions we can take and the complementary skills that can help us throughout our journey.</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2019/11/future-beyond-writing-great-code/" />
              <title>Is There A Future Beyond Writing Great Code?</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>Is There A Future Beyond Writing Great Code?</h1>
                  
                    
                    <address>Ronald Mendez</address>
                  
                  <time datetime="2019-11-25T11:00:00&#43;00:00" class="op-published">2019-11-25T11:00:00+00:00</time>
                  <time datetime="2019-11-25T11:00:00&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>Let’s do a quick exercise. Say you’ve been working professionally as a developer for more than five years. You’ve gained hands-on experience through dozens of projects and kept your skillset sharp by learning about new techniques, tools, and frameworks. You contribute to different libraries, routinely refactor the code you write, and periodically exchange code reviews with your colleagues.</p>

<p>But then someone comes up and asks you that one question you haven’t had the chance to figure out: Where do you see yourself, ten years from now?</p>

<p>You might be worried about the idea that if you continue down the same road, you’ll simply be an older developer who codes a bit better and a bit faster. Some developers are happy with this thought and simply can’t wait to continue down that road. But others might realize that this rollercoaster of lessons and growth you’ve been through is quickly shifting to cruise-control mode.</p>

<p>Once you feel you’re in <a href="https://alistapart.com/article/owning-the-role-of-the-front-end-developer/">complete control of your role as a developer</a>, you start feeling the itch to do more. Not more of the same, but more personal growth instead. Maybe something different.</p>

<p>During the past few years of my career, I’ve been looking for answers. I got the chance to work with (and learn from) many successful developers who managed to transition into highly influential roles in which they make the most out of their technical background. Each of them explored a different path in which they were able to make an organic transition, based on a balance between their core skills and their complementary skills.</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p>Meet <strong><a data-instant href="/printed-books/image-optimization/">Image Optimization</a></strong>, Addy Osmani’s new practical guide to optimizing and delivering <strong>high-quality images</strong> on the web. Everything in one single <strong>528-pages</strong> book.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/image-optimization/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2c669cf1-c6ef-4c87-9901-018b04f7871f/image-optimization-shop-cover-opt.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/87fd0cfa-692e-459c-b2f3-15209a1f6aa7/image-optimization-shop-cover-opt.png"
    alt="Feature Panel"
    width="480"
    height="697"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="where-can-we-go-from-here">Where Can We Go From Here?</h2>

<p>There are some new paths we can explore, that can force us to grow beyond our comfort zones and at the same time benefit from the skillset we’ve worked so hard to cultivate.</p>

<p>As developers, most of the articles we read, the programming books, and even the advice from our peers, are all tailored to help us to only focus on writing better code. Other than that, we’re not really taught how to work better or, to put it in a more philosophical perspective, how to evolve.</p>

<p>We usually have no clue about what comes after achieving the goals we set out for ourselves when we started our careers or if there’s even something we want to do other than coding eight hours a day, for the rest of our lives. It’s common to even underestimate our possible contribution to the team if we were to be doing something other than writing code in the near future. We’re not sure <a href="https://blog.coleadership.com/how-to-make-sense-of-your-impact-when-youre-no-longer-coding/">how we can make a bigger impact</a>, even though our perspective and skills are definitely needed in more influencing positions.</p>

<h2 id="listen-to-the-industry">Listen To The Industry</h2>

<p>Back in 2008, when I started my career as a frontend developer, there wasn’t a person in the world who hadn’t heard of Mark Zuckerberg, the young programmer that became a millionaire while changing the way people communicate. Millennials began to romanticize the idea of legally getting rich while wearing a hoodie. Suddenly, almost every person from my generation wanted to become a developer.</p>

<p>Now, over a decade later, we’re starting to feel the true impact of this boom of coders. Through <a href="https://insights.stackoverflow.com/survey/2019">this year’s Stack Overflow Survey</a>, we learned that more than two-thirds of respondents have less than ten years of professional coding experience.</p>

<p>We can clearly see that experienced developers with leadership skills are scarce, so now companies have to find creative ways to book their best talent in a way that they can oversee more junior developers and maintain the quality of work. This creates an organic leadership structure within growing teams.</p>

<p>The industry continues to grow at a rapid pace and so are our roles as developers. It has become more common to find directors and managers that started out as programmers, and companies are now opening up more leadership positions that require development backgrounds.</p>

<p>It’s safe to say that, even though <a href="https://www.wired.com/2017/02/programming-is-the-new-blue-collar-job/">programming was considered as the next blue-collar job</a>, the role of the developer is growing into highly influential positions within organizations. But there is no written roadmap or proven formula to guide us through that transition.</p>

<h2 id="what-are-some-of-our-options">What Are Some Of Our Options?</h2>

<p>There came a point in my career in which I was asked the dreaded question about the future I envision for myself. I had no answer. In fact, it triggered even more questions that hadn’t crossed my mind.</p>

<p>I was already working as frontend lead so I had been given more and more responsibilities apart from writing code, which made me think of a possible future in which I probably wouldn’t be programming. The possibility of having more impact across different projects was definitely appealing.</p>

<p>So I set out to research what options could be interesting for my future. I looked at the path that some colleagues had taken in which they had successfully transitioned from the role of developers to important positions within the company. Most of the cases consisted of taking small steps and being in the right place at the right time. But overall, they all ended up involving themselves in these three main groups of activities:</p>

<ol>
    <li><strong>Managing teams and projects</strong><br />Leading a group of people into greatness sounds exciting, but it’s not easy. As seasoned developers, there are many options of growth that involve either managing a group of fellow developers as a team or managing projects across multi-disciplinary teams. Although it’s a highly rewarding option, it requires stepping away from the keyboard and learning to delegate, which can be very tricky for developers that are used to personally solving all of their problems.<br /><br />Moving on to a position in which we are in more control of the process and the team involved around it will most likely lead for the need of sacrificing the control we’re used to having when it comes to code.</li>
    <li><strong>Mentoring and developing talent</strong><br />How many bosses have fantasized about cloning their top developers? In the real world, this is still not likely to happen, so smart bosses do the next best thing: they set up processes in which the savviest coders can actively pass along their knowledge to their peers.<br /><br />We have to keep in mind that even though some developers do this naturally in their day-to-day, it’s always more effective if senior developers are given a more formal role in which they can routinely allocate their time to work on the growth of their teams. This can be done with code reviews, workshops, and individual assessments with some colleagues.</li>
    <li><strong>Being in the business of technology</strong><br />It’s very common to hear developers complain about how projects were pitched or defined when they were sold to clients. And, in most cases, it’s usually too late to complain.<br /><br />In my experience, I found myself happier working on projects in which developers had been involved during the sale. It’s always great to have a logical-minded ally flagging potential technical issues in a room where nobody else had a clue.<br /><br />The roles of consultants and technical directors are crucial in large digital projects. The involvement of developers in client workshops and drafting technical documentation at the start of any project can potentially be game-changers for the lifecycle of a project.</li>
</ol>

<div class="partners__lead-place"></div>

<h2 id="working-on-a-new-set-of-tools">Working On A New Set Of Tools</h2>

<p>Let’s say we want to continue to grow and want to embark on a future where we want to do more than just writing code. Once we have an idea about where we’re headed, it’s very likely that we may not yet be prepared for the leap. After all, we’ve just been focusing on acquiring skills that make us better developers.</p>

<p>Once we realize we have a lot to learn, we need to start working on the right set of skills. This time it will be different: we won’t be learning new languages, frameworks, or libraries. We’re going to need to stock up on skills that might have not felt important in the past, but are crucial for taking the next steps in these uncertain territories.</p>

<h3 id="communication">Communication</h3>

<p>For anybody who has a job at any company, this would be a no-brainer. Communication is known to be the core of collaboration within any type of organization. Unfortunately, programmers have been given a free pass in this area for many years. The need to find logical-minded, hard-working, passionate individuals has allowed us to thrive without the need to really have great communication skills and even be a very socially awkward bunch.</p>

<p>If we have any aspirations to work with different teams and clients, it’s very clear that we will have to work on improving all aspects of our communication. One-on-one meetings, presentations, and important emails will all need to be carefully polished from now on.</p>

<h3 id="ownership">Ownership</h3>

<p>Having logical mindsets has impacted on the way we organize our work. As developers, we usually have a black-and-white sense of where our work begins and where it ends. This is positive when it allows us to have a clear understanding of the work that needs to be done by us, but sometimes prevents us from pushing our boundaries and working outside of our comfort zones.</p>

<p>The first order of business is to start taking ownership of all aspects of the work we’re involved in. By blurring the line that defines where a developer’s work ends, we’re able to take on new responsibilities and eventually transition into different roles.</p>

<h3 id="leadership">Leadership</h3>

<p>Wherever we’re headed in our careers, we’re going to need for our teammates to trust us. We’ll need them to know we’re headed in the right direction, even if for a moment it’s not totally clear.</p>

<p>In order to achieve this, we’ll need to be able to prove our knowledge, we’ll need to be confident in our decisions, and we will definitely need to be able to acknowledge our mistakes and quickly learn from them.</p>

<p>This is not a simple task and it’s not something you will be able to check off a list. It’s going to require our dedication for as long as we wish to continue growing outside the development bubble.</p>

<h2 id="get-to-work">Get To Work</h2>

<p>Once we’re sure we want to take a leap in our career, we have to start moving in the right direction. The first step would be to explore the options, decide which path you want to pursue, and see how that path aligns with your current role.</p>

<p>Does your company offer a space in which you could be a mentor or a manager? Do you think that there’s a chance of making it happen there or do you think you will need to continue your growth elsewhere? These are just some of the questions you have to ask yourself and will also lead to a conversation with some of your teammates and managers.</p>

<p>Taking a step in a new direction will require putting in the hard work, having an open mind, and being resilient enough to fail and try again, as many times as it takes.</p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2023/10/problem-wordpress-positioning-not-plugins/">The Problem With WordPress Is Positioning, Not Plugins</a></li>
<li><a href="https://www.smashingmagazine.com/2024/03/developers-strengthen-mental-health/">How Developers Can Strengthen Their Mental Health Amidst High-Pressure Projects</a></li>
<li><a href="https://www.smashingmagazine.com/2023/11/designing-web-design-documentation/">Designing Web Design Documentation</a></li>
<li><a href="https://www.smashingmagazine.com/2021/01/web-expose-hardware-capabilities/">Should The Web Expose Hardware Capabilities?</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(dm, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item><item><author>Jack Lenox</author><title>How Improving Website Performance Can Help Save The Planet</title><link>https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/</link><pubDate>Tue, 15 Jan 2019 12:30:32 +0000</pubDate><guid>https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/</guid><description>Climate change may not seem like an issue that should concern web developers, but the truth is that our work does have a carbon footprint, and it’s about time we started to think about that. As web developers, it’s understandable to feel that this is not an issue over which we have any influence, but this isn’t true. Many efforts are afoot to improve the situation on the web. The Green Web Foundation maintains an ever-growing database of web hosts who are either wholly powered by renewable energy or are at least committed to being carbon neutral. So, apart from powering servers with renewable energy, what else can web developers do about climate change?</description><content:encoded><![CDATA[
          <html>
            <head>
              <meta charset="utf-8">
              <link rel="canonical" href="https://www.smashingmagazine.com/2019/01/save-planet-improving-website-performance/" />
              <title>How Improving Website Performance Can Help Save The Planet</title>
            </head>
            <body>
              <article>
                <header>
                  <h1>How Improving Website Performance Can Help Save The Planet</h1>
                  
                    
                    <address>Jack Lenox</address>
                  
                  <time datetime="2019-01-15T12:30:32&#43;00:00" class="op-published">2019-01-15T12:30:32+00:00</time>
                  <time datetime="2019-01-15T12:30:32&#43;00:00" class="op-modified">2025-10-14T04:02:41+00:00</time>
                </header>
                
                

<p>You may not think about it often, but the Internet uses a colossal amount of electricity. This electricity needs to be produced somewhere. In most countries, this means the burning of fossil fuels. This, in turn, means that the Internet’s carbon footprint has grown to the point where it <a href="https://www.theguardian.com/environment/2015/sep/25/server-data-centre-emissions-air-travel-web-google-facebook-greenhouse-gas">may have eclipsed global air travel</a>, and this makes the Internet the largest coal-fired machine on Earth.</p>

<p>The <a href="https://internethealthreport.org/2018/the-internet-uses-more-electricity-than/">Mozilla Internet Health Report 2018</a> states that — especially as the Internet expands into new territory — “sustainability should be a bigger priority.” But as it stands, websites are growing ever more obese, which means that the energy demand of the Internet is continuing to grow exponentially.</p>

<p>All the while, the impacts of climate change grow worse and more numerous with each passing year. The vast majority of climate scientists attribute the increasing ferocity and frequency of extreme weather events around the world to climate change, which they largely attribute to human activity. While some question the science, even <a href="https://www.shell.com/sustainability/environment/climate-change.html">the world’s largest oil companies now accept it</a>, and concede that their business models need to change.</p>

<p>Every country on Earth (with the exception of the US), is signed up to the Paris Climate Agreement. Although the US controversially pulled out, many of America’s most influential individuals, cities, states, and companies — representing more than half the US population and economy — have retained their commitment to the agreement by way of the <a href="https://www.americaspledgeonclimate.com/">America’s Pledge</a> initiative.</p>

<p>As web developers, it’s understandable to feel that this is not an issue over which we have any influence, but this isn’t true. Many efforts are afoot to improve the situation on the web. <a href="https://www.thegreenwebfoundation.org/">The Green Web Foundation</a> maintains an ever-growing database of web hosts who are either wholly powered by renewable energy or are at least committed to being carbon neutral. In 2013, A List Apart published <a href="https://alistapart.com/article/sustainable-web-design">Sustainable Web Design</a> by James Christie. For the last three years, the <a href="https://sustainableux.com/">SustainableUX</a> conference has seen experts in web sustainability sharing their knowledge across an array of web-based disciplines.</p>

<p>Since 2009, Greenpeace has been putting pressure on big Internet companies to clean up their energy mix by way of their <a href="https://chromewebstore.google.com/detail/clickclean/ghgabhipcejejjmhhchfonmamedcbeod">Clicking Clean</a> campaign. Partly as a result of this campaign, Google announced last year that for the first time it <a href="https://environment.google/environmental-report/">had purchased enough renewable energy to match 100% of its global consumption for operations</a>.</p>

<p>So, apart from powering servers with renewable energy, what else can web developers do about climate change?</p>

<div data-audience="non-subscriber" data-remove="true" class="feature-panel-container">

<aside class="feature-panel" style="">
<div class="feature-panel-left-col">

<div class="feature-panel-description"><p><strong>Web forms</strong> are at the center of every meaningful interaction. Meet Adam Silver&rsquo;s <strong><a href="https://www.smashingmagazine.com/printed-books/form-design-patterns/">Form Design Patterns</a></strong>, a practical guide to <strong>designing and building forms</strong> for the web.</p>
<a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="btn btn--green btn--large" style="">Jump to table of contents&nbsp;↬</a></div>
</div>
<div class="feature-panel-right-col"><a data-instant href="https://www.smashingmagazine.com/printed-books/form-design-patterns/" class="feature-panel-image-link">
<div class="feature-panel-image"><picture><source type="image/avif" srcSet="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/64e57b41-b7f1-4ae3-886a-806cce580ef9/form-design-patterns-shop-image-1-1.avif" />
<img
    loading="lazy"
    decoding="async"
    class="feature-panel-image-img"
    src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/51e0f837-d85d-4b28-bfab-1c9a47f0ce33/form-design-patterns-shop-image.png"
    alt="Feature Panel"
    width="481"
    height="698"
/>
</picture>
</div>
</a>
</div>
</aside>
</div>

<h2 id="you-can-t-manage-what-you-can-t-measure">“You Can’t Manage What You Can’t Measure”</h2>

<p>Perhaps the biggest win when it comes to making websites more sustainable is that performance, user experience and sustainability are all neatly intertwined. The key metric for measuring the sustainability of a digital product is its energy usage. This includes the work done by the server, the client and the intermediary communications networks that transmit data between the two.</p>

<p>With that in mind, perhaps the first thing to consider is how do we measure the energy usage of our website? This is actually a trickier undertaking than you might imagine, and it’s difficult to get precise data here. There are, however, some good fallbacks which we can use that demonstrate energy usage. These include data transfer (i.e. how much data does the browser have to download to display your website) and resource usage of the hardware serving and receiving the website. An obvious metric here is CPU usage, but memory usage and other forms of data storage also play their part.</p>

<p>Data transfer is one thing that we can measure quite easily. All of the major browsers provide developer tools that allow us to measure network activity. In this screenshot below, for example, we can see that loading the Smashing Magazine website for the first time incurs just under a megabyte of data transfer. Firefox’s developer tools actually provide us with two numbers: the first is the uncompressed size of the files that have been transferred, and the latter is the compressed size.</p>














<figure class="
  
    break-out article__image
  
  
  ">
  
    <a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg">
    
    <img
      loading="lazy"
      decoding="async"
      fetchpriority="low"
			
			
			
			srcset="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg 400w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_800/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg 800w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1200/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg 1200w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_1600/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg 1600w,
			        https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_2000/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg 2000w"
			src="https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_80/w_400/https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg"
			
			sizes="100vw"
			alt="SmashingMag - Firefox Developer Edition"
		/>
    
    </a>
  

  
    <figcaption class="op-vertical-bottom">
      (<a href='https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/45d2c0ed-0789-4875-a544-aec4a52b55d2/smashing-screenshot-network-stats.jpg'>Large preview</a>)
    </figcaption>
  
</figure>

<p>The most common tool for compressing assets as they travel across the network is gzip, so the difference between those two numbers is typically a result of gzip’s work. This latter number represents how much data has actually been transmitted and is the one to keep an eye on.</p>

<p><strong>Note</strong>: <em>There are plenty of other tools that provide us with a metric for data transfer including the much revered <a href="https://www.webpagetest.org/">WebPagetest</a>.</em></p>

<p>For measuring CPU usage, Chrome provides us with a granular Task Manager that shows the memory footprint, CPU usage and network activity of individual tabs. For the more adventurous/technical, the <a href="https://en.wikipedia.org/wiki/Top_(software)">top</a> (table of processes) command provides similar metrics on most Unix-like operating systems such as macOS and Ubuntu. Generally speaking, we can also run the top command on any server to which we have shell access.</p>

<p>Fortunately, there are efforts such as <a href="https://www.websitecarbon.com/">WebsiteCarbon</a> and <a href="https://ecograder.com/">Ecograder</a> that seek to translate these metrics into a specific CO2 figure (in the case of WebsiteCarbon) or a score (in the case of Ecograder).</p>

<h2 id="sustainable-web-design">Sustainable Web Design</h2>

<p>Now we know how to measure the impact of our site, it’s time to think about how we can optimize things to make it more sustainable, more performant, and generally a better experience to use.</p>

<p>There are some existing works we can draw on to help us here. In 2016, O&rsquo;Reilly published “<a href="https://shop.oreilly.com/product/0636920043904.do">Designing For Sustainability</a>” by Tim Frick. In this book, Tim takes us on a tour of the whys and hows of sustainable design. But we can also draw on a wealth of existing ideas, conference talks and articles which — while not having an explicit focus on sustainability — have a huge overlap with the philosophy of sustainable web design. Particularly good examples here are Brad Frost’s side-project, “<a href="https://deathtobullshit.com/">Death To Bullshit</a>”, Heydon Pickering’s articles and talks about writing less damn code, and Adam Silver’s blog post, “<a href="https://adamsilver.io/articles/designing-for-actual-performance/">Designing For Actual Performance</a>.”</p>

<p>If we’re doing a complete redesign of a website, or starting a new one from scratch, we can start with some really high-level questions here. For example, what actually deserves or needs to be on a homepage? And more specifically, <strong>what value does each element on a homepage bring?</strong> As Heydon Pickering puts it:</p>

<blockquote>“The most performant, accessible and easily maintainable feature of a website is the one that you don’t make in the first place.”</blockquote>

<p>I work on the WordPress.com VIP team, so in this vein, I decided to challenge myself by putting together a minimalist WordPress theme to see how far I could take the techniques of sustainable web design. The result is a theme called <a href="https://github.com/jacklenox/susty">Susty</a>, and it can be seen in action on the accompanying website I put together: <a href="https://sustywp.com">sustywp.com</a>. In that particular example, the website is delivered in just over 6KB of data transfer, which feels good given that <a href="https://httparchive.org/reports/state-of-the-web">the median website is about 1.5MB</a>.</p>

<p>So, what did I do? Well, I’ll tell you.</p>

<h3 id="reduce-network-requests">Reduce Network Requests</h3>

<p>As I have outlined above, network requests are something we can easily measure, so they make for a good starting point. In putting Susty together, I noticed there were a number of HTTP requests going on that didn’t appear to be necessary. For example, WordPress bundles some CSS and JavaScript that detects the usage of emojis and makes sure they don’t appear as illegal characters. There’s nothing inherently wrong with this, but if you aren’t planning to use emojis, or you’re happy and confident that the various system defaults will have you covered, <a href="https://kinsta.com/knowledgebase/disable-emojis-wordpress/">you can prevent these from loading</a>.</p>

<p>This represents a relatively meager saving, but by establishing a philosophy of pruning unwanted code and requests from our pages, we can make much more significant performance improvements. For example:</p>

<ul>
<li><strong>Are we loading the whole of jQuery for some basic DOM operations?</strong><br />
<a href="https://youmightnotneedjquery.com/">Could we achieve the same ends with pure JavaScript</a>? You can read about more advanced dead code elimination (aka tree shaking) in <a href="https://developers.google.com/web/fundamentals/performance/optimizing-javascript/tree-shaking/">this post for Google by Jeremy Wagner</a>.</li>
<li><strong>Do we have a carousel of images?</strong><br />
Do we really need all those images? Are they significantly enhancing the user experience? Or could we reduce it to just one, strong image? Or even randomly show one of a selection of images, to give a sense of dynamism to returning users? By the way, the research that has been done here shows that <a href="https://shouldiuseacarousel.com/">most users neither like nor engage with carousels</a>.</li>
<li><strong>If we are using a lot of images, would we benefit from providing our images using the WebP format for those browsers that support it?</strong><br />
For the longest time, <a href="https://developers.google.com/speed/webp/">WebP</a>’s support has been frustratingly limited. But with Firefox due to begin support for it in version 65 (due in January 2019), it’s only a matter of time before remaining stragglers like Safari catch up.</li>
<li><strong>Are we loading hundreds of kilobytes of web fonts?</strong><br />
Are we using all of the web fonts that we’re loading? Do we even need web fonts? Most devices these days have a stack of half-decent fonts, could we just specify <a href="https://css-tricks.com/snippets/css/font-stacks/">a list of fonts we’d like to see arranged by preference</a>? If we must use web fonts, <a href="https://css-tricks.com/three-techniques-performant-custom-font-usage/">we should make sure our fonts are as performant as is reasonably possible</a>.</li>
<li><strong>Are we embedding YouTube videos?</strong><br />
An embedded YouTube video typically adds about a megabyte of data transfer before anyone even interacts with it. If only a fraction of our users are actually going to sit and watch the embedded video on our website, could we just link to it instead?</li>
</ul>

<div class="partners__lead-place"></div>

<h3 id="scrutinise-everything">Scrutinise Everything</h3>

<p>In this vein, we can also interrogate every aspect of our pages. What <em>really</em> deserves to be there? Does our sidebar add any real value, or have we just put one there because convention dictates that websites have sidebars? So, we’ve added one and filled it with crap.</p>

<p>With Susty, I’ve experimented with the somewhat unorthodox approach of relegating the navigation to its own page. This allows me to have pages that are stripped down to literally the bare essentials, with additional content only being loaded at the user’s explicit request. Susty is so lightweight and so fast that I realized through some user research (aka my partner) that the loading of the menu didn’t really feel like a new page, so I decided to make it look like an overlay, with a cross to dismiss that actually just takes you back to the previous page.</p>

<p>As well as helping me to create pleasingly lightweight pages, the relegated navigation also removes the need for any fancy hide/reveal code for showing it. At this point, I’d like to make it clear that Susty is an example of taking sustainable web design techniques to an extreme (I’m not suggesting it’s an archetype of a good website).</p>

<h3 id="write-css-like-your-grandmother">Write CSS Like Your Grandmother</h3>

<p>When it comes to serious performance enhancement, we should bear in mind that literally every character of code counts. Every character represents a byte, and even after they’ve been compressed by gzip, they’re still taking up weight. CSS is a domain where we often see a lot of bloat. Fortunately, there are a growing number of increasingly complex tools that can help you weed out unused CSS. <a href="https://medium.freecodecamp.org/how-i-dropped-250kb-of-dead-css-weight-with-purgecss-28821049fb">This fantastic post by Sarah Dayan</a> outlines how she reduced her CSS bundle from 259KB to 9KB!</p>

<p>If we’re starting from scratch, perhaps we should think more deeply about how we write CSS in the first place. Heydon Pickering <a href="https://www.smashingmagazine.com/2016/11/css-inheritance-cascade-global-scope-new-old-worst-best-friends/">wrote an excellent post</a> about how we can write CSS in a way that plays to the strengths of how the syntax was designed, and how this can help developers prevent repetition. Heydon also points out how much wastage goes on with excessive usage of divs and classes — both in HTML and CSS.</p>

<h3 id="what-are-you-analyzing">What Are You Analyzing?</h3>

<p>It seems to have become more-or-less ubiquitous on the web for everyone to analyze what their website’s visitors do via tools like Google Analytics, KISSmetrics, Piwik, etc. While I have no doubt that there are legitimate use cases, do we really need analytics on every website? I, for one, have typically added Google Analytics to every site I manage as a matter of course. But it dawned on me relatively recently that for most of the websites in question, this has been an almost completely pointless endeavor: “Oh, six people came to this post via Facebook today.” Who cares?</p>

<p>Unless you really need it, and you’re going to analyze and act upon the data, just ditch analytics and find a better way to spend your time than gawping at the mundanity of how many people visited website X today.</p>

<p>As well as adding to your page weight, usage of something like Google Analytics raises ethical questions around the data you’re collecting on your users on Google’s behalf, i.e. there’s a reason Google provides you with Analytics for free.</p>

<h3 id="let-s-not-forget-the-basics">Let’s Not Forget The Basics</h3>

<p>There’s so much information around these days about the following, but we should never get complacent and forget about them. Alongside everything above, we absolutely should always <a href="https://developers.google.com/speed/docs/insights/MinifyResources">minify HTML, CSS, and JavaScript</a>, and concatenate where appropriate. We should also <a href="https://imageoptim.com/mac">compress all images to ensure they are as small as possible</a>, <a href="https://www.sitepoint.com/gif-png-jpg-which-one-to-use/">use the right formats in the right settings</a>, and <a href="https://blog.codinghorror.com/progressive-image-rendering/">use progressive rendering</a>.</p>

<h3 id="server-side-performance">Server-Side Performance</h3>

<p>So far, our focus has been almost entirely on the front-end, but a lot of this is made irrelevant if we don’t also optimize things on the server-side. I’ve already mentioned it a couple of times, but we should absolutely <a href="https://www.vultr.com/docs/gzip-compression-on-apache-and-nginx">enable gzip compression</a> at all times.</p>

<p>We should make serving our website as easy for our server as possible. I predominantly use Nginx, and I have a particular fondness for FastCGI cache and have found it to be especially efficient. If you have shell access to your own server, here’s <a href="https://www.digitalocean.com/community/tutorials/how-to-setup-fastcgi-caching-with-nginx-on-your-vps">a post that explains how to configure it</a>. There are less technical options if you don’t have (or don’t want) as much control over your server. A particular favorite in the WordPress space is <a href="https://wordpress.org/plugins/wp-super-cache/">WP Super Cache</a>.</p>

<p>We should use <a href="https://www.troyhunt.com/i-wanna-go-fast-https-massive-speed-advantage/">HTTP2 over HTTPS</a>. Using HTTPS opens up a world of new web technologies like service workers that allow us to treat the network itself as a nice-to-have. If you want to learn more about this, I highly recommend Jeremy Keith’s new book, “<a href="https://abookapart.com/products/going-offline">Going Offline</a>.”</p>

<p><strong>Note</strong>: <em>You also may want to investigate <a href="https://developers.google.com/speed/pagespeed/module/">Google’s PageSpeed Module</a>, available for both Apache and Nginx.</em></p>

<p>Finally, the biggest impact we can have here is to host our websites in data centers powered by renewable energy. In the UK, I can highly recommend <a href="https://krystal.co.uk/">Krystal</a> and <a href="https://www.kualo.co.uk/">Kualo</a> in terms of companies with which I directly host my sites. (For a full directory of green web hosts, check out <a href="https://www.thegreenwebfoundation.org/">The Green Web Foundation</a>.)</p>

<h2 id="in-conclusion">In Conclusion</h2>

<p>I hope I have convinced you that it’s worth putting in the effort to make our websites more sustainable. Especially given that in the process we also make our websites:</p>

<ul>
<li>More performant,</li>
<li>More user-friendly,</li>
<li>More accessible,</li>
<li>More server-friendly,</li>
<li>Better optimized for search engines.</li>
</ul>

<p>A response that some people have to the idea of sustainable web design — which is not unreasonable — is that it seems to be a very small concession to the environmental cause. Of course, how much of an impact you can have depends on how busy the websites are that you work on. But as well as helping the web become a bit more environmentally friendly, sustainable web design is fundamentally best practice web design.</p>

<p>It’s also worth thinking about offsetting the carbon emissions that you can’t avoid. Carbon offsetting is sometimes derided, and with good cause. The main problem with offsetting is that typically the term over which carbon will be offset is quite long. For example, with tree planting, the figure given for an amount of carbon sequestering is typically based over a 100-year period. So, in terms of reducing carbon emissions now, it’s not really a solution. But it is better than nothing.</p>

<p>The motto of <a href="https://www.myclimate.org/">myclimate</a> is to do your best, and offset the rest. I highly recommend the <a href="https://www.onepercentfortheplanet.org/">1% For The Planet initiative</a>. Finally, if you are a business owner and would like to join an alliance of companies that want to see better social, environmental and economic justice, check out the <a href="https://www.bcorporation.net/">Certified B Corporation</a> scheme.</p>

<div class="partners__lead-place"></div>

<h3 id="further-reading">Further Reading</h3>

<ul>
<li><a href="https://www.smashingmagazine.com/2023/08/methods-improving-drupal-largest-contentful-paint-core-web-vital/">Modern Methods For Improving Drupal’s Largest Contentful Paint Core Web Vital</a></li>
<li><a href="https://www.smashingmagazine.com/2024/04/monitor-optimize-google-core-web-vitals/">How To Monitor And Optimize Google Core Web Vitals</a></li>
<li><a href="https://www.smashingmagazine.com/2024/02/reporting-core-web-vitals-performance-api/">Reporting Core Web Vitals With The Performance API</a></li>
<li><a href="https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/">Thoughts On Markdown</a></li>
</ul>

<div class="signature">
  <img src="https://www.smashingmagazine.com/images/logo/logo--red.png" alt="Smashing Editorial" width="35" height="46" loading="lazy" decoding="async" />
  <span>(ra, il, mrn)</span>
</div>


              </article>
            </body>
          </html>
        ]]></content:encoded></item></channel></rss>