Home

Becoming the Supervisor: How Building an Agentic Framework Changed How I Develop Software

By Andreas Atle · 2025-12-27 13:44:17+00:00 · Status: published
Back to Blog

Introduction

The process of implementing Planner–Worker–Critic (PWC) controllers in software development introduced a control structure that extended beyond the confines of code. This experience led me to implicitly adopt a similar framework in my personal development workflow, wherein I positioned ChatGPT and Codex as planner and worker agents respectively, while assuming the role of a human supervisor overseeing their interactions. This alignment was not the product of deliberate design but emerged organically as I engaged with these tools, revealing how control abstractions can shape behavior outside their original technical context. By mapping the PWC roles onto real development interactions, the planner role corresponded to ChatGPT’s function of generating high-level plans and strategies, the worker role aligned with Codex’s execution of specific coding tasks, and my supervisory role involved guiding, reviewing, and integrating their outputs. This framework operated as a cognitive scaffold, structuring my workflow and decision-making processes in a manner reminiscent of the PWC control paradigm, thereby illustrating the subtle influence of control abstractions on human-computer collaboration.

Initial Goal of Implementing Planner–Worker–Critic Controllers

The original motivation behind implementing Planner–Worker–Critic (PWC) controllers was to establish a structured control framework that could influence and organize developer behavior beyond the immediate codebase. This approach was grounded in the theoretical understanding that control abstractions serve not only as technical constructs but also as cognitive scaffolds, shaping how developers conceptualize and interact with complex systems.

The PWC framework delineates three distinct roles: the Planner, responsible for setting goals and outlining strategies; the Worker, tasked with executing specific actions; and the Critic, which evaluates outcomes and provides feedback. These roles were intended to map clearly onto real-world development interactions, reflecting the natural division of responsibilities and communication patterns among team members. Rather than imposing a rigid workflow, the PWC structure aimed to mirror and support the implicit coordination already present in development processes.

Importantly, the workflow associated with PWC controllers did not arise from a top-down design mandate but emerged implicitly through iterative use and adaptation. This emergent nature highlights how the framework functioned as a cognitive scaffold, enabling developers to externalize and manage complex decision-making processes. By providing a shared conceptual model, the PWC controllers helped align individual contributions with broader project objectives, facilitating coordination without prescribing exact methods or sequences.

In summary, the implementation of PWC controllers was driven by the desire to create a control structure that extends influence beyond code execution, fostering clearer role distinctions and supporting the cognitive demands of software development through an emergent, adaptable workflow.

How Controller Design Shaped Interaction Patterns

The design of the PWC controller played a pivotal role in shaping the interaction patterns between myself and the AI tools, revealing a dynamic interplay characterized by a feedback loop and supervision dynamics. Central to this influence was the concept of control abstractions, which extended their impact beyond the immediate codebase to affect behavior and decision-making processes during development. These abstractions provided a structured way to manage and direct the AI’s contributions, effectively guiding the flow of information and responses.

A clear mapping can be observed between the roles defined within the PWC controller and the real-world interactions that unfolded during development. The controller’s architecture delineated specific responsibilities—such as prompting, reviewing, and refining outputs—that mirrored the supervisory and iterative nature of the collaboration. This alignment facilitated a pattern where I assumed a supervisory role, continuously evaluating and steering the AI-generated content, while the AI functioned as a responsive agent within the constraints set by the controller.

Importantly, this workflow did not arise from a deliberate, premeditated design but emerged implicitly through iterative use and adaptation. The patterns of interaction evolved naturally as the controller’s abstractions shaped how tasks were divided and managed, leading to an emergent system of checks and balances that supported ongoing refinement and quality control.

Moreover, the PWC framework operated as a cognitive scaffold, supporting my mental processes by externalizing control mechanisms and interaction protocols. This scaffolding reduced cognitive load by providing clear structures for engagement, enabling more focused supervision and efficient management of the AI’s contributions. In this way, the controller’s design not only influenced technical workflows but also shaped the cognitive strategies employed during the development process.

