<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thoughtbot="https://thoughtbot.com/feeds/" xmlns:feedpress="https://feed.press/xmlns" xmlns:media="http://search.yahoo.com/mrss/" xmlns:podcast="https://podcastindex.org/namespace/1.0">
  <feedpress:locale>en</feedpress:locale>
  <link rel="hub" href="https://feedpress.superfeedr.com/"/>
  <title>Giant Robots Smashing Into Other Giant Robots</title>
  <subtitle>Written by thoughtbot, your expert partner for design and development.
</subtitle>
  <id>https://robots.thoughtbot.com/</id>
  <link href="https://thoughtbot.com/blog"/>
  <link href="https://feed.thoughtbot.com/" rel="self"/>
  <updated>2026-09-04T00:00:00+00:00</updated>
  <author>
    <name>thoughtbot</name>
  </author>
  <entry>
    <title>Is AI ruining my brain?</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17439440/is-ai-ruining-my-brain"/>
    <author>
      <name>Sally Hall</name>
    </author>
    <id>https://thoughtbot.com/blog/is-ai-ruining-my-brain</id>
    <published>2026-09-04T00:00:00+00:00</published>
    <updated>2026-09-03T13:38:10Z</updated>
    <content type="html"><![CDATA[<p>I am an AI skeptic/hater/slow adopter, due to a combination of concerns about the ethics and environmental impact of AI and the fact that I like doing things myself. I knit my own socks, I built a swing for my porch this summer, and every Thanksgiving I make pies from scratch — even the crust (do you like my handmade em dash?). I truly enjoy the work of writing code, so I have been hesitant to involve AI in my workflow.</p>

<p>But recently, I’ve been working on a project where the team uses a lot of AI and the domain is very complex, so I’ve reluctantly been using it to help me understand what is happening in the app and how changes I make affect areas of the app I didn’t even know existed. As I get more and more comfortable turning to Cursor to help me get unstuck in my code, I do not like what is happening to my brain.</p>

<p>I keep knitting near my desk so I have a way to keep my hands busy in meetings and I’ve been picking it up while waiting for a response from Cursor sometimes. I’m currently working on a pretty complicated sweater pattern with minimal instructions that are hard to interpret. I recently stepped back to look at my work and saw the pattern had gotten wonky a few rows back and realized my first instinct was to turn to AI. This horrified me.</p>

<p>The whole reason I enjoy knitting is the process. I spend dozens of hours and more money than I’d like to admit on yarn to create a sweater that sometimes looks no better than a $20 one I could have gotten on Amazon. But that’s not the point! I enjoy knitting. I like using my brain and my hands and figuring out solutions to problems. It feels amazing to respond to “I like your sweater” with “THANKS I MADE IT ALL BY MYSELF”. Turning to AI when I encounter a bump in the road is the opposite of that. And to be totally honest, I have tried asking ChatGPT for help on projects before and it didn’t help at all. So why did I find myself reaching for AI to fix my sweater?</p>

<p>Apparently, I can’t isolate the way I solve problems at work from the rest of my life. Even if I can justify using it on my work project (a big if), I’m not a character in <a href="https://en.wikipedia.org/wiki/Severance_(TV_series)">Severance</a>. What I do at work affects my whole brain. Getting into the habit of handing AI tedious tasks and asking it to explain things I’m not familiar with instead of trying to figure them out myself seems to have decreased how much work I’m willing to put into hard things outside of work. How far will it creep into my life? When does asking Cursor to pass the right props into the right React components turn into <a href="https://x.com/sama/status/2083221585792762171?lang=en">outsourcing talking to my kids to ChatGPT</a>?</p>

<p>I don’t have the answers to any of this, but I can be proud of something: my first instinct was to ask ChatGPT to fix my knitting, but I didn’t stop there. I paused, thought about how ChatGPT would approach the problem and how I would approach it, and decided that it was worth struggling through on my own. AI hasn’t ruined my brain yet, but I’m going to keep checking to make sure.</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/how-to-build-an-ai-startup-and-do-you-really-need-to">How to Build an AI Startup, and Do You Really Need To?</a></li>
<li><a href="https://thoughtbot.com/blog/your-phone-belongs-to-you-you-dont-belong-to-it">Your Phone Belongs to You, You Don’t Belong to It</a></li>
<li><a href="https://thoughtbot.com/blog/how-to-use-chatgpt-to-find-custom-software-consultants">How to Use ChatGPT to Find Custom Software Consultants</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17439440.gif" height="1" width="1"/>]]></content>
    <summary>Has using AI at work made me worse at other things in my life?</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>Tech Leaders Meetup is coming to Edinburgh</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17438133/tech-leaders-meetup-is-coming-to-edinburgh"/>
    <author>
      <name>Chad Pytel and Maria Filimonova</name>
    </author>
    <id>https://thoughtbot.com/blog/tech-leaders-meetup-is-coming-to-edinburgh</id>
    <published>2026-09-03T00:00:00+00:00</published>
    <updated>2026-09-01T16:47:10Z</updated>
    <content type="html"><![CDATA[<p>For the first time, we’re bringing our Tech Leaders Meetup to Edinburgh, Scotland.</p>

<p>On October 21, we’ll be gathering at <strong>Badger &amp; Co</strong> for an informal evening with
fellow technology leaders from across Edinburgh and the wider Scottish tech
community.</p>

<p>If you’re leading or building technology teams, working across product or engineering, or simply want to meet more people in the local tech community, we’d love to have you join us.</p>
<h2 id="join-us-in-edinburgh">
  
    Join us in Edinburgh
  
</h2>

<ul>
<li>
<strong>Date:</strong> October 21, 2026</li>
<li>
<strong>Location:</strong> Badger &amp; Co, The Courtyard.</li>
<li>
<strong>Sign up:</strong> <a href="https://luma.com/rbilas03">https://luma.com/rbilas03</a>
</li>
</ul>

<p>We hope to see you there!</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/announcing-developer-day-boston">Announcing Developer Day, Boston</a></li>
<li><a href="https://thoughtbot.com/blog/introducing-design-with-boston">Introducing: Design With Boston</a></li>
<li><a href="https://thoughtbot.com/blog/boston-vim-meetup">Boston Vim Meetup</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17438133.gif" height="1" width="1"/>]]></content>
    <summary>thoughtbot’s Tech Leaders Meetup is coming to Edinburgh on October 21, 2026.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>Designers already think in React</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17436839/designers-already-think-in-react"/>
    <author>
      <name>Moses Amama</name>
    </author>
    <id>https://thoughtbot.com/blog/designers-already-think-in-react</id>
    <published>2026-09-02T00:00:00+00:00</published>
    <updated>2026-09-01T06:12:49Z</updated>
    <content type="html"><![CDATA[<p>I got curious about implementation because of padding.</p>

<p>Specifically the fourth message in a thread about whether a card’s inner spacing was 16px or 20px. I have had some version of that conversation on every project I have worked on, along with the ones about type scale, and border radius, and which grey. All of them cost a lot of time, for designers and developers both.</p>

<p>We make those decisions in design. They get translated in code, and translation is where they go missing. I wanted to carry one all the way through, so I decided to explore React.</p>

<p>Early in the docs there is a page called “Thinking in React”. I opened it braced to be lost, and spent most of it recognising things. It lays out five steps for turning a design into working code. Three described work I already do. The other two were new, and those two are most of what I have to say.</p>
<h2 id="three-of-the-five-were-already-the-job">
  
    Three of the five were already the job
  
</h2>

<p>The docs open by telling you to break the interface into a hierarchy of components. Decide what’s a component, what nests inside what, where the line falls between a card and the list it sits in.</p>

<p>That’s the layers panel. I have been doing it for years and calling it organising my layers.</p>

<p>Then they tell you to build a static version first. No data, no behaviour, everything hard-coded, and resist adding interactivity until the static version holds up. That’s the Figma file. Designers get that discipline for free, because the canvas puts that constraint on us.</p>

<p>Here’s the part that actually stopped me. I have a button in our library with three properties. Size, state, and a switch for the leading icon. Set those three and you get the button you need. Turns out that is what a component’s props are. I had been building those for years, knowing someone else would pick them up and use them.</p>

<p>Some of that overlap is deliberate. Figma’s slots, the areas inside a component you can fill without detaching the instance, are the same idea as children in React.</p>

<p>However, what escaped me was the cost. On the canvas, adding a fourth property is one more frame. In code it multiplies against everything already there, and someone has to hold that arithmetic in their head every time they touch the file. That’s why the answer to “can we just add one more variant” is slower than it looks from my side.</p>
<h2 id="the-canvas-has-no-time">
  
    The canvas has no time
  
</h2>

<p>There’s a page in most of my files where I start building my components, and it is mostly just states. Default, hover, loading, empty, error. All side by side, all equally true, none of them in each other’s way.</p>

<p>That’s the canvas doing what it does. There’s no time on the canvas and no data, so nothing ever has to be responsible for anything. Everything is simply true, forever, all at once.</p>

<p>I have found that React can’t do that. It shows one thing at a time, and something has to decide which. So it made me ask myself something about that page I had never had to ask. Which of these are real, and which ones are just what happens when something else is true?</p>

<p>Our empty state is the results list with nothing in it. If I let it become its own thing in code, I have built a second way for it to be empty, plus a bug for the day the two disagree. Loading is real, and it belongs somewhere else again, with whatever is doing the fetching.</p>

<p>Then comes the part with no canvas equivalent at all. Once you know what the real states are, something has to own them, and the owner sits above whatever you’re looking at.</p>

<p>Take a filter panel and a results list. On my canvas they’re siblings, sitting side by side, neither one inside the other. So when someone picks a filter, where does that choice live? The list needs it as much as the panel does, so it moves up to the nearest thing holding them both, and gets handed back down to each.</p>

<p>That has a name. Lifting state up. The vocabulary was new, and the instinct is one designers already have, because it’s the argument we have about tokens every time someone hardcodes a hex. One owner, everything else pointing at it.</p>

<p>Which, it turned out, is also the padding thread. That argument happens because the number lives in two places, my file and their code, with neither one pointing at the other, so both stay true until somebody notices they disagree. Dabbling in React made me ask who owns this often enough that I started asking it about my own files.</p>
<h2 id="thinking-it-isn39t-writing-it">
  
    Thinking it isn’t writing it
  
</h2>

<p>The title of this post only goes so far, and this is where it runs out. I can look at a screen now and work out the hierarchy, sort the real states from the ones I drew, and tell you roughly where that filter choice needs to live. Then I open an empty file and none of it types itself.</p>

<p>The styling I can handle. That’s the CSS talking, and it’s the part that carries over most cleanly, though I gather it stops carrying the moment I get to React Native, where there’s no cascade and styles are just objects sitting on the component. Everything else is a skill I am still paying for. The syntax, the hooks, the six ways to do one thing and the opinion my codebase has about which one.</p>
<h2 id="so-should-you-learn-it">
  
    So should you learn it?
  
</h2>

<p>If you want to build what you design, then yes, and you are starting further along than the docs assume. The component thinking is already yours. What you are buying is the part about time, which the canvas never asked you to think about, and then writing the code itself.</p>

<p>That half shows up in real work more than it sounds like it would. When developers plan a build, one of the first things they settle is which parts of a screen are real and which fall out of something else, which is step three of that docs page happening in a meeting instead of a tutorial. I watched two experienced developers do it on a call recently, taking a design apart into components and deciding where each part got its value from.</p>

<p>You can run the same pass on your own work today. The react.dev page runs in the browser with editable examples, so there is nothing to install, and it builds one small thing across the five steps. Read it with a few of your own screens open beside it. Take one you have drawn several versions of, the empty one, the loading one, the error one, and ask the same question of it.</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/react-developer-transition-to-react-native">How a React Developer Transitioned to React Native</a></li>
<li><a href="https://thoughtbot.com/blog/rapid-prototyping-with-pixate">Rapid iOS App Prototyping With Pixate</a></li>
<li><a href="https://thoughtbot.com/blog/simplifying-react-native-development-with-expo">Simplifying React Native Development with Expo</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17436839.gif" height="1" width="1"/>]]></content>
    <summary>A senior designer's diary on picking up React Native. This entry starts with an argument about padding and ends up in the React docs, where three of the five steps in "Thinking in React" described work I already do. Variants are props. The layers panel is a hierarchy. The gap is that a Figma file shows every state at once, and code has to pick one.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
  <entry>
    <title>Join us for our Tech Leader Meetups in London this autumn</title>
    <link rel="alternate" href="https://feed.thoughtbot.com/link/24077/17436509/tech-leaders-meetups-are-back-in-london-this-autumn"/>
    <author>
      <name>Chad Pytel and Maria Filimonova</name>
    </author>
    <id>https://thoughtbot.com/blog/tech-leaders-meetups-are-back-in-london-this-autumn</id>
    <published>2026-09-01T00:00:00+00:00</published>
    <updated>2026-09-02T13:09:09Z</updated>
    <content type="html"><![CDATA[<p>This autumn, we’re bringing the Tech Leaders community together for another
series of meetups in London.</p>

<p>Our meetups are informal evenings for engineering, product, and technology
leaders to network, exchange ideas, and have useful conversations over drinks
and snacks. No panels, no presentations, and no formal agenda. Just a good
group of people working in tech getting together in the same room.</p>

<p>Whether you’ve joined us before or have been meaning to come along, we’d love
to see you at one of our upcoming events.</p>
<h2 id="september">
  
    September
  
</h2>

<ul>
<li>
<strong>Date:</strong> September 14, 2026</li>
<li>
<strong>Location:</strong> The Lamb, London</li>
<li>
<strong>Sign up:</strong> <a href="https://luma.com/gwkly12d">https://luma.com/gwkly12d</a>
</li>
</ul>
<h2 id="october">
  
    October
  
</h2>

<ul>
<li>
<strong>Date:</strong> October 19, 2026</li>
<li>
<strong>Location:</strong> The Lamb, Empire Room, London</li>
<li>
<strong>Sign up:</strong> <a href="https://luma.com/ti7wbjui">https://luma.com/ti7wbjui</a>
</li>
</ul>
<h2 id="november">
  
    November
  
</h2>

<p>We’ll wrap up the autumn series at <strong>Founder’s Arms</strong>.</p>

<ul>
<li>
<strong>Date:</strong> November 5, 2026</li>
<li>
<strong>Location:</strong> Founder’s Arms, London</li>
<li>
<strong>Sign up:</strong> <a href="https://luma.com/myp6spnr">https://luma.com/myp6spnr</a>
</li>
</ul>
<h2 id="join-us">
  
    Join us
  
</h2>

<p>Come by, grab a drink, meet some new people, and join the conversation.</p>

<p>Spaces are limited, so register for the meetup that works best for you. We hope to see you there!</p>

<aside class="related-articles"><h2>If you enjoyed this post, you might also like:</h2>
<ul>
<li><a href="https://thoughtbot.com/blog/thoughtbot-at-rubyconf-2023">thoughtbot at RubyConf 2023</a></li>
<li><a href="https://thoughtbot.com/blog/railsconf2012">Meet thoughtbot at Railsconf 2012</a></li>
<li><a href="https://thoughtbot.com/blog/upcoming-ruby-and-rails-conferences-for-Q2-2024">Upcoming Talks at Ruby Conferences in Spring and Summer 2024</a></li>
</ul></aside>
<img src="https://feed.thoughtbot.com/link/24077/17436509.gif" height="1" width="1"/>]]></content>
    <summary>Join thoughtbot and engineering, product, and technology leaders in London for informal evenings of networking.</summary>
    <thoughtbot:auto_social_share>true</thoughtbot:auto_social_share>
  </entry>
</feed>
