Working in my native language requires empathy

It’s exhausting to communicate all day in your non-native language, but we can practice kindness and understanding to relieve some of that mental load. | Continue reading


@thoughtbot.com | 2 years ago

Tailwind and the Femininity of CSS

Why we undervalue front-end expertise in the web development world. | Continue reading


@thoughtbot.com | 2 years ago

Apprenticeship Applications for 2022 Are Now Open

Applications are now open for our first 2022 Apprenticeships. This is our paid, junior-level position providing structured support and mentorship to get you to be a billable thoughtbot Developer or Designer. | Continue reading


@thoughtbot.com | 2 years ago

Debugging at the Boundaries

Get better at detecting and preventing bugs by focusing on the boundaries in and around your program. | Continue reading


@thoughtbot.com | 2 years ago

What technologies should I learn?

What technologies do we recommend to early career web developers? | Continue reading


@thoughtbot.com | 2 years ago

A Broader Take on Parsing

Broadening our definition of “parsing” yields some useful insights. | Continue reading


@thoughtbot.com | 2 years ago

Hotwire: Typeahead Searching

Build a search-as-you-type text box with Turbo, Stimulus, and Rails. | Continue reading


@thoughtbot.com | 2 years ago

Back to Basics: Boolean Expressions in Ruby

Write Boolean expressions using operators instead of if/else for a more readable outcome. | Continue reading


@thoughtbot.com | 2 years ago

Full-text search with PostgreSQL and Action Text

Search through user-provided HTML content with PostgreSQL and Active Record. | Continue reading


@thoughtbot.com | 2 years ago

Classical Reasoning and Debugging

Classical philosophy offers us multiple reasoning strategies for dealing with tricky bugs. | Continue reading


@thoughtbot.com | 3 years ago

Three hours of conversation saved a company hundreds of thousands of dollars

De-risking ideas early and often is an effective, enlightening way of figuring out the how. | Continue reading


@thoughtbot.com | 3 years ago

Simplifying tests by extracting side-effects

Test-driven development, object-oriented design, and functional programming converge on some similar ideas. | Continue reading


@thoughtbot.com | 3 years ago

Type-driven design, test-driven design

TDD purism belongs to the world of dynamic typing. | Continue reading


@thoughtbot.com | 3 years ago

An Introduction to macOS Head Pointer

Did you know you could use a mouse without using your hands? | Continue reading


@thoughtbot.com | 3 years ago

Analyzing Minard's Visualization of Napoleon's 1812 March (2014)

In The Visual Display of QuantitativeInformation, Edward Tufte calls... | Continue reading


@thoughtbot.com | 3 years ago

Alt vs. Figcaption in HTML

Describing images with the alt attribute and figcaption element. | Continue reading


@thoughtbot.com | 3 years ago

Tailwind vs. BEM

There are benefits and drawbacks to every CSS styling approach. Keeping an open mind helps. | Continue reading


@thoughtbot.com | 3 years ago

Recurring Events and PostgreSQL

Scheduling, recurring events and relative dates have always been hard. Until now. | Continue reading


@thoughtbot.com | 3 years ago

Make small, data-driven performance improvements

Performance issues are a form of technical debt, and we must pay them off by making informed incremental improvements. | Continue reading


@thoughtbot.com | 3 years ago

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. | Continue reading


@thoughtbot.com | 3 years ago

Pay the cost upfront. Don't distribute it to others

Our communication practices can be very disrupting. Remote work has taught me to be more considerate of how I communicate with others. We should treat other people’s time as we like ours to be treated. | Continue reading


@thoughtbot.com | 3 years ago

Beyond basic modal editing: Using vim's command-line mode

Most people learn vim’s normal, insert, and visual modes. But they’re only casually acquainted with vim’s powerful Ex commands. Let’s take a look at some. | Continue reading


@thoughtbot.com | 3 years ago

Keep Autogenerated Files Synced

Have you ever tried to find a bug that only exists in staging, and no one knows why? That’s not nice at all. | Continue reading


@thoughtbot.com | 3 years ago

The Many Uses of Org Mode

Emacs’ Org mode is a great tool for productivity, be it business or pleasure. | Continue reading


@thoughtbot.com | 3 years ago

Check your return values: APIs

Learn how to apply a little forethought and discipline to provide your users a more informative and stable app experience. | Continue reading


@thoughtbot.com | 3 years ago

Check your return values: the Web

Learn how to apply a little forethought and discipline to provide your users a more informative and stable Web experience. | Continue reading


@thoughtbot.com | 3 years ago

On Quitting Vim

Vim has a reputation for being hard to quit. But it turns out there are so many ways to get out of it — it’s like vim wants you to quit. Let’s look at a few. | Continue reading


@thoughtbot.com | 4 years ago

Modern TypeScript and React Development in Vim

Learn how to imbue your vim setup with the power of the TypeScript language server. | Continue reading


@thoughtbot.com | 4 years ago

Best practices while developing a React Native App

A list of best practices while developing an App using React Native for an efficient coding experience. | Continue reading


@thoughtbot.com | 4 years ago

Best practices for designing apps people use

Making stuff is cool, but making stuff people actually use is amazing. Learn how to do the latter. | Continue reading


@thoughtbot.com | 4 years ago

The stuff users can't see matters too

Behind every great digital product is a great internal product, but prioritising dashboards over new features can be a tough decision. Here are some reasons to consider taking the time to think differently about internal products and the people that use them. | Continue reading


@thoughtbot.com | 4 years ago

How to Estimate Feature Development Time: Maybe Don't

One of the first questions developers and designers are asked when planning a new feature is “How long would that take?”. But what do we gain from the answer? | Continue reading


@thoughtbot.com | 4 years ago

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. | Continue reading


@thoughtbot.com | 4 years ago

Five tips for more helpful code reviews

Having your code reviewed can be daunting. But it can also be very helpful. As reviewers, we can make the difference. Here are five tips to make your code reviews more helpful to the author. | Continue reading


@thoughtbot.com | 4 years ago

Faking external services in tests with adapters

When faking external services in tests, start with something simple. I like having a public interface to adapters and having an in-memory adapter for tests. Let me show you an example. | Continue reading


@thoughtbot.com | 4 years ago

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. | Continue reading


@thoughtbot.com | 4 years ago

Tutorials for Developers by Thoughtbot

Continue reading


@thoughtbot.com | 4 years ago

An Elm Debugging Story

Continue reading


@thoughtbot.com | 4 years ago

Learn Less, Do More

Continue reading


@thoughtbot.com | 4 years ago

Simple Git identities (overrides in general) management

Continue reading


@thoughtbot.com | 4 years ago

Profiling Vim

Continue reading


@thoughtbot.com | 4 years ago

An Incentive to Adoption

Continue reading


@thoughtbot.com | 4 years ago

Creating a Remote Development Machine

Continue reading


@thoughtbot.com | 4 years ago

Clear Your Mental Cache (2014)

Continue reading


@thoughtbot.com | 4 years ago

Advanced PostgreSQL Tips for Pros

Continue reading


@thoughtbot.com | 5 years ago

Writing Vim Syntax Plugins

Continue reading


@thoughtbot.com | 5 years ago

Dumpster Diving Through Dotfiles: Better Git Logging

Continue reading


@thoughtbot.com | 5 years ago

The magic behind configure, make, make install

Continue reading


@thoughtbot.com | 5 years ago