---
title: "Discussion on \"Design as Code: The Engineering Problems Nobody Warned Me About\" | Hashnode"
description: "Discussion on \"Design as Code: The Engineering Problems Nobody Warned Me About\". The thesis behind Caret is straightforward enough to fit in a sentence: design and code should be the same thing, not two separate artifacts maintained in parallel that inevitably drift apart. But the"
url: "https://hashnode.com/posts/design-as-code-the-engineering-problems-nobody-warned-me-about/6a4e205836b5edc04dfdf77f"
---

[Feed](https://hashnode.com/feed) /

Discussion

# [Design as Code: The Engineering Problems Nobody Warned Me About](https://engineeringwithprecious.hashnode.dev/design-as-code-the-engineering-problems-nobody-warned-me-about?utm_source=hashnode&utm_medium=feed)

The thesis behind Caret is straightforward enough to fit in a sentence: design and code should be the same thing, not two separate artifacts maintained in parallel that inevitably drift apart. But the

Jul 8 · 9 min read · engineeringwithprecious.hashnode.dev  
Read the article

-   [#llm](https://hashnode.com/tag/llm)
-   [#ai-agents](https://hashnode.com/tag/ai-agents)
-   [#ai-tools](https://hashnode.com/tag/ai-tools)
-   [#ai](https://hashnode.com/tag/ai)

## Written by

[Precious Balogun](https://hashnode.com/@precious112)

@precious112

  
[View profile](https://hashnode.com/@precious112)

just\_precious

## Responses 1

Markdown supported · ⌘↵ to post

[Kartik N V J K](https://hashnode.com/@kartik-nvj)

[Jul 9](https://hashnode.com/posts/design-as-code-the-engineering-problems-nobody-warned-me-about/6a4e205836b5edc04dfdf77f/comment/6a4fd87bb199c39e17801e70)

The move from regex replace to AST editing keyed off a stable node id is the right call, and the "Submit" example shows why: text matching has no way to tell a button from a test assertion or a prop name. The broader point about pushing pieces from probabilistic to deterministic wherever a wrong edit is expensive is one I wish more agent tooling took seriously. On the compositional drift across pages, that feels like exactly the thing you would want a check on at generation time, comparing spacing and structure against your component definitions rather than hoping the tokens hold.
