Files of Opinionated software and clear communication
wondelai/
Show the full text206 lines
Opinionated Software and Clear Communication
Table of Contents
- What Opinionated Software Means
- Defaults Over Preferences
- The Epicycle Trap
- The Art of Saying No
- Clear Copywriting Principles
- Focus on What Won't Change
- Out-Teach the Competition
- Sell Your By-Products
What Opinionated Software Means
Opinionated software makes choices on behalf of the user. Instead of offering 15 configuration options, it picks the best one and ships it as the default — or the only option. Instead of supporting every possible workflow, it supports one workflow well and says "this is how we think it should be done."
This is the opposite of the "platform" mindset, where the goal is maximum flexibility. The 37signals mindset is: flexibility is complexity. Every option you add is a decision the user must make. Every configuration is a potential source of confusion. Opinionated software trades flexibility for clarity.
Examples of opinionated decisions in Basecamp:
| Area | Opinionated Choice | What They Did Not Build |
|---|---|---|
| Project structure | All projects have a message board, to-do lists, schedule, docs, and campfire chat | Custom project templates, configurable modules |
| Notifications | Sensible defaults with one toggle (on/off) per project | Per-event notification rules, notification schedules, do-not-disturb windows |
| Permissions | Simple owner/member model | Role-based access control, custom permission levels |
| File organization | Flat list with search | Folder hierarchies, tagging systems, metadata |
| Reporting | Built-in views that answer the most common questions | Custom report builder, query language, data export scheduler |
The cost of having no opinion: Software without opinions becomes a configuration puzzle. Users spend more time setting up the tool than using it. Support teams answer the same questions about which settings to use. And the product loses its identity — it becomes a generic platform rather than a tool that stands for something.
Defaults Over Preferences
Every preference in your software represents a decision your team did not make. Some of these are legitimate — users genuinely have different needs. But most preferences exist because the team could not decide, or because one vocal user requested an option, or because "we'll just make it configurable" felt easier than choosing.
The preference audit:
For each preference or setting in your product, ask:
- What percentage of users change this from the default? If it is less than 5%, remove the preference and keep the default.
- Is there a single best answer? If yes, pick it and remove the option. Users do not want to choose — they want it to work.
- Does this preference exist because of a vocal minority? One customer's request is not a mandate. Solve their specific problem differently.
- Does this preference create downstream complexity? If a setting changes behavior in ways that affect other features, the complexity cost is high. Remove it.
- Would removing this break a significant use case? If yes, keep it. If no, remove it.
How to pick good defaults:
- Observe real behavior. If you already have the preference, look at what most users choose. Make that the default.
- Choose the safe option. When in doubt, default to the option that is least likely to cause problems.
- Choose the simple option. When both options are safe, choose the one that requires less explanation.
- Match user expectations. What would a new user expect this to do without reading documentation? Do that.
Example: Timezone settings. Most software asks users to set their timezone. 37signals approach: detect the timezone from the browser. If you are wrong, the user can change it — but you should not make every user manually configure something that can be detected automatically.
The Epicycle Trap
An epicycle is a feature added to fix a problem caused by an earlier feature. The term comes from Ptolemaic astronomy, where epicycles (circles upon circles) were added to explain planetary motion within a flawed model. In software, epicycles look like this:
- You add a feature (bulk notifications)
- Users complain it is noisy (because bulk notifications create too many alerts)
- You add a preference to control notification frequency (epicycle 1)
- Some users set it wrong and miss important notifications
- You add a "priority notification" override (epicycle 2)
- Users are now confused about the interaction between frequency settings and priority overrides
- You add a documentation page explaining the notification system (epicycle 3)
Each epicycle makes the original problem worse by adding complexity. The 37signals solution: remove the root cause. If bulk notifications are noisy, fix the notification logic — do not add settings to let users manage the noise themselves.
How to spot epicycles:
- You are adding a feature whose primary purpose is to manage or configure another feature
- You are writing documentation to explain feature interactions
- Users need a "getting started guide" for a single feature
- You are adding an "advanced settings" panel
- A feature has more than two preferences
How to break the cycle:
- Identify the root feature that caused the downstream complexity
- Ask: "Is there a simpler version of this root feature that would not need the epicycles?"
- Replace the complex version with the simple one
- Remove all the epicycles
The Art of Saying No
Saying no is the most important skill in product development. Every feature request, no matter how reasonable, competes with simplicity. The default answer to any request must be no — not because the idea is bad, but because the cost of yes is always higher than it appears.
The hidden costs of yes:
| Visible Cost | Hidden Cost |
|---|---|
| Development time | Maintenance forever |
| Design work | Cognitive load for all users |
| Testing effort | Documentation and support burden |
| One-time feature | Ongoing compatibility with future features |
| Satisfying one user | Complicating the product for everyone |
How to say no effectively:
- Be direct. "We're not going to build this" is clearer and kinder than "We'll add it to the backlog" (which is a lie).
- Do not apologize. You are making a product decision, not committing a wrong. "Thanks for the suggestion. We've decided not to include this." is sufficient.
- Explain your reasoning (briefly). "We want to keep the notification system simple, and this would add a level of complexity we're not comfortable with." One sentence, not a paragraph.
- Do not promise a future. "Not now" implies "later." If you mean no, say no.
- Acknowledge the need. "I understand this would be useful for your workflow" shows empathy without creating commitment.
When to say yes: Say yes when a request solves a problem that many users share, aligns with the product's opinion, can be built simply, and fits within a cycle's appetite. That combination is rare — which is why no is the default.
The "few vocal users" problem: A small number of power users generate a disproportionate amount of feature requests. Their needs are real but not representative. Building for vocal power users at the expense of the quiet majority is a common product mistake. The check: how many users does this actually affect?
Clear Copywriting Principles
The 37signals approach to copy is an extension of their product philosophy: simple, honest, and opinionated. Every word in the interface is a product decision.
The rules:
1. Write for humans, not for marketers. If a sentence would sound weird spoken aloud in a conversation, rewrite it. "Your file has been saved" is human. "Your asset has been successfully persisted to our cloud infrastructure" is not.
2. No buzzwords. Remove every instance of: "leverage," "synergy," "seamless," "robust," "cutting-edge," "next-generation," "holistic," "ecosystem," and any word that means nothing specific. Replace with plain language.
3. Be specific. "Fast" is vague. "Loads in under 2 seconds" is specific. "Easy to use" is vague. "Set up in 3 steps" is specific. Specificity builds trust; vagueness erodes it.
4. Be honest about limitations. If your product does not do something, say so. "Basecamp is not for everyone. Here's who it's for." This honesty attracts the right customers and repels the wrong ones — both good outcomes.
5. Error messages are a product. Every error message is a conversation with a frustrated user. "An unexpected error occurred" is abandoning that user. "We couldn't send that email. Check the address and try again." is helping them.
6. Labels matter. The name you give a feature shapes how users understand it. "Campfire" (Basecamp's chat feature) evokes warmth and informality. "Team Communication Module" does not.
Copy before/after examples:
| Before (Generic) | After (37signals Style) |
|---|---|
| "Welcome to our platform! Let's get you set up with a seamless onboarding experience." | "Welcome to Basecamp. Let's get your first project started." |
| "An error has occurred. Please contact support." | "That didn't work. Here's what happened and how to fix it:" |
| "Upgrade to our premium tier for enhanced functionality." | "Need more storage? Upgrade for $99/month." |
| "Your notification preferences have been updated successfully." | "Saved." |
| "Leverage our robust integration ecosystem." | "Works with the tools you already use." |
Focus on What Won't Change
Technology trends come and go. User preferences shift. Competitors add and remove features. But some things never change: people want software that is fast, simple, reliable, and respectful of their time. The 37signals bet is to invest disproportionately in these permanent qualities.
Permanent qualities worth investing in:
- Speed. A faster product is always better. This will never change.
- Simplicity. Easier to understand is always better. This will never change.
- Reliability. Always working is always better. This will never change.
- Clarity. Clear communication is always better. This will never change.
- Respect for user time. Fewer steps, fewer clicks, fewer distractions. Always better.
Transient qualities to be cautious about:
- Latest JavaScript framework (will be replaced in 3 years)
- AI features (valuable, but the landscape changes monthly)
- Social features (user expectations shift frequently)
- Integration with trending platforms (platforms rise and fall)
This does not mean ignoring new technology. It means building on a stable foundation and adopting new technology selectively, when it clearly serves a permanent quality. Use a new framework if it makes the product faster. Do not use it because it is trendy.
Out-Teach the Competition
37signals publishes books, blog posts, conference talks, and free resources about how they work. This is not charity — it is strategy. Teaching your methods openly attracts customers who share your values, establishes authority in your space, and creates a relationship with potential customers long before they buy.
What teaching looks like:
- Books. Getting Real, Rework, Remote, It Doesn't Have to Be Crazy at Work, Shape Up — all share 37signals' methods openly.
- Blog posts. Signal v. Noise (now HEY World) publishes opinions about product development, business, and technology regularly.
- Open source. Ruby on Rails is the ultimate "sell your by-products" example — a tool built for internal use, released to the world, creating a massive community that feeds back into 37signals' reputation.
- Transparent practices. Open salaries, public positions on remote work, published decision frameworks — transparency builds trust.
Why teaching works as marketing:
- People buy from people they trust. Teaching builds trust.
- Your best customers are people who already agree with your philosophy. Teaching finds them.
- Teaching is durable. A blog post generates leads for years. An ad generates leads for a day.
- Teaching differentiates. Competitors can copy your features. They cannot copy your thinking.
Sell Your By-Products
Every business produces by-products — knowledge, processes, tools, and methods created along the way to the main product. Most companies ignore these. 37signals sells them.
37signals by-products:
| Main Product | By-Product | Outcome |
|---|---|---|
| Basecamp (project management) | Ruby on Rails (web framework) | World's most popular Ruby framework; massive community |
| Building Basecamp | Getting Real, Rework, Shape Up (books) | Millions of copies; established thought leadership |
| Running a remote company | Remote (book) | Influenced the global remote work movement |
| Product development process | Shape Up methodology | Adopted by thousands of companies |
| Building HEY | Blog posts about email philosophy | Generated massive launch buzz |
How to identify your by-products:
- What processes did you create that others might find useful?
- What tools did you build internally that could stand alone?
- What lessons did you learn that others in your industry would value?
- What opinions do you hold that are different from the mainstream?
How to sell by-products:
- Open source internal tools (Rails, Turbo, Stimulus, Hotwire)
- Write about your process (blog posts, books, newsletters)
- Speak about your decisions (conferences, podcasts, interviews)
- Share your templates (pitch templates, hiring processes, team structures)
By-products are already paid for — the cost of creating them was absorbed by the main product. Selling them is nearly pure upside.
| 1 | # Opinionated Software and Clear Communication |
| 2 | |
| 3 | ## Table of Contents |
| 4 | |
| 5 | [What Opinionated Software Means] |
| 6 | [Defaults Over Preferences] |
| 7 | [The Epicycle Trap] |
| 8 | [The Art of Saying No] |
| 9 | [Clear Copywriting Principles] |
| 10 | [Focus on What Won't Change] |
| 11 | [Out-Teach the Competition] |
| 12 | [Sell Your By-Products] |
| 13 | |
| 14 | ## What Opinionated Software Means |
| 15 | |
| 16 | Opinionated software makes choices on behalf of the user. Instead of offering 15 configuration options, it picks the best one and ships it as the default — or the only option. Instead of supporting every possible workflow, it supports one workflow well and says "this is how we think it should be done." |
| 17 | |
| 18 | This is the opposite of the "platform" mindset, where the goal is maximum flexibility. The 37signals mindset is: flexibility is complexity. Every option you add is a decision the user must make. Every configuration is a potential source of confusion. Opinionated software trades flexibility for clarity. |
| 19 | |
| 20 | **Examples of opinionated decisions in Basecamp:** |
| 21 | |
| 22 | | Area | Opinionated Choice | What They Did Not Build | |
| 23 | |------|-------------------|----------------------| |
| 24 | | Project structure | All projects have a message board, to-do lists, schedule, docs, and campfire chat | Custom project templates, configurable modules | |
| 25 | | Notifications | Sensible defaults with one toggle (on/off) per project | Per-event notification rules, notification schedules, do-not-disturb windows | |
| 26 | | Permissions | Simple owner/member model | Role-based access control, custom permission levels | |
| 27 | | File organization | Flat list with search | Folder hierarchies, tagging systems, metadata | |
| 28 | | Reporting | Built-in views that answer the most common questions | Custom report builder, query language, data export scheduler | |
| 29 | |
| 30 | **The cost of having no opinion:** Software without opinions becomes a configuration puzzle. Users spend more time setting up the tool than using it. Support teams answer the same questions about which settings to use. And the product loses its identity — it becomes a generic platform rather than a tool that stands for something. |
| 31 | |
| 32 | ## Defaults Over Preferences |
| 33 | |
| 34 | Every preference in your software represents a decision your team did not make. Some of these are legitimate — users genuinely have different needs. But most preferences exist because the team could not decide, or because one vocal user requested an option, or because "we'll just make it configurable" felt easier than choosing. |
| 35 | |
| 36 | **The preference audit:** |
| 37 | |
| 38 | For each preference or setting in your product, ask: |
| 39 | |
| 40 | **What percentage of users change this from the default?** If it is less than 5%, remove the preference and keep the default. |
| 41 | **Is there a single best answer?** If yes, pick it and remove the option. Users do not want to choose — they want it to work. |
| 42 | **Does this preference exist because of a vocal minority?** One customer's request is not a mandate. Solve their specific problem differently. |
| 43 | **Does this preference create downstream complexity?** If a setting changes behavior in ways that affect other features, the complexity cost is high. Remove it. |
| 44 | **Would removing this break a significant use case?** If yes, keep it. If no, remove it. |
| 45 | |
| 46 | **How to pick good defaults:** |
| 47 | |
| 48 | **Observe real behavior.** If you already have the preference, look at what most users choose. Make that the default. |
| 49 | **Choose the safe option.** When in doubt, default to the option that is least likely to cause problems. |
| 50 | **Choose the simple option.** When both options are safe, choose the one that requires less explanation. |
| 51 | **Match user expectations.** What would a new user expect this to do without reading documentation? Do that. |
| 52 | |
| 53 | **Example: Timezone settings.** Most software asks users to set their timezone. 37signals approach: detect the timezone from the browser. If you are wrong, the user can change it — but you should not make every user manually configure something that can be detected automatically. |
| 54 | |
| 55 | ## The Epicycle Trap |
| 56 | |
| 57 | An epicycle is a feature added to fix a problem caused by an earlier feature. The term comes from Ptolemaic astronomy, where epicycles (circles upon circles) were added to explain planetary motion within a flawed model. In software, epicycles look like this: |
| 58 | |
| 59 | You add a feature (bulk notifications) |
| 60 | Users complain it is noisy (because bulk notifications create too many alerts) |
| 61 | You add a preference to control notification frequency (epicycle 1) |
| 62 | Some users set it wrong and miss important notifications |
| 63 | You add a "priority notification" override (epicycle 2) |
| 64 | Users are now confused about the interaction between frequency settings and priority overrides |
| 65 | You add a documentation page explaining the notification system (epicycle 3) |
| 66 | |
| 67 | Each epicycle makes the original problem worse by adding complexity. The 37signals solution: remove the root cause. If bulk notifications are noisy, fix the notification logic — do not add settings to let users manage the noise themselves. |
| 68 | |
| 69 | **How to spot epicycles:** |
| 70 | |
| 71 | You are adding a feature whose primary purpose is to manage or configure another feature |
| 72 | You are writing documentation to explain feature interactions |
| 73 | Users need a "getting started guide" for a single feature |
| 74 | You are adding an "advanced settings" panel |
| 75 | A feature has more than two preferences |
| 76 | |
| 77 | **How to break the cycle:** |
| 78 | |
| 79 | Identify the root feature that caused the downstream complexity |
| 80 | Ask: "Is there a simpler version of this root feature that would not need the epicycles?" |
| 81 | Replace the complex version with the simple one |
| 82 | Remove all the epicycles |
| 83 | |
| 84 | ## The Art of Saying No |
| 85 | |
| 86 | Saying no is the most important skill in product development. Every feature request, no matter how reasonable, competes with simplicity. The default answer to any request must be no — not because the idea is bad, but because the cost of yes is always higher than it appears. |
| 87 | |
| 88 | **The hidden costs of yes:** |
| 89 | |
| 90 | | Visible Cost | Hidden Cost | |
| 91 | |-------------|------------| |
| 92 | | Development time | Maintenance forever | |
| 93 | | Design work | Cognitive load for all users | |
| 94 | | Testing effort | Documentation and support burden | |
| 95 | | One-time feature | Ongoing compatibility with future features | |
| 96 | | Satisfying one user | Complicating the product for everyone | |
| 97 | |
| 98 | **How to say no effectively:** |
| 99 | |
| 100 | **Be direct.** "We're not going to build this" is clearer and kinder than "We'll add it to the backlog" (which is a lie). |
| 101 | **Do not apologize.** You are making a product decision, not committing a wrong. "Thanks for the suggestion. We've decided not to include this." is sufficient. |
| 102 | **Explain your reasoning (briefly).** "We want to keep the notification system simple, and this would add a level of complexity we're not comfortable with." One sentence, not a paragraph. |
| 103 | **Do not promise a future.** "Not now" implies "later." If you mean no, say no. |
| 104 | **Acknowledge the need.** "I understand this would be useful for your workflow" shows empathy without creating commitment. |
| 105 | |
| 106 | **When to say yes:** Say yes when a request solves a problem that many users share, aligns with the product's opinion, can be built simply, and fits within a cycle's appetite. That combination is rare — which is why no is the default. |
| 107 | |
| 108 | **The "few vocal users" problem:** A small number of power users generate a disproportionate amount of feature requests. Their needs are real but not representative. Building for vocal power users at the expense of the quiet majority is a common product mistake. The check: how many users does this actually affect? |
| 109 | |
| 110 | ## Clear Copywriting Principles |
| 111 | |
| 112 | The 37signals approach to copy is an extension of their product philosophy: simple, honest, and opinionated. Every word in the interface is a product decision. |
| 113 | |
| 114 | **The rules:** |
| 115 | |
| 116 | **1. Write for humans, not for marketers.** If a sentence would sound weird spoken aloud in a conversation, rewrite it. "Your file has been saved" is human. "Your asset has been successfully persisted to our cloud infrastructure" is not. |
| 117 | |
| 118 | **2. No buzzwords.** Remove every instance of: "leverage," "synergy," "seamless," "robust," "cutting-edge," "next-generation," "holistic," "ecosystem," and any word that means nothing specific. Replace with plain language. |
| 119 | |
| 120 | **3. Be specific.** "Fast" is vague. "Loads in under 2 seconds" is specific. "Easy to use" is vague. "Set up in 3 steps" is specific. Specificity builds trust; vagueness erodes it. |
| 121 | |
| 122 | **4. Be honest about limitations.** If your product does not do something, say so. "Basecamp is not for everyone. Here's who it's for." This honesty attracts the right customers and repels the wrong ones — both good outcomes. |
| 123 | |
| 124 | **5. Error messages are a product.** Every error message is a conversation with a frustrated user. "An unexpected error occurred" is abandoning that user. "We couldn't send that email. Check the address and try again." is helping them. |
| 125 | |
| 126 | **6. Labels matter.** The name you give a feature shapes how users understand it. "Campfire" (Basecamp's chat feature) evokes warmth and informality. "Team Communication Module" does not. |
| 127 | |
| 128 | **Copy before/after examples:** |
| 129 | |
| 130 | | Before (Generic) | After (37signals Style) | |
| 131 | |------------------|----------------------| |
| 132 | | "Welcome to our platform! Let's get you set up with a seamless onboarding experience." | "Welcome to Basecamp. Let's get your first project started." | |
| 133 | | "An error has occurred. Please contact support." | "That didn't work. Here's what happened and how to fix it:" | |
| 134 | | "Upgrade to our premium tier for enhanced functionality." | "Need more storage? Upgrade for $99/month." | |
| 135 | | "Your notification preferences have been updated successfully." | "Saved." | |
| 136 | | "Leverage our robust integration ecosystem." | "Works with the tools you already use." | |
| 137 | |
| 138 | ## Focus on What Won't Change |
| 139 | |
| 140 | Technology trends come and go. User preferences shift. Competitors add and remove features. But some things never change: people want software that is fast, simple, reliable, and respectful of their time. The 37signals bet is to invest disproportionately in these permanent qualities. |
| 141 | |
| 142 | **Permanent qualities worth investing in:** |
| 143 | |
| 144 | **Speed.** A faster product is always better. This will never change. |
| 145 | **Simplicity.** Easier to understand is always better. This will never change. |
| 146 | **Reliability.** Always working is always better. This will never change. |
| 147 | **Clarity.** Clear communication is always better. This will never change. |
| 148 | **Respect for user time.** Fewer steps, fewer clicks, fewer distractions. Always better. |
| 149 | |
| 150 | **Transient qualities to be cautious about:** |
| 151 | |
| 152 | Latest JavaScript framework (will be replaced in 3 years) |
| 153 | AI features (valuable, but the landscape changes monthly) |
| 154 | Social features (user expectations shift frequently) |
| 155 | Integration with trending platforms (platforms rise and fall) |
| 156 | |
| 157 | This does not mean ignoring new technology. It means building on a stable foundation and adopting new technology selectively, when it clearly serves a permanent quality. Use a new framework if it makes the product faster. Do not use it because it is trendy. |
| 158 | |
| 159 | ## Out-Teach the Competition |
| 160 | |
| 161 | 37signals publishes books, blog posts, conference talks, and free resources about how they work. This is not charity — it is strategy. Teaching your methods openly attracts customers who share your values, establishes authority in your space, and creates a relationship with potential customers long before they buy. |
| 162 | |
| 163 | **What teaching looks like:** |
| 164 | |
| 165 | **Books.** Getting Real, Rework, Remote, It Doesn't Have to Be Crazy at Work, Shape Up — all share 37signals' methods openly. |
| 166 | **Blog posts.** Signal v. Noise (now HEY World) publishes opinions about product development, business, and technology regularly. |
| 167 | **Open source.** Ruby on Rails is the ultimate "sell your by-products" example — a tool built for internal use, released to the world, creating a massive community that feeds back into 37signals' reputation. |
| 168 | **Transparent practices.** Open salaries, public positions on remote work, published decision frameworks — transparency builds trust. |
| 169 | |
| 170 | **Why teaching works as marketing:** |
| 171 | |
| 172 | People buy from people they trust. Teaching builds trust. |
| 173 | Your best customers are people who already agree with your philosophy. Teaching finds them. |
| 174 | Teaching is durable. A blog post generates leads for years. An ad generates leads for a day. |
| 175 | Teaching differentiates. Competitors can copy your features. They cannot copy your thinking. |
| 176 | |
| 177 | ## Sell Your By-Products |
| 178 | |
| 179 | Every business produces by-products — knowledge, processes, tools, and methods created along the way to the main product. Most companies ignore these. 37signals sells them. |
| 180 | |
| 181 | **37signals by-products:** |
| 182 | |
| 183 | | Main Product | By-Product | Outcome | |
| 184 | |-------------|-----------|---------| |
| 185 | | Basecamp (project management) | Ruby on Rails (web framework) | World's most popular Ruby framework; massive community | |
| 186 | | Building Basecamp | Getting Real, Rework, Shape Up (books) | Millions of copies; established thought leadership | |
| 187 | | Running a remote company | Remote (book) | Influenced the global remote work movement | |
| 188 | | Product development process | Shape Up methodology | Adopted by thousands of companies | |
| 189 | | Building HEY | Blog posts about email philosophy | Generated massive launch buzz | |
| 190 | |
| 191 | **How to identify your by-products:** |
| 192 | |
| 193 | What processes did you create that others might find useful? |
| 194 | What tools did you build internally that could stand alone? |
| 195 | What lessons did you learn that others in your industry would value? |
| 196 | What opinions do you hold that are different from the mainstream? |
| 197 | |
| 198 | **How to sell by-products:** |
| 199 | |
| 200 | Open source internal tools (Rails, Turbo, Stimulus, Hotwire) |
| 201 | Write about your process (blog posts, books, newsletters) |
| 202 | Speak about your decisions (conferences, podcasts, interviews) |
| 203 | Share your templates (pitch templates, hiring processes, team structures) |
| 204 | |
| 205 | By-products are already paid for — the cost of creating them was absorbed by the main product. Selling them is nearly pure upside. |
| 206 |
Discussion
Browse more free Claude skills.