← Asana Interview Insights

Asana·Software Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

System design round at Asana for a software engineer role. The whole thing was basically a deep dive into building a scaled-down Twitter, which sounds approachable until you realize how many tricky tradeoffs are buried in it.

Questions Asked (1)

Q1

Design a simplified Twitter-like system that supports posting tweets, following/unfollowing users, a home timeline feed, and viewing a user's profile tweets.

System DesignTechnical Trade-offsData Modeling
Author's notes

I started with the data model and APIs which felt like solid footing, but then we got into feed generation and that's where I stumbled a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying functional and non-functional requirements, then estimate scale to drive design decisions. Focus on data modeling for users, tweets, and follows, and design the timeline generation strategy (fan-out on write vs. read) with trade-offs. Finally, discuss storage choices, caching, and how to handle edge cases like celebrity users.

Pro tip: Demonstrate awareness of the read-heavy nature of social feeds and propose a hybrid approach for timeline generation that balances latency and cost, rather than defaulting to a single strategy.

1. Clarify Requirements and Scale

Ask questions to define core features (posting, following, timeline, profile) and non-functional needs (latency, consistency, availability). Estimate scale: number of users, tweets per day, read/write ratio, and fan-out factor.

2. Design Data Model and Storage

Define schemas for users, tweets, and follow relationships. Choose appropriate databases (e.g., SQL for user/follow data, NoSQL or wide-column for tweets) and discuss indexing for efficient lookups.

3. Design Timeline Generation Strategy

Compare fan-out on write (push) vs. fan-out on read (pull) for home timelines. Discuss trade-offs in latency, storage, and complexity, and propose a hybrid approach for scalability.

4. Address Scalability and Performance

Introduce caching (e.g., Redis for timelines), sharding, and asynchronous processing (e.g., message queues for fan-out). Discuss how to handle high-profile users and hot partitions.

5. Discuss Trade-offs and Extensions

Summarize key trade-offs (consistency vs. availability, latency vs. cost) and mention potential extensions like search, notifications, or analytics.

Key Points to Mention

  • Fan-out on write vs. fan-out on read for timeline generation, including hybrid approaches for celebrity users.
  • Data modeling: normalized vs. denormalized schemas, and choice of databases (SQL vs. NoSQL) for different access patterns.
  • Caching strategies for timelines and user profiles to reduce latency and database load.
  • Sharding and partitioning strategies for tweets and follow graphs to handle scale.
  • Asynchronous processing using message queues for fan-out and other background tasks.
  • Trade-offs between consistency, availability, and latency (CAP theorem) in the context of social feeds.

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.