Skip to main content
thoughtbot thoughtbot
  • Live on Twitch!

    thoughtbot is livestreaming

    Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we're live right now!

  • Case Studies
  • Blog
  • Let’s Talk
Live on Twitch!

thoughtbot is livestreaming

Work alongside the thoughtbot team as we collaborate with each other and our clients, live. Ask us anything, we're live right now!

Let’s get started!
View all Services
Development
  • Ruby on Rails
  • Hotwire
  • AI and Machine Learning
  • Maintenance
  • Mobile
Design
  • Discovery Sprints
  • UX, UI, and Product Design
  • Design Systems
Product
  • MVP
  • Product Management
  • Accessibility
Team and Processes
  • Team Augmentation
  • Fractional Leadership
View all Services
View all Resources
Development
  • Tech Leadership Resources
  • Open Source
  • Books
  • The Bike Shed Podcast
  • Live Streaming on YouTube
  • Conference Talks
The business of great software
  • Playbook
  • Purpose Built
  • Giant Robots Smashing Into Other Giant Robots Podcast
  • Design Sprint Guide
  • Live Streaming on LinkedIn
View all Resources

Good Code Articles

Written by thoughtbot, your expert partner for design and development.

    • All Topics
    • Design
    • Development
    • Product
    • More topics
  1. Name the Abstraction, Not the Data

    Naming presenters can be challenging. By shifting our perspective to look at what abstraction we are representing rather than the data being presented, we can bring clarity to our presenters, views, and models.

    Eebs Kobeissi
    January 20, 2020
    • Rails
    • Good Code
    • Code
  2. Finding the Time to Refactor

    Many people ask, “How do I find time to refactor?” I think the question itself betrays a misunderstanding of refactoring. Let me tell you when I refactor.

    German Velasco
    November 11, 2019
    • Refactoring
    • Good Code
  3. Let's Not Misuse Refactoring

    Refactoring has a specific meaning. When we misuse the word, we lose the ability to communicate an important concept. Let’s revisit what refactoring is and what it is not.

    German Velasco
    October 31, 2019
    • Refactoring
    • Good Code
  4. Velocity vs. Quality - How do developers and founders meet in the middle?

    Finding the right balance between writing quality software and shipping features rapidly.

    Tom Wey
    August 19, 2019
    • Consulting
    • Technical Debt
    • Good Code
    • Productivity
  5. Better domain modeling in Elixir with sum types

    Sum types are a powerful domain modeling technique. Let’s look at how to use them to remove invalid states.

    German Velasco
    July 26, 2019
    • Elixir
    • Functional Programming
    • Types
    • Good Code
  6. Chess and Recursion: Part 1

    It turns out solving chess moves with recursion and pattern matching is a lot of fun!

    Dan Barber
    August 10, 2018
    • Code
    • Good Code
    • Elixir
    • Phoenix
    • Recursion
  7. Writing Less Error-Prone Code

    How to optimize for a living codebase, where a line of code will be repeatedly read, adapted and copied.

    Oli Peate
    June 8, 2018
    • Code
    • Good Code
  8. What's Weird with Maybe List

    When you spot Maybe List in your code, it may be time to think about alternatives.

    Joël Quenneville
    May 21, 2018
    • Elm
    • Good Code
    • Web
  9. Organize your functional code

    When coming to a functional language, I often hear people ask, “How do I organize my code?” Let’s take a look at some ways in which data can tell us how to organize our modules and functions.

    German Velasco
    March 19, 2018
    • Elixir
    • Functional Programming
    • Good Code
    • Code
  10. Problem Solving with Maybe

    Write more confident code to avoid viral Maybe taking over your project.

    Joël Quenneville
    February 12, 2018
    • Elm
    • Functional Programming
    • Good Code
    • Web
  11. Sign up to receive a weekly recap from thoughtbot

    Looking for even more ways to stay connected?
    RSS feed icon Check out our feeds
« First ‹ Prev 1 2 3 4 5 6 7 … Next › Last »

Footer

thoughtbot
  • Services
  • Case Studies
  • Resources
  • Let's Talk
  • Our Company
  • Careers
  • Purpose
  • Blog
  • Sponsor
  • Mastodon
  • Bluesky
  • GitHub
  • YouTube
  • Twitch
  • Feeds
© 2025 thoughtbot, inc.

The design of a robot and thoughtbot are registered trademarks of thoughtbot, inc.

  • US: +1 (877) 9-ROBOTS
  • UK: +44 (0)20 3807 0560
  • Beware of fraudulent thoughtbot job listings Learn more
  • Code of Conduct
  • Accessibility Statement
  • Privacy Policy