thoughtbot: how we work
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
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!