Beyond the Whiteboard: Realities of System Design in Production

Lakin Mohapatra
3 min readSep 11, 2023

--

Many engineers grind algorithm questions and theoretical system design to prepare for interviews. Discussing scale, APIs, DB schemas on a whiteboard trains the mind.

But when it comes to actual system design in production, realities differ greatly:

πŸ‘‰ Interviews feature greenfield problems β€” not legacy constraints. In the real world, you incrementally evolve existing systems.

πŸ‘‰ Sizing for theoretical metrics differs from analyzing real user data and growth trends.

πŸ‘‰ There is little focus on operability, monitoring, config management in interviews. In practice, these make or break systems.

πŸ‘‰ No working prototype is built to expose faulty assumptions and oversights. Shipping code surfaces gaps very quickly.

πŸ‘‰ Interview solutions are designed in minutes β€” not iterated on for months based on learnings.

πŸ‘‰ No need to integrate with surrounding infrastructure and backend systems during interviews. Real integration is complex.

πŸ‘‰ Interview feedback loops are short β€” actual development and testing is a lengthy cycle.

πŸ‘‰ The human/organizational dimension is largely ignored in theoretical scenarios. In reality, they are critical.

The whiteboard provides a valuable but unrealistic environment. Interviews test fundamentals, not practical realities.

Mastering system design requires blending those fundamentals with real-world constraints, data, users, and infrastructure. Theory meets practice.

Here are some key factors to master in order to grow system design skills beyond textbook interview preparation:

πŸ‘‰ Learn existing infrastructure β€” Study real-world systems you’ll be building upon. Don’t assume greenfield.

πŸ‘‰ Validate assumptions β€” Prototype and benchmark before scaling. Don’t rely on guesses.

πŸ‘‰ Use data to guide design β€” Analyze traffic patterns, and growth trends to make decisions.

πŸ‘‰ Consider operability β€” Design for monitoring, alerts, and debugging from the start.

πŸ‘‰ Refactor incrementally β€” Continuously simplify to avoid accumulating complexity.

πŸ‘‰ Isolate dependencies β€” Boundaries enable independent evolution.

πŸ‘‰ Balance priorities β€” Focus on business goals, not just technical elegance.

πŸ‘‰ Talk to users β€” Develop empathy, don’t design in a vacuum.

πŸ‘‰ Stay objective β€” Avoid being influenced by organizational politics or β€œpet” technologies.

πŸ‘‰ Communication skills β€” Learn to articulate tradeoffs and rally support.

πŸ‘‰ Develop intuition β€” Experience over time builds instincts for pragmatic choices.

πŸ‘‰ Stay up to date β€” Follow industry trends to evolve your mental models.

Here are some suggestions for effectively evaluating software developer’s system design skills beyond standard whiteboard interview techniques:

πŸ‘‰ Have them walk through a real-world system they’ve worked on end-to-end, describing tradeoffs, constraints, and evolutions over time. This reveals applied skills.

πŸ‘‰ Discuss production incident diagnoses and remediations they’ve handled. How did they identify root causes and prevent recurrences?

πŸ‘‰ Explore how they’ve evolved legacy system designs and paid down technical debt over multiple iterations.

πŸ‘‰ Assess architectural decisions they’ve made under budget, timeline, compliance, and other real-world constraints.

πŸ‘‰ Evaluate how they incorporate monitoring, alerting, and observability into their designs proactively.

πŸ‘‰ Discuss how they balance design ideals with business goals and technical debt realities.

πŸ‘‰ Understand how they make architectural decisions with incomplete information and amend as learnings emerge.

πŸ‘‰ Present an ambiguous problem and assess how they decompose and frame it to make progress.

The key is going beyond theoretical CS fundamentals to reveal how they apply architectural skills in complex real-world environments. Evaluate problem decomposition, technical/business synergy, and iteration capabilities.

Have you found gaps between whiteboard and production system design? How did you evolve your skills? What lessons did reality teach you? Please share experiences that helped you level up from interviewee to practicing architect!

Thanks for reading my article so far.

You can connect me via Linkedin or Twitter

Sadly, Medium does not support any creator in India, if this article provided you value in some way, you can show your support to me here by clicking on the below button.

β€œBuy me a coffee” is a global platform where millions of people support creators and artists, financially.

--

--

Lakin Mohapatra

Software Engineer | Hungry coder | Proud Indian | Cyber Security Researcher | Blogger | Architect (web2 + web 3)