What 10k Hours of Coding Taught Me: Don't Ship Fast
Ship Fast vs. Move Slowly
- Strong split in views: some argue “ship fast” is crucial for learning, finding product–market fit, and building developer skill via tight feedback loops.
- Others stress that fast shipping often leaves long-lived messes, especially in stable domains or where failure is costly (infra, safety‑critical systems, hard‑to-update environments).
- Several comments suggest pace should depend on context: risk of being wrong, domain maturity, and how hard updates are to deploy.
Refactoring and When to Do It
- One camp endorses “tidy first”: refactor early and continuously to keep change cheap and codebases sane.
- Another warns against heavy upfront refactoring or architecture before requirements are understood; premature abstractions can add constraints and waste time.
- A middle view: let “cut points” emerge from real use, then refactor incrementally.
Architecture, Abstractions, and Simplicity
- Skepticism toward elaborate service/repository patterns and generic interfaces when they outgrow real needs or become dumping grounds.
- Multiple commenters praise deleting code and favor minimal, clear implementations over scaffolding-heavy designs.
- Core heuristic: battle unknown future requirements by staying simple and decoupled, not by predicting everything.
APIs, Infrastructure, and Stability
- Consensus that public APIs and core infra warrant more upfront thought than internal UI code. Backward-incompatible changes are expensive.
- However, infrastructure should still be easy to change; “move thoughtfully but still ship often” is a recurring theme.
Technical Debt, Business Reality, and Risk
- Technical debt compared to financial debt: some is necessary and even advantageous; too much is crippling.
- Startups and “built to sell” companies often prioritize survival and growth over purity, expecting to refactor later—though “later” often never comes.
- High-risk domains (money, data loss, safety) are highlighted as needing more careful, slower development.
Developer Workflow: Tooling, Testing, and WIP
- Debate over pre-commit hooks: some see them as guardrails, others as barriers to saving WIP and collaborating on broken tests.
- Preference from several: test on push or before merge; allow messy local history, then clean it up before integration.
UX Changes and Work Environment
- Frequent UI churn is widely criticized; once a product is mature, constant “refreshes” that don’t add clear value alienate users.
- Several posts emphasize “thinking time” (walking, hammock time, away from the keyboard) as crucial to better designs, and note that office culture often misreads this as not working.