Treating ChatGPT as Planner and Codex as Worker

In the observed development interactions, the roles defined by the Planner-Worker-Code (PWC) framework manifested in a nuanced and implicit manner. ChatGPT operated as the planner agent by generating structured plans, outlining tasks, and decomposing complex problems into manageable subtasks. This planning role extended beyond mere code generation; it involved formulating the overall approach and specifying requirements that guided subsequent actions. Codex, in contrast, functioned as the worker agent by executing the detailed implementation steps derived from ChatGPT's plans, producing concrete code snippets and handling the granular aspects of development.

This mapping between PWC roles and real development interactions reveals that control abstractions influenced behavior not only within the codebase but also in the broader workflow. The planner's output shaped the worker's input, creating a layered interaction where high-level intentions translated into low-level executions. Importantly, this dynamic emerged implicitly through iterative exchanges rather than through a deliberate, pre-designed protocol. The workflow evolved organically as the agents responded to each other's outputs, reflecting a cognitive scaffold that supported the developer's reasoning and task management.

The framework's function as a cognitive scaffold is evident in how it structured the division of labor and information flow. By externalizing planning and execution into distinct yet interconnected roles, the system facilitated clearer mental models and reduced cognitive load. This separation allowed the developer to focus on strategic decisions while delegating routine coding tasks, thereby enhancing the overall development process without explicit orchestration.

In summary, the PWC roles of planner and worker were instantiated through the interplay of ChatGPT and Codex, shaping the development workflow in a manner that transcended the codebase and embodied an emergent, scaffolded approach to software construction.

The Author Assuming the Supervisor Role

In the course of developing the planner and worker agents, I found myself implicitly stepping into the role of a human supervisor. This role was not formally assigned or consciously planned; rather, it emerged naturally as I managed and guided the interactions between the planner and worker components. The supervision I provided acted as a cognitive scaffold, structuring the workflow and enabling a coherent progression of tasks.

The control abstractions embedded within the system influenced behavior beyond the immediate codebase. These abstractions shaped how I approached problem-solving and decision-making, effectively extending their impact into my own cognitive processes. By delineating clear roles for the planner and worker agents, I created a mental model that mirrored real-world development interactions: the planner functioned as a strategist, outlining objectives and sequencing tasks, while the worker executed specific drafting activities based on those plans.

Importantly, this workflow did not arise from deliberate design or explicit instructions. Instead, it emerged implicitly through iterative engagement with the system and continuous adjustments to the agents' roles and interactions. This emergent process highlights how the framework served as a cognitive scaffold, supporting my ability to manage complex tasks by externalizing and structuring components of the workflow.

Through this implicit supervision, the boundaries between human and machine roles became intertwined, with my oversight guiding the agents' operations and the agents, in turn, shaping my approach to the development process. This dynamic underscores the significance of cognitive scaffolding in collaborative human-computer workflows, where control abstractions and role mappings facilitate effective coordination without prescriptive design.

Critique as an Explicit Control Phase

Within the PWC (Plan-Write-Critique) framework, the critique phase serves as a distinct and explicit control mechanism that guides the iterative development process. Rather than attributing agency or intentionality to the tools involved, this phase functions primarily as a structured feedback loop, enabling continuous refinement and improvement of the work product. The critique phase operates by introducing control abstractions that extend influence beyond the immediate codebase, shaping developer behavior and decision-making in subtle yet significant ways.

These control abstractions manifest as checkpoints or evaluative moments where the output generated during the write phase is systematically reviewed. This review process is not merely a passive observation but an active control point that informs subsequent planning and writing activities. By embedding critique as a formalized step, the framework creates a feedback channel that encourages reflection and adjustment, fostering an environment where iterative enhancement is both natural and expected.

