A bunch of programming advice I'd give to myself 15 years ago
Veteran developers trade advice they wish they’d given their younger selves, centering on hard-won lessons like “less tutorials, more coding,” prioritizing simplicity over cleverness, and focusing on user outcomes rather than fashionable tech. Many emphasize balancing speed and quality — shipping imperfect code to learn faster, then fixing root causes rather than patching symptoms — and argue that experience, not rules or patterns, ultimately shapes good judgment. The thread also wrestles with career dynamics such as impostor syndrome, when to leave unhealthy teams, and how much time to invest in tools and editors versus fundamentals like debugging, data modeling, and understanding the business.
Scope and Audience of the Advice
- Many feel the article’s advice is strong but skewed toward people already working as devs, not absolute beginners.
- Several argue novices need more concrete, low‑level guidance (write more code, fewer tutorials; don’t over‑optimize; expect to be bad at first).
- Others say high‑level posts are still useful as “sensitization”: you won’t fully apply them early, but they shorten the learning curve later.
Shipping Fast, “Bad Code,” and Complexity
- Strong support for prioritizing shipping and learning over perfectionism, especially for juniors; perfection can paralyze.
- Counterpoint: “stop caring about quality” is seen as dangerous if taken literally; better framing is “aim for clean within constraints and accept imperfections.”
- The “bad code gives you feedback, perfect code doesn’t” idea resonates with people who struggled with over‑engineering.
- The heuristic “if you can’t easily explain why something is difficult, it’s incidental complexity” is praised by some, but heavily criticized by others as wrong for genuinely hard problems; risk of blaming yourself instead of recognizing inherent difficulty.
Users, Business Value, and Criticality
- Broad agreement: users care about outcomes, UX, and performance, not tech stacks or purity.
- Several contrast “NASA/medical/financial” contexts (where rigor is crucial) with internal tools or low‑risk apps where speed matters more.
- Some worry that “bugs are fine in 99% of web apps” underestimates hidden user pain when feedback channels are weak.
Learning, Fundamentals, and Experience
- Repeated themes: less tutorial consumption, more building; reading others’ code is valuable but not a substitute for doing.
- Many endorse learning fundamentals (data structures, networking, OS, security, Unix, math) and even low‑level concepts, though not necessarily coding in C/asm for a career.
- Experience with consequences (staying in a role long enough, being on call) is viewed as irreplaceable for forming sound opinions.
Tooling, Editors, and Typing
- Split views:
- One camp: deep editor mastery, shell skills, and typing speed are huge long‑term multipliers; “sharpen the axe” pays off.
- Other camp: endless editor tweaking is disguised procrastination; modern defaults (e.g., VS Code) are “good enough” and thinking dominates typing time.
- Some nuance: learning a few high‑leverage shortcuts and automation can save years of small delays; diminishing returns after that.
Team Dynamics, Questions, and Org Constraints
- Many value “ask instead of suffering alone,” but stress showing initiative first (read code/docs 10–30 minutes, then ask specific questions).
- Fixing bugs “one layer deeper” and investigating history are seen as hallmarks of seniority—but often clash with management pressure for quick patches.
- Several note that such process improvements only work in organizations willing to change; otherwise, leaving may be the rational choice.
Testing and Design
- Multiple commenters argue integration and end‑to‑end tests on core flows often provide more real confidence than high unit‑test coverage.
- Unit tests are seen as essential for core libraries, less so for typical product teams.
- Simplicity, “dumb” consistent code, and clear data‑first thinking are widely encouraged over clever abstractions and premature design patterns.
Career, Impostor Syndrome, and Wellbeing
- Impostor syndrome is common; some frame it as natural while you’re still learning, others reject normalizing incompetence in critical domains.
- Advice recurs to separate identity from job, avoid toxic environments, and prioritize health, family, and life outside code.