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
Web Development
  • Ruby on Rails
  • Hotwire
  • AI and Machine Learning
  • React
  • Maintenance
Mobile Development
  • React Native
  • iOS
  • Android
Design
  • UX, UI, and Product Design
  • Design Research
  • Design Systems
Product
  • Product Management
  • Product Design Sprint
  • Research and Strategic Insights
  • Accessibility
Team and Processes
  • Team Augmentation
  • Fractional Leadership
  • Level up your junior team
View all Services
View all Resources
Development
  • Tech Leadership Resources
  • Open Source
  • Books
  • The Bike Shed Podcast
  • Live Streaming on YouTube
The business of great software
  • Playbook
  • Startup Incubator
  • 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 strategy, design, product management, and development partner.

    • All Topics
    • Design
    • Web
    • iOS
    • Android
    • More topics
  1. Testing Objects with a Functional Mindset

    Some ideas from functional programming can help us improve the unit tests for our object-oriented code.

    Joël Quenneville
    January 19, 2021
    • Web
    • Functional Programming
    • Testing
    • Good Code
    • Ruby
  2. Type systems and checking in Elixir and Ruby

    Adding type checking to dynamically typed languages is possible, and awesome!

    Hawley Brett
    January 18, 2021
    • Elixir
    • Ruby
    • Types
    • Good Code
  3. TypeScript: Stop Using 'any', There's a Type For That

    Chances are you’ve worked with the any type in TypeScript. It’s widely overused, and subtly dangerous. Let’s explore why you should avoid it, and when you might truly need to use it.

    Alejandro Dustet and Wil Hall
    October 13, 2020
    • TypeScript
    • Types
    • Good Code
  4. This is your threading bug

    Solving these bugs often involves doing less, but thinking through them can be tricky.

    Mike Burns
    May 19, 2020
    • Programming
    • Bug
    • Computer Science
    • Good Code
  5. The Self-Contained Test

    Learn how to write tests so they’re easy to read and your colleagues will thank you.

    Edward Loveall
    May 18, 2020
    • Testing
    • Good Code
    • Ruby
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. Sign up to receive a weekly recap from thoughtbot

« First ‹ Prev 1 2 3 4 5 6 … Next › Last »

Footer

thoughtbot
  • Services
  • Case Studies
  • Resources
  • Let's Talk
  • Our Company
  • Careers
  • Purpose
  • Blog
  • Sponsor
  • Mastodon
  • GitHub
  • Instagram
  • YouTube
  • Twitch
© 2024 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