Mapping the PWC roles to real development interactions reveals a clear correspondence: the planner sets objectives and constraints, the writer produces initial content or code, and the critic evaluates this output against predefined criteria or goals. This triadic interaction mirrors common collaborative workflows in software development, where planning, implementation, and review are distinct yet interconnected activities. Importantly, the workflow that emerged from these roles was not the product of deliberate design but arose implicitly through the natural progression of development practices and tool usage.

The implicit emergence of this workflow underscores the framework's role as a cognitive scaffold. By externalizing the critique phase as a separate control stage, PWC provides developers with a mental model that structures their approach to problem-solving and iteration. This scaffold supports cognitive processes by delineating phases of creation and evaluation, thereby reducing complexity and enhancing focus during each stage.

In summary, the critique phase within the PWC framework exemplifies an explicit control mechanism that facilitates feedback and iterative improvement. It influences behavior beyond the code itself through control abstractions, aligns closely with real-world development roles, and functions as a cognitive scaffold that emerged organically rather than through prescriptive design.

How Tooling Design Fed Back into Human Behavior

The design of tooling and control abstractions played a significant role in shaping my behavior and cognitive processes throughout the development experience. Rather than existing solely as passive instruments, these abstractions subtly influenced how I approached problem-solving and task management, creating a feedback loop that reinforced the supervision structure embedded within the workflow.

One notable aspect was how control abstractions extended their influence beyond the immediate codebase. The conventions and constraints encoded in the tools affected not only the technical implementation but also my decision-making patterns and prioritization outside of direct coding activities. This phenomenon illustrates that tooling design can permeate broader behavioral domains, guiding attention and effort allocation in ways that align with the intended supervision framework.

A clear mapping emerged between the roles defined by the PWC (Planner, Writer, Critic) model and the real interactions I experienced during development. Each role corresponded to distinct cognitive and operational functions: planning shaped strategic direction, writing executed concrete outputs, and critiquing provided evaluative feedback. These roles were not rigidly assigned but manifested naturally through the tooling’s affordances and the workflow’s structure, reinforcing the division of labor and oversight without explicit orchestration.

Importantly, the workflow itself was not the product of deliberate design but rather emerged implicitly from the interplay between tooling constraints and my adaptive responses. This emergent nature underscores how control abstractions can scaffold complex supervisory dynamics without prescriptive mandates, allowing behavioral patterns to crystallize organically in response to environmental cues.

In this context, the framework functioned as a cognitive scaffold, supporting memory, attention, and decision-making processes. By externalizing control logic and feedback mechanisms into the tooling, cognitive load was distributed, enabling more effective management of complex tasks. This scaffolding effect highlights the reciprocal relationship between tooling design and human cognition, where abstractions serve as extensions of mental faculties that shape and are shaped by user behavior.

Conclusion

The implementation of Planner–Worker–Critic (PWC) controllers within this project served not only as a structural foundation for the codebase but also subtly influenced my development workflow and cognitive processes. While the primary intent was to organize and manage system behaviors through clear control abstractions, the roles embodied by the PWC framework—planning, execution, and evaluation—naturally mapped onto distinct phases of my own development interactions. The Planner role corresponded to moments of strategic decision-making and high-level design considerations; the Worker role aligned with hands-on coding and implementation tasks; and the Critic role reflected ongoing assessment and iterative refinement of both code and approach.

Importantly, this workflow did not arise from a deliberate, premeditated design of my development habits but emerged implicitly as I engaged with the PWC structure. The framework acted as a cognitive scaffold, providing a mental model that shaped how I approached problem-solving and task management. This influence extended beyond the technical boundaries of the code, subtly guiding my thought patterns and interactions with the project.

Thus, the experience demonstrates how control abstractions like the Planner–Worker–Critic model can exert a profound impact beyond their original technical scope, shaping not only software architecture but also the developer’s cognitive engagement and workflow dynamics.