Week 2 Recap: Architecture + Tooling
Week 2 is done. Seven posts, all built around the same theme — most technical debates aren't about right vs. wrong, they're about matching the tool to the actual problem.

Day 8 — Context API vs Redux vs Zustand: When to Use Each Context for low-frequency shared values. Zustand for global state without ceremony. Redux for complex, cross-cutting state that genuinely needs strict predictability and time-travel debugging. Not competing tools — different-shaped problems.
Day 9 — Tailwind vs CSS Modules vs Styled Components Tailwind for fast iteration with enforced constraints. CSS Modules for teams comfortable with plain CSS wanting scoping. Styled Components for heavily prop-driven dynamic styling. The debate goes wrong when people look for a universal winner.
Day 10 — Why We Moved to an Nx Monorepo
CI dropped from ~18 minutes to ~6 using nx affected commands and caching. The honest tradeoff: real learning curve, and one CI pipeline that can block every team if it breaks.
Day 11 — REST vs GraphQL: A Practical Comparison GraphQL solves over/under-fetching but breaks HTTP-native caching and adds N+1 query complexity. REST keeps simplicity and caching for predictable APIs. Match to whether multiple client types with different data needs is your actual pain point.
Day 12 — 10 Accessibility Mistakes Frontend Devs Make Div-as-button, missing labels, removed focus outlines, color-only signals — mostly everyday coding habits, not ignorance of accessibility as a concept. The fix for most of them: actually navigate your own app with just a keyboard once.
Day 13 — Unit vs Integration vs E2E: What to Actually Test 100% unit coverage tells you functions work in isolation, not that they work together. Integration tests usually catch the most real bugs per test. E2E tests validate critical flows, but are slow and expensive — use sparingly.
Day 14 — 7 Ways to Speed Up Your React App Code splitting, list virtualization, and image optimization typically move the needle more than memoization — despite memoization getting reached for first in most advice.
The thread connecting all seven:
Every single post this week resolved the same way: there's no universally "best" choice — Redux, Tailwind, GraphQL, E2E tests, useMemo — each is correct for a specific problem shape and wrong for others. The actual skill isn't knowing which tool is "best." It's diagnosing which problem you actually have.
A genuine question before Week 3:
Week 3 covers advanced TypeScript, React patterns, Server vs Client Components, debugging, and code review practices. Which of Week 2's seven topics do you want a deeper follow-up on — a specific example, a common mistake, or a hands-on walkthrough?
Takeaway: Seven posts, one underlying pattern: match the tool to the actual shape of your problem, not to what's trending. Every comparison in this series exists because the "right answer" genuinely depends on your specific situation.




