Following established tradition, software engineering today is rooted in a conceptually centralized way of thinking. The primary SE artifact is a specification of a machine -- a computational artifact -- that would meet the (elicited and) stated requirements. Therein lies a fundamental mismatch with (open) sociotechnical systems, which involve multiple autonomous social participants or principals who interact with each other to further their individual goals. No central machine governs the behaviors of the various principals. We introduce Interaction-Oriented Software Engineering (IOSE) as an approach expressly suited to the needs of open sociotechnical systems. In IOSE, specifying a system amounts to specifying the interactions among the principals as protocols. IOSE reinterprets the classical software engineering principles of modularity, abstraction, separation of concerns, and encapsulation in a manner that accords with the realities of sociotechnical systems. To highlight the novelty of IOSE, we show where well-known SE methodologies, especially those that explicitly aim to address either sociotechnical systems or the modeling of interactions among autonomous principals, fail to satisfy the IOSE principles.