Skip to main content

Senior Weakness Diagnosis

Why this chapter matters

Many engineers reach senior level with strong implementation ability and hidden architecture gaps. Those gaps are not character flaws. They are usually the result of incentives: shipping features, fixing tickets, learning frameworks, and optimizing for local correctness.

Architect-level work exposes those gaps. A decision that works for one component may fail across teams. A performance fix that works locally may not survive real users. A clever abstraction may become a migration tax. This chapter helps you diagnose the weaknesses before they become expensive.

Core mental model

Senior engineers are often judged by whether they can solve hard problems. Architects are judged by whether they can make hard problems easier for other people to solve safely.

The transition requires moving from:

Senior habitArchitect habit
Solve the assigned problemReframe the problem and expose hidden constraints
Optimize local codeOptimize system behavior and change cost
Know the frameworkKnow the browser, product, team, and runtime boundary
Review implementationReview decisions, risks, and verification evidence
Fix incidentsTurn incidents into guardrails

Diagnostic map

WeaknessWhat it sounds likeProduction symptomRemediation
Framework-first thinking"Next/React/Vite solves this."Decisions fail when product constraints shift.Start from route, data, latency, ownership, and failure requirements.
Local performance thinking"The component is optimized."p75 field metrics remain poor.Profile route-level critical path and main-thread work.
Shallow accessibility"We added ARIA."Keyboard, focus, or screen-reader workflows break.Write component contracts: semantics, focus, keyboard, names, states.
Security by assumption"The backend checks it."Browser leaks data or exposes unsafe sinks.Map browser trust boundaries and attacker-controlled inputs.
Weak ownership model"Shared owns it."No one fixes cross-cutting quality regressions.Name owner, approval path, exception expiry, and metric.
Tool-led architecture"We should adopt X."New platform complexity without measurable outcome.Require decision context, alternatives, reversibility, and verification.
State confusion"Just put it in global state."URL, cache, server, local, and component state drift apart.Classify state by ownership, lifetime, shareability, and sensitivity.
Thin failure modeling"We handle errors."Users get generic failures, stuck pending states, or duplicate actions.Build failure matrices for API, network, permission, stale data, and partial outage paths.
Verification mismatch"We have tests."Tests pass while production journeys regress.Place tests against the highest-risk behavior and add production signals.
Weak product translation"This is technical debt."Stakeholders cannot prioritize the work.Translate debt into user harm, business risk, support cost, or delivery drag.

Self-audit

Answer these honestly:

  1. Can you explain why a route should be static, server-rendered, streamed, or client-heavy without naming a framework first?
  2. Can you debug a slow interaction using a browser trace and a React profile?
  3. Can you describe where user input can become unsafe browser behavior?
  4. Can you write an ADR that a product manager and backend engineer both understand?
  5. Can you name the team that owns each shared component, utility, route, and quality gate?
  6. Can you explain what should happen when the network, API, model, experiment, or third-party script fails?
  7. Can you classify route state into URL, server, client cache, local durable, derived, and transient UI state?
  8. Can you write failure states before implementation starts?
  9. Can you name the rollback signal for a risky release?
  10. Can you turn one repeated review comment into a documented standard, lint rule, template, or shared helper?

Skill maturity scorecard

Use this scorecard to decide where to spend practice time.

SkillDevelopingStrong seniorArchitect-ready
Product framingImplements requested UIClarifies user outcome and edge casesConnects technical choices to business risk and product strategy
Runtime reasoningKnows framework lifecycleReads browser traces and network behaviorDesigns route/runtime strategy across devices and delivery layers
Data/state modelingChooses a state librarySeparates URL, server, cache, local, and UI stateDefines data ownership, freshness, mutation, and conflict policy
AccessibilityFixes reported issuesDesigns keyboard/focus/semantic contractsScales accessibility through components, review, and governance
Security/privacyAvoids obvious unsafe codeMaps trust boundaries and sensitive dataCreates browser security/privacy guardrails and exception process
PerformanceOptimizes componentsProfiles route and interaction bottlenecksSets budgets, CI gates, and field metric feedback loops
VerificationAdds testsTests risk at the right layerDesigns verification systems and production quality signals
CommunicationExplains implementationExplains tradeoffs and alternativesProduces decisions other teams can reuse without needing you

Remediation loops

Weakness improves fastest when practice has output. Use two-week loops:

LoopOutput
Runtime loopOne performance trace, one bottleneck explanation, one fix or rejected fix
State loopState ownership map for one route
Accessibility loopComponent contract with keyboard, focus, semantics, and screen-reader notes
Security loopThreat boundary sketch for one feature
Verification loopTest plan that maps each test to a named risk
Communication loopADR reviewed by one frontend, one backend, and one product partner

Remediation plan

If this is weakStudyPractice
Rendering/data reasoningPart II and Part IIIBuild a route rendering matrix.
Performance diagnosisPart VICapture one trace and one field metric baseline.
Security/reliabilityPart VIIIWrite a threat model and degraded-state matrix.
Design-system judgmentPart VIIWrite a component accessibility contract.
Decision communicationPart I and Part XIIWrite two ADRs with alternatives.
Leadership/governancePart IXRun a simulated review packet.

Exercise

Pick a feature you recently shipped. Rewrite its design note as an architecture decision:

  • user outcome
  • constraints
  • alternatives
  • chosen design
  • tradeoffs
  • failure modes
  • verification
  • rollback

If that feels difficult, the weakness is not writing. The weakness is usually that the original decision was never made explicit.

Portfolio exercise

Create a "before and after" weakness artifact:

  • before: a real or realistic feature design written the way you would have written it as a mid-level engineer
  • diagnosis: the hidden assumptions, missing failure modes, missing owners, and missing verification
  • after: the same feature rewritten as an architecture-ready note
  • evidence: one metric, test, trace, or review artifact that would prove the better version works