Asana was founded in 2008 by Dustin Moskovitz (co-founder of Facebook) and Justin Rosenstein (an ex-Google and ex-Facebook engineer).
While at Facebook, they spent significant time coordinating tasks via email and spreadsheets, which they described as “work about work.”
They created an internal tool called Tasks to improve coordination.
Realizing the broader commercial potential, they left Facebook to launch Asana in 2011 as a commercial collaboration platform.
Key innovations:
Multi-view Boards: Introduced lists, Kanban boards, timelines (Gantt charts), and calendars dynamically displaying the exact same dataset.
Workflow Builder: Added a visual rules engine to automate task routing.
Universal Reporting: Added Portfolios and Goals to connect execution metrics straight to strategic company targets.
Who:
Founded by Dustin Moskovitz and Justin Rosenstein. moskovitz remains CEO.
Why:
Created to eliminate “work about work” (navigating emails, tracking status sheets, attending status alignment meetings) by organizing tasks into transparent, action-oriented pipelines.
Introduction
Advantages
Flexible Project Views — Toggle between List, Board, Timeline, and Calendar views instantly without changing task structures.
Multi-homing Tasks — Add a single task to multiple projects simultaneously. Changes appear instantly in all locations without creating duplicate entries.
Goal and Portfolio Tracking — Group related projects into Portfolios to monitor health, status changes, and team workloads from a high-level view.
No-code Rules Engine — A visual workflow builder allows automating task handoffs, field updates, and integrations.
Disadvantages
Costly Subscription Plan — Basic features are free, but essential workflow rules, portfolios, custom fields, and timeline views require paid tiers that scale quickly.
Overwhelming UI for Simple Teams — The extensive feature set (goals, milestones, forms, rules) can feel complex for small teams needing simple task tracking.
Rigid Subtask Hierarchies — Subtasks do not inherit parent project properties (like custom fields) natively, which can make sorting and calendar views difficult.
Unlike folders in a filesystem where a file can only exist in one directory, an Asana task exists as a single database record that can be linked to multiple projects simultaneously.
Custom Fields: Metadata fields (single-select dropdowns, text, numbers) defined at the project level. They are used to categorize tasks, filter views, and drive automation rules.
Asana Workflow Builder & Rules
Automated Triage Actions
Asana allows building visual “Trigger → Action” workflow rules:
Common Triggers:
Task added to project.
Custom field changed (e.g., Priority set to High).
Task approval status updated.
Common Actions:
Move task to a specific section (e.g. move to “Blocked”).
Assign task to a user.
Set task due date.
Automation Rule Configuration Example (YAML-like representation):
# Rule: Auto-route bug reports based on department selectionTrigger: event: Task Custom Field Changed field: "Department Selector" value: "iOS Development"Action: - type: Assign Task assignee: "ios-team-lead@company.com" - type: Move Section targetSection: "Triage Queue" - type: Set Due Date relativeOffset: "+2 days"
Asana REST API
Querying Tasks and Handling Pagination
Access Asana programmatically using Personal Access Tokens (PAT) or OAuth.
To fetch the next page of results, make a GET request to the provided uri.
Teaching Note: Portfolio-based OKR Design
Linking Strategy to Execution
Enterprise teams use Portfolios to track Key Results (OKRs) programmatically:
Projects: Execution containers where work happens day-to-day.
Portfolios: High-level views that pull status fields and progress percentages from connected Projects.
Goals: Company-wide metric targets. You can connect a Portfolio’s progress (e.g. 80% tasks completed) directly to a Goal target (e.g. Launch new API backend) to calculate progress automatically.
Task Dependencies
Set task relationships by marking one task as “dependent on” another.
If Task B depends on Task A, Asana blocks progress notification of Task B until Task A is marked complete.