Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions content/blog/why-new-builders-hit-a-wall.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
title: "Why New Builders Hit a Wall — and How the Best Ones Push Through"
description: "What Codepet learned watching beginners learn to code with AI: the patterns that predict who ships and who quits, and what you can do about it."
date: "2026-06-14"
category: "user-insights"
author: "Nguyen"
authorTitle: "Codepet"
tags: ["learning", "coding", "ai", "beginners", "habits"]
---

There's a moment almost every new builder runs into. It usually hits around week two or three — after the initial rush of "wait, I can actually build things?" but before you've shipped anything real. The AI still answers your questions, but you've stopped understanding what it gives you. The code compiles sometimes. You feel more confused than you did at the start.

We call this the wall.

At Codepet, we've watched hundreds of people learning to build software with AI assistance. Some are on their second or third project now. Others disappeared before the end of their first month. The gap between those two groups isn't talent, age, or technical background. It's something more mundane — and more fixable.

## The Wall Is Predictable

The wall appears at a specific structural moment: when the complexity of what you're building overtakes the mental model you've built for how it works.

Early on, everything is one-to-one. You ask the AI to "add a button that saves the form," the AI produces code, you paste it in, and it works. Clean.

But software is a system of interconnected parts, not a list of independent features. By week three, you're asking for something new and the AI tells you it needs to adjust something from last week, which affects something from week one. You don't have a picture of how those pieces fit together. The AI holds the context window. You don't.

> The wall isn't a sign you lack ability. It's a sign you've built enough that things have gotten genuinely complicated.

This is not a failure. It's a milestone. But without the right move here, most people stop.

## What Separates Shippers from Quitters

The most consistent pattern we've found across the [user insights](/blog/category/user-insights) we've collected isn't about study hours or which resources someone uses. It comes down to one behavior: **what you do when the AI gives you code you don't fully understand.**

**Learners who quit** paste the code in, check if it runs, and move on. When it breaks later, they don't have the mental model to debug it. They ask the AI for more code they also don't understand. Eventually the project becomes a black box — something they're afraid to touch because they no longer know how it works.

**Learners who ship** pause before pasting. They ask the AI to explain what the code does. Or they write out what they *think* it does, then ask the AI to correct them. They build a map as they go.

That's the entire difference, stated plainly. One group is in a loop with the AI as a code factory. The other is using the AI to build understanding.

### The Explanation Habit

The single behavior we'd most encourage every new builder to develop: **never paste code you can't explain in one plain sentence.**

Not a perfect explanation. Not technical vocabulary. Just: "this part listens for when the user clicks the button" or "this stores the task list somewhere the whole app can reach."

If you can't do that, you haven't learned it yet — even if it runs perfectly. The next time you need to change it, or something nearby breaks, you'll be starting from zero.

A few prompts that convert the AI from code-factory to tutor:

```
"Explain what you just wrote like I've never seen JavaScript before."
"What would break if I removed this section?"
"Add a plain-English comment above each block explaining what it does."
```

These aren't slow-downs. They're the investment that makes you faster over the next month.

## The Confidence Trap

There's a corollary that catches a lot of people: moving too fast when things are working.

In the early weeks, there are stretches where everything clicks — prompts work, features land, the project starts to feel real. The temptation is to keep that momentum by pushing ahead fast: one more feature, one more screen, one more API call.

But speed in the "working" phase often means borrowing against the "wall" phase. Every piece of code you added without understanding is complexity you'll have to unpack later, under pressure, when something breaks.

Consistent shippers tend to move at a steady, almost boring pace. When something works, they take a moment to confirm they understand why. When something breaks, they don't just fix the symptom — they ask what the underlying issue was. This is the same discipline we wrote about in [what beginners taught us about learning to code with AI](/blog/what-beginners-taught-us-learning-to-code-with-ai): the learners who made it past the early phase were almost always the ones who slowed down on purpose.

## How to Rebuild Your Map

If you're already at the wall — looking at a codebase that feels like it was written by someone else — the instinct is to start over. Sometimes that's right. But usually what you need is a mapping session.

Here's a four-step version:

1. **Read your main file top to bottom** — not to understand every line, but to identify which sections you recognize and which are opaque.
2. **Ask the AI for a guided tour**: *"Here's my codebase. Explain what each major section does in plain English, as if I've never seen it before."*
3. **Write a 10-sentence description of your app** from memory: what it does, what its main files are, what happens from user action to result. The gaps in this description are exactly where your understanding needs work.
4. **Pick one gap and go deep** — one piece at a time, not all at once.

This is slower than building new features. It's faster than starting over for the third time.

## The Longer View

Every project you complete leaves you with a slightly better model of how software systems work. The early wall is genuinely hard, but every builder who makes it past finds the next one shorter.

