Before This Class, I Thought This…
Before taking this class, I tended to think about system design primarily from the perspective of technical feasibility and system functionality. Coming from a computer science background, I usually tend to focus on the algorithms and implementation details of a system. If a tool worked technically and solved a problem computationally, I often assumed that was already a meaningful achievement.
However, this class gradually reshaped this perspective. I began to understand that technology is not the final product of design. Sometimes it is merely a medium. Ultimately, systems exist to be used by people, and if those people do not understand, trust, or benefit from the system, then the technical sophistication of the system becomes secondary.
This shift, from designing technology itself to designing experiences around technology, became the most important conceptual takeaway for me throughout the quarter.
Experiencing the End-to-End Design Process
One of the most helpful aspects of the course was the opportunity to experience the entire design lifecycle: needsfinding, ideation, prototyping, implementation, and user testing.
Prior to this class, many of my projects began with a predefined idea or technical concept. In contrast, this course emphasized starting with the user. Spending a significant portion of the early weeks on needsfinding and user understanding initially felt unfamiliar. As someone trained in computer science, I was used to jumping quickly into building solutions. However, the process of carefully listening to users, through interviews, observations, and reflective analysis, revealed something fundamental: the quality of a solution is deeply dependent on the quality of the problem framing.
The class also introduced brainstorming and ideation methods that were powerful. In particular, I found the Post-it–based rapid ideation sessions memorable. Working under time constraints to quickly generate ideas forced us to move past perfectionism and explore a broader solution space. Some of the ideas that initially felt unrealistic or unconventional ended up sparking more refined concepts later. This experience taught me that creative exploration benefits from the temporary suspension of judgment, allowing ideas to evolve through iteration rather than immediate evaluation.
Sytem Design
Our team project, JACE, focused on a challenge of overreliance on LLMs during complex cognitive tasks. Students and knowledge workers increasingly rely on AI systems to quickly generate answers, code, or written content. While these tools can be powerful, we observed that many users outsource too much of their reasoning to the model. As a result, users sometimes skip the thinking process that would normally help them develop understanding or expertise.
To address this problem, we designed JACE, a Chrome extension that intervenes at the moment of LLM prompting. When a user submits their first prompt in a new conversation, JACE intercepts the prompt and asks the user two short reflection questions designed to encourage them to clarify their understanding of the task. The user’s responses are then appended to the original prompt before it is sent to the LLM.
The central design principle behind JACE is moderate friction. Existing approaches to this problem often fall into two extremes: tools that block LLM access entirely, creating excessive friction, or tools that add only superficial prompts or reminders, creating too little meaningful intervention. JACE attempts to occupy the middle ground by encouraging reflection without disrupting the user’s workflow.
Through this process, we hoped to achieve two outcomes simultaneously: (1) improve the quality of prompts sent to LLMs and (2) reinforce users’ critical thinking before delegating tasks to AI.
The Role of New Development Tools
Another interesting aspect of this project was the experience of building a working prototype within a single quarter. Without vibe coding tools, completing a system implementation in such a short timeframe might have felt rushed. However, tools like bolt.new and AI-assisted coding workflows accelerated the development process. This experience gave me a glimpse into the emerging practice of vibe coding.
I could see that, while these tools do not replace careful engineering, they significantly lower the barrier to experimentation. For rapid prototyping and web-based system development, I can imagine using these tools much more frequently in the future. I think they enable designers to test ideas earlier, which aligns well with the iterative design philosophy emphasized in the course.
Challenges: Interpreting Qualitative Data
Despite many positive aspects of the course, there were also moments of difficulty. One particularly challenging area was the analysis of interview transcripts and qualitative data. While identifying themes and insights from interview data was engaging, it was not always clear how to determine whether our interpretations represented the participants’ experiences. When analyzing large volumes of qualitative data, it can be difficult to establish clear criteria for what constitutes a meaningful insight versus an incidental observation.
Our team extracted several insights from our interviews, but I sometimes wondered whether those insights were representative of the participants’ perspectives or whether they reflected our own interpretations too strongly. More detailed guidance on qualitative analysis methods or examples of well-developed insights could have helped clarify this process.
What Remains Unresolved in the Project
Although we developed a functioning prototype of JACE, there are still aspects of the system that remain incomplete. One unresolved issue concerns the user interface and system transparency. JACE includes several configurable parameters that control how the intervention operates. While these parameters offer flexibility, they may not be immediately understandable to users. During testing, we realized that users might not clearly understand what each parameter represents or how it affects the system’s behavior. This raised an important design question: how can we provide customization without overwhelming users with technical complexity?
Reflecting on this challenge reinforced an important principle of human-centered design: systems should not only function correctly but should also be intuitive and understandable from the user’s perspective. Designing transparent interfaces that communicate system behavior remains an important area for future refinement.
Ethical Considerations
Because JACE attempts to influence user behavior, ethical considerations play an important role in evaluating its design.
Nudging vs. Manipulation
JACE uses a behavioral mechanism commonly referred to as nudging. By asking reflection questions before sending a prompt to an LLM, the system encourages users to pause and think about their task. This nudge is intended to support users’ cognitive engagement rather than restrict their autonomy. Users can still proceed with their original prompt if they choose, and the intervention is designed to introduce only minimal friction.
However, behavioral nudges can become problematic if they subtly manipulate users or impose values without transparency. For example, if the system were to aggressively block prompts or enforce rigid cognitive exercises, it might undermine users’ agency. Maintaining an ethical balance requires ensuring that the intervention remains supportive, not coercive.
Privacy
Because JACE intercepts user prompts, privacy considerations are also important. Ideally, the extension should process user inputs locally and avoid transmitting sensitive information to external servers. However, future versions of the system might introduce features such as analytics or personalized feedback. These additions could create privacy risks if user prompts were stored or analyzed without adequate safeguards. Protecting privacy would require transparent data policies and mechanisms for local processing whenever possible.
Design Justice and Inclusivity
Another ethical consideration involves the cognitive assumptions embedded in the interface. Reflection prompts assume that users are comfortable articulating their reasoning in written form. However, different users may have different cognitive styles, language abilities, or accessibility needs. Designing for inclusivity may require offering alternative forms of reflection, such as voice input or adjustable levels of cognitive effort. Balancing universality and specificity is challenging, but it is important to ensure that interventions designed to support thinking do not inadvertently create barriers for some users.
Well-Being
From a well-being perspective, JACE attempts to support users’ intellectual development by encouraging active engagement with their tasks. According to theories of well-being that emphasize competence and autonomy, tools that promote reflective thinking may contribute positively to users’ long-term learning and self-efficacy. At the same time, excessive interruptions or cognitive demands could potentially create frustration, especially for users under time pressure. Maintaining a careful balance between reflection and efficiency remains critical.
Now I Think This…
By the end of the quarter, my understanding of system design had evolved significantly. I now see design not simply as building functional systems but as shaping human behavior and experience. Even small interface decisions, such as when to interrupt a user or how to phrase a question, can influence how people think and act. Designers are not merely creating tools. They are creating environments that guide human decision-making.
Looking Forward
If I encounter a similar design challenge in the future, I will approach it differently. First, I will spend more time deeply understanding the user’s cognitive and contextual experience before attempting to design a solution. Second, I will treat implementation as part of an iterative design process rather than the primary objective. Finally, I will remain attentive to the ethical implications of systems that influence behavior.
Ten years from now, I suspect the most memorable lesson from this course will not be any specific technique or tool. Instead, it will be the realization that good design begins with empathy and reflection, the willingness to understand how people think, struggle, and learn.

Thank you for this thoughtful reflection! You’ve given me some actionable insights to let me make the class better. And I’m glad you know have systems eyeglasses to peer into the user experience!