Learn Workflow

When you spend all day editing text and refreshing the browser, it's always worth spending some time sharpening up your workflows so you can work more efficiently and confidently. With these tutorials and videos we've captured our best workflow and productivity tips to make leveling up easy.

Whether you’re working with Git for version control, using tmux to build a custom developer environment, or running complex shell scripts at the command line, we can help you move faster and automate more of your workflow.

Trails

Workflow

tmux

It's time to take control of your terminal! This course teaches you about tmux's pane and window management, session management, copy-paste, and more. You might be surprised how quickly you can learn to use tmux effectively, and how much it can add to your everyday efficiency.

?

It's time to take control of your terminal! This course teaches you about tmux's pane and window management, session management, copy-paste, and more. You might be surprised how quickly you can learn to use tmux effectively, and how much it can add to your everyday efficiency.

1 hour 31 minutes
Next Up

Part 1: Introduction

Learn about tmux's interface including panes, windows, and sessions and the handful of commands needed to get started.

Unstarted

Part 2: Configuration

Learn about the various ways to configure and extend tmux's behavior including defining custom key-bindings, tweaking the interface, and setting options to match your desired workflow.

Unstarted

Part 3: Navigation

Learn to create, organize, and efficiently navigate between tmux's panes, windows, and sessions as well as how to interact with scroll back and copy & paste.

Unstarted

Part 4: Vim Integration

Integrate Vim and tmux by unifying navigation within and between them, optimizing window layout, and sending commands from Vim to tmux.

Unstarted

Part 5: Advanced Workflow

Learn to efficiently create and destroy panes for one-off tasks, navigate between sessions with fuzzy matching, build prompted key-bindings, never leave tmux, and get a sense of what is possible beyond tmux's default behavior.

Unstarted

Part 6: Learning More

Learn how to make the best use of tmux's man page and help, as well as where to find additional online resources to continue learning your learning.

6 steps remaining
Visit trail
Workflow

Mastering Git

Got the basics of Git down? Master it in just a few hours with this course.

Git Wizardry is closer than you think, and your instructor Chris will help you get there rapidly with this series of 11 videos and extensive notes.

?

Got the basics of Git down? **Master it in just a few hours with this course.** Git Wizardry is closer than you think, and your instructor Chris will help you get there rapidly with this series of 11 videos and extensive notes.

3 hours 22 minutes
Next Up

Getting to Confident

This step will destroy any lingering anxiety you might have about losing data in Git. You'll learn four key techniques to increase your confidence, including a panic button to hit when things go awry.

Unstarted

Managing History

"Who the heck changed this code, and why?" Git knows the answer—we'll show you how to find it. This step covers the many ways to slice and dice your Git history when you need answers, fast.

Unstarted

Undoing

Made a typo in a commit message? Forgot to do your work in a branch? Not to fear. Chris'll show you how to easily fix up the simple errors that are (sadly) a constant in the life of a professional developer.

Unstarted

Crafting History With Rebase

You refactor your code, why not your Git history? It's time to take control and make that history squeaky clean. If you're tired of ugly merge commits, this step is definitely for you. Chris covers selective staging, cherry picking, and the many ways you can rebase.

Unstarted

Git Object Model

It's time to open the hood, pull back the covers, and participate in other revelation-related metaphors. This step does a deep dive into Git's internal object model. Madness, you say? Once you understand how Git is put together, your relationship with Git will permanently change for the better.

Unstarted

Object Model Operations

This is like part 2 of the previous step. Now that you understand the underlying objects in Git, it's time to connect the various Git commands you already know to what they do to those objects.

Unstarted

Customizing Git

While Git is awesomely powerful, it does have a number of UX rough edges. The good news is that Git is tremendously configurable. This step will teach you how to take a belt sander to the rough bits, and build a Git workflow that's smooth as butter.

Unstarted

GitHub and Remotes

Git really shines when you start to connect it to other things, like GitHub and Heroku. This step dives into useful command-line tools, aliases, and tips for managing these remote interactions.

Unstarted

Vim and Git

Git and Vim: two great tools, even better together. You're probably already writing your commit messages in Vim, but it's time to start diffing, blaming, fixing merge commits, and more. This was the lesson that Chris was born to write.

Unstarted

thoughtbot's Git Flow

You've done a lot of learning, now it's time to put it all together. This step will touch on everything covered so far in the process of developing a small feature on a Rails app. If you've ever wondered how a thoughbot developer uses Git in the real world, this one is for you.

Unstarted

Learning More

You now definitely know enough Git to be a confident, productive developer. But while we've covered a lot, you might someday need specialized knowledge on a narrow Git topic. These are our favorite resources to continue your learning.

11 steps remaining
Visit trail
Workflow

Mastering the Shell

Regardless of language, learning the building blocks of the command line can improve your development experience in so many ways. Whether you're using Ruby or Haskell or anything else, shell scripting will increase your speed and efficiency!

?

Regardless of language, learning the building blocks of the command line can improve your development experience in so many ways. Whether you're using Ruby or Haskell or anything else, shell scripting will increase your speed and efficiency!

1 hour 18 minutes
Next Up

Mastering the Shell - Overview

Unstarted

Slice and Dice

Unstarted

Pipes, Input, & Output

Unstarted

Shell Scripting

Unstarted

Making Your Life Easier

5 steps remaining
Visit trail

The Weekly Iteration

Hosted by

Chris Toomey and Josh Steiner

Chris Toomey
Josh Steiner

In this week's video, Chris is joined by Josh Steiner to discuss the git and github workflow we use here at thoughtbot. We'll cover feature branches, pull requests, rebasing, and finally merging our new feature into master!

Hosted by

Chris Toomey and Ben Orenstein

Chris Toomey
Ben Orenstein

On this episode of the Weekly Iteration, Chris and Ben discuss the recently added Flashcards feature on Upcase. See a behind the scenes look at the processes, decisions, and code used to release this new feature.

Hosted by

Chris Toomey and Gabe Berke-Williams

Chris Toomey
Gabe Berke-Williams

In this weeks episode, Chris & Gabe dive into the world of dotfiles, the files we use to configure some of our favorite tools. Tune in to find out how Chris, Gabe, and thoughtbot think about and organize these critical files.

Hosted by

Chris Toomey and Derek Prior

Chris Toomey
Derek Prior

In this week's video Chris is joined by Derek Prior and they run through the process used to solve a real production bug on Upcase! Check out the PR that fixes the bug discussed in this video for more context.

Hosted by

Chris Toomey and Gabe Berke-Williams

Chris Toomey
Gabe Berke-Williams

In this week's episode, Chris is joined by Gabe Berke-Williams to discuss all things API, HTTP, and JSON. Tune in to learn the tools, workflows, and approach that Chris, Gabe, and thoughtbot at large use to interact with APIs.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Ben and Joe review several pull requests against the Learn database, pointing out techniques and patterns for having a constructive and efficient code review. Learn how the thoughtbot protocol leads to cleaner and faster reviews. Follow along as...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben shares a story of how he screwed up but still had some good come of it. Further reading: Kent Beck's tweet When to refactor

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

By popular demand, Ben and Joe return with the "Ship A Feature" series. This time, they add Markdown support to the comment field for Learn's exercises. The pull request Previous Ship A Feature

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe extract a matcher written in a project and create a pull request to include it in shoulda-matchers. Check out the pull request

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

Learn how to debug confusing test failures using interactive tools like byebug. Also learn the difference between REPLs like pry and stepping debuggers.

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe ship a feature from start all the way into production. For more info, check out: The actual pull request and commit in the Learn codebase. Our protocol for getting things done, The parity gem and Travis, our CI...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Joe demonstrates his setup for development including: How he uses rcm to combine the thoughtbot dotfiles with his own customizations How he uses MacVim, vim-rspec, and OS X Terminal to streamline TDD How he uses snippets to...

Hosted by

Ben Orenstein and Chris Toomey

Ben Orenstein
Chris Toomey

In this video, Chris shows off his highly-efficient programming workflow. Ben and Chris discuss shell optimizations, advanced vim operators, using Dash for fast documentation lookup, and configuring Alfred to make darn near everything...

Hosted by

Ben Orenstein and Joe Ferris

Ben Orenstein
Joe Ferris

In this episode, Ben and Joe demonstrate the ping-pong approach to pair programming. They alternate back and forth, writing test for each other to pass. You'll also get a glimpse into the problem-solving tactics of thoughtbot developers as they...

Hosted by

Chris Toomey and Derek Prior

Chris Toomey
Derek Prior

Internationalization (i18n) is well supported in Rails. Being aware of and using i18n in your applications as you build them can save you significant pain from having to retrofit a larger application at a later date and on a deadline.

Hosted by

Chris Toomey and Joe Ferris

Chris Toomey
Joe Ferris

On this week's episode, Chris is joined by thoughtbot CTO Joe Ferris to discuss Docker, the open platform for building and running containerized applications.

Hosted by

Chris Toomey and Ben Orenstein

Chris Toomey
Ben Orenstein

The Chrome DevTools are an amazing tool and a critical part of our workflow on Upcase and client apps. Tune in as Ben & Chris discuss their favorite features and tips for getting the most out of the DevTools.

Hosted by

Chris Toomey and Harry Schwartz

Chris Toomey
Harry Schwartz

"Just mark it as executable and place it somewhere on your PATH." If that sentence leaves you with more questions than answers, then today's episode is right up your alley. Chris & Harry team up to provide a concise but thorough introduction...

Hosted by

Chris Toomey

Chris Toomey

gitsh, a thoughtbot open-source project, is an interactive shell specifically designed for git. This week, Chris shows us how it can really streamline our workflow.

Hosted by

George Brocklehurst and Chris Toomey

George Brocklehurst
Chris Toomey

What is a line editor, and how can you use it in your workflow? In this Weekly Iteration, George Brocklehurst and Chris Toomey explore Readline, the most common line editor. Learn how to use it in the shell, your REPLs, and even in your GUI.

Hosted by

Derek Prior and Joel Quenneville

Derek Prior
Joel Quenneville

The Rails console is a Rails developer’s best friend. On this week’s episode we take a look at some little-known tips and tricks for increasing your efficiency in the console.