thoughtbot: How we work

Post on 25-May-2015

737 views 5 download

Tags:

description

We presented at StackUp in NYC how we work. How does thoughtbot manage to build consistently high quality software? How does thoughtbot avoid any kind of Technical Debt? We explained how every day life looks like at thoughtbot, and linked to some of our online projects where we explain it in more detail.

Transcript of thoughtbot: How we work

thoughtbot: How we work !

one thoughtbot project: Upcase

How we work

At a high level: Playbook

http://playbook.thoughtbot.com/

How we work

In more detail: guides

https://github.com/thoughtbot/guides

How we work

All the gory details

https://github.com/thoughtbot/laptop !

https://github.com/thoughtbot/dotfiles

Computer Setup

• Mac OS (or Linux)

• vim (or emacs or SublimeText)

• tmux (or not)

• homebrew, rbenv, PostgreSQL, etc.

How we work

How we work

Quick & easy on boarding

Strong Opinions, Loosely Held

Little to no Technical Debt

• Refactor when needed

• Software Design == Domain Models

• Easier to understand

• Easier != Simpler

How we work

We don’t allow debt

Daily life

Not even in migration scripts

Daily life

Example: upcase.com

• Started in 2008 (rails 2.1.1)

• Now rails 4.1, perfect score in Code Climate

• Code to Test Ratio: 1 / 2.2

• rubocop,sandi_meter,buzzword compliant

• Easy (and a pleasure) to work with

How we work

Github PRs >> Chat

• History and context preserved

• # reviewers as we see fit (0 to >3)

• When not “perfect”, discuss

• If no good reason, improve

How we work

TDD

• No tests in spikes (that’s the point)

• Otherwise Red, Green, Refactor

• Suite should run in ~1 minute, each file in an instant.

How we work

“Typical” git workflow

• Create a feature branch, open a Github PR, rebase frequently

• Write good commit messages

• Squash / Rebase / Merge

• Delete feature branch

How we work

Automate allthethings!

• Automated tests and code linters

• Created houndci.com for coding standards

• Automated deployments

• Automated scripts

• Aliases… you get the idea.

How we work

We have time to do it right

Daily life

Projects/teams rotations

• Every 2-6 months

• Spreads knowledge

• Diminishes tolerance to below-par solutions

• Fresh brains uplift projects

How we work

Flat Structure

• A company by makers and for makers

• No titles, more than designer/developer

• Designers and developers work together

• There’s roles, we can switch as needed/preferred

How we work

When things go wrong…

Daily life

We keep the right attitude

Daily life

Sustainable hours

• ~8 hour work days

• No late timers in the office/social pressure

• “If you want more, do Open Source”

Daily life

Sustainable pace

• Unlimited Paid Time Off

• Clients will alway have developers and designers soaked in their projects

• Employees don’t burn out

Daily life

“Investment Fridays”

• For yourself, the company, and the community

• We widely share the work and what we learn

• Non-billable time is investment time

Daily life

We team up with our Customers

• Don’t just write code and send bills

• Help them polish business models

• What do their users want?

• How do we prioritize, then?

Daily life

Use Your Own JudgmentOur One True Policy

Do What Makes You HappyOur happiness, and by extension, our clients’

This is how we work. !

Questions time!