The people who ship are almost always the ones who decided **understanding mattered more than velocity** — not because slow is virtuous, but because understanding is what lets you accelerate later without falling apart.

If you're at the wall right now: you're closer than you feel. The best move isn't to power through blindly or to quit. It's to stop and build the map.
86 changes: 86 additions & 0 deletions content/blog/why-new-builders-hit-a-wall.vi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
title: "Tại sao người mới học code đều dừng lại ở tuần thứ ba"
description: "Codepet quan sát hàng trăm người mới học build phần mềm với AI - và nhận ra rằng ai ship được sản phẩm đều có một thói quen nhỏ mà phần còn lại bỏ qua."
date: "2026-06-14"
category: "user-insights"
author: "Nguyen"
authorTitle: "Codepet"
tags: ["learning", "coding", "ai", "beginners", "habits"]
---

Tuần thứ nhất, mọi thứ đều có vẻ kỳ diệu. Bạn đặt câu hỏi, AI trả lời, code chạy được - và có một cái cảm giác gì đó rất lạ, kiểu "hoá ra mình cũng có thể làm được điều này". Cái cảm giác đó đủ để giữ bạn ngồi trước màn hình đến tận khuya.

Tuần thứ ba thì khác. Sự hào hứng ban đầu đã nhạt dần. Code vẫn được AI sinh ra, nhưng bạn không còn thực sự hiểu nó đang làm gì nữa. Một lỗi xuất hiện, bạn hỏi AI, AI sửa - rồi lại có lỗi khác. Project bắt đầu có cảm giác như một mê cung mà chính bạn đã xây ra nhưng không có bản đồ.

Tại Codepet, chúng tôi đã quan sát hàng trăm người đi qua đúng khoảnh khắc đó. Và điều rõ nhất mà chúng tôi thấy không phải là ai học nhanh hơn hay thông minh hơn - mà là ai đã làm gì ngay khi chạm phải "bức tường".

## Bức tường xuất hiện vì một lý do rất cụ thể

Vấn đề là bức tường này không hề ngẫu nhiên - nó gần như được lập trình sẵn để xảy ra. Nó xuất hiện đúng vào thời điểm mà độ phức tạp của project bắt đầu vượt quá mô hình trong đầu bạn về cách nó hoạt động.

Ban đầu, mọi thứ rất tuyến tính. Bạn bảo AI "thêm cái nút lưu form", AI generate ra code, bạn dán vào, và nó chạy. Đơn giản và sạch sẽ.

Nhưng phần mềm không phải là một danh sách các tính năng độc lập - nó là một hệ thống của những mảnh ghép liên kết với nhau. Đến tuần thứ ba, bạn muốn thêm thứ gì đó mới, AI bảo rằng nó cần thay đổi thứ bạn đã viết từ tuần trước, mà cái đó lại ảnh hưởng đến thứ từ tuần đầu tiên. Bạn không có một bức tranh rõ về cách những mảnh ghép đó khớp với nhau. AI còn giữ được toàn bộ context window - còn bạn thì không.

> Bức tường không phải là bằng chứng bạn không hợp với lập trình. Nó là dấu hiệu bạn đã build đủ nhiều để mọi thứ trở nên thật sự phức tạp.

Đây không phải thất bại - đây là một cột mốc. Nhưng nếu không có nước đi đúng ngay lúc này, hầu hết mọi người đều dừng lại.

## Điều phân biệt người ship và người bỏ cuộc

Pattern nhất quán nhất mà chúng tôi quan sát được - từ những dữ liệu trong [mục thấu hiểu người dùng](/vi/blog/category/user-insights) mà chúng tôi thu thập - không liên quan đến số giờ học hay nguồn tài liệu nào họ dùng. Nó nằm ở một hành vi duy nhất: **bạn làm gì khi AI đưa cho bạn đoạn code mà bạn không thực sự hiểu?**

**Những người bỏ cuộc** dán code vào, kiểm tra xem có chạy không, rồi tiếp tục. Khi nó vỡ sau đó, họ không có mô hình tinh thần để debug - nên lại hỏi AI, nhận thêm code họ cũng không hiểu. Cuối cùng, project trở thành một hộp đen mà họ sợ chạm vào, vì họ không còn biết nó hoạt động ra sao nữa.

**Những người ship được** dừng lại trước khi dán. Họ hỏi AI giải thích đoạn code đó làm gì. Hoặc họ tự viết ra những gì *họ nghĩ* code đó làm, rồi nhờ AI chỉnh lại. Họ xây bản đồ trong lúc đi.

Vấn đề là chỉ có thế thôi. Một nhóm đang ở trong vòng lặp với AI như một cái máy generate code. Nhóm còn lại đang dùng AI để xây dựng hiểu biết thực sự.

### Thói quen giải thích

Nếu có một hành vi mà chúng tôi muốn mọi người mới bắt đầu build hình thành được, đó là: **đừng bao giờ dán code mà bạn không thể tự giải thích bằng một câu đơn giản**.

Không cần giải thích hoàn hảo. Không cần từ kỹ thuật đúng. Chỉ cần: "phần này lắng nghe khi người dùng bấm nút" hay "phần này lưu danh sách task ở nơi cả app có thể truy cập được".

Nếu bạn không làm được điều đó, bạn chưa thực sự học nó - dù code có chạy hoàn hảo đến đâu. Lần sau khi cần chỉnh sửa, hoặc khi cái gì đó gần đó vỡ, bạn sẽ phải bắt đầu từ con số không.

Vài prompt có thể biến AI từ cái máy tạo code thành người thầy kiên nhẫn:

```
"Explain what you just wrote like I've never seen JavaScript before."
"What would break if I removed this section?"
"Add a plain-English comment above each block explaining what it does."
```

Đây không phải những bước làm bạn chậm lại. Đây là khoản đầu tư thực sự để một tháng sau bạn có thể tiến nhanh hơn nhiều.

## Cái bẫy của sự tự tin

Đáng nói là còn có một sai lầm ngược lại - đi quá nhanh khi mọi thứ đang chạy tốt.

Trong những tuần đầu, có những giai đoạn mọi thứ cứ thế trơn tru - prompt hoạt động, tính năng ra đời, project bắt đầu có hình hài thật sự. Rất dễ để muốn giữ momentum đó bằng cách đẩy tiếp mà không dừng: thêm tính năng, thêm màn hình, thêm API call.

Nhưng sự nhanh chóng trong giai đoạn "đang chạy tốt" thường có nghĩa là bạn đang vay nợ từ giai đoạn "bức tường" sau đó. Mỗi đoạn code bạn thêm vào mà không hiểu là một lớp phức tạp sẽ cần được giải quyết sau này - dưới áp lực, khi có thứ gì đó vỡ vào lúc tệ nhất.

Những người ship đều đặn thường đi với một nhịp độ ổn định, thậm chí có vẻ nhàm. Khi thứ gì đó hoạt động, họ dành chút thời gian để chắc rằng họ hiểu tại sao. Khi thứ gì đó vỡ, họ không chỉ vá triệu chứng - họ hỏi lý do gốc rễ là gì. Đây chính xác là điều chúng tôi đã thấy trong [những gì người mới học dạy chúng tôi về code với AI](/vi/blog/what-beginners-taught-us-learning-to-code-with-ai): những học viên vượt qua được giai đoạn đầu hầu như đều là những người đã chủ động chọn đi chậm hơn.

## Cách xây lại bản đồ

Nếu bạn đang ở bức tường - nhìn vào codebase như thể ai đó xa lạ đã viết nó - bản năng thường là muốn bắt đầu lại từ đầu. Đôi khi điều đó đúng. Nhưng phần lớn, thứ bạn cần là một phiên "vẽ bản đồ".

Đây là cách thực hiện:

1. **Đọc file chính từ đầu đến cuối** - không phải để hiểu từng dòng, mà để nhận ra phần nào quen thuộc và phần nào còn mờ với bạn.
2. **Nhờ AI dẫn bạn tham quan**: *"Đây là codebase của tôi. Giải thích mỗi phần lớn làm gì bằng ngôn ngữ đơn giản, như thể tôi chưa từng nhìn vào nó."*
3. **Tự viết mô tả 10 câu về app của bạn** mà không nhìn vào code: nó làm gì, các file chính là gì, điều gì xảy ra từ lúc người dùng thao tác đến khi có kết quả. Những khoảng trống trong mô tả đó chính xác là chỗ hiểu biết của bạn đang thiếu.
4. **Chọn một khoảng trống và đào sâu** - từng phần một, không phải tất cả cùng lúc.

Cách này chậm hơn việc build thêm tính năng. Nhưng nó nhanh hơn rất nhiều so với việc bắt đầu lại lần thứ ba.

## Cái nhìn dài hơn

Mỗi project bạn hoàn thành để lại cho bạn một mô hình tốt hơn một chút về cách hệ thống phần mềm vận hành. Bức tường đầu tiên rất khó - nhưng mỗi người vượt qua được nó đều thấy cái tiếp theo ngắn hơn, ít đáng sợ hơn.

Suy cho cùng, những người ship sản phẩm hầu như đều là những người đã chọn **hiểu quan trọng hơn tốc độ** - không phải vì đi chậm là hay ho gì, mà vì hiểu chính là thứ cho phép bạn tăng tốc thực sự sau này mà không bị sụp đổ giữa chừng.

Nếu bạn đang ở bức tường lúc này: bạn đang gần hơn bạn nghĩ. Nước đi tốt nhất không phải là cố đâm đầu vào hay bỏ cuộc - mà là dừng lại và xây bản đồ.