Event sourcing stores all state as a sequence of events and only stores facts rather than the current application state. It focuses on designing the domain model strategically first before considering data storage or other implementation details. Event sourcing is more complex than traditional approaches but can provide benefits for certain domains by making it easier to understand how the application state evolved over time.