Cover image
Phan Trung Nghĩa
Phan Trung Nghĩa
Senior Fullstack Developer

Tôi Từng Đổi Stack Vì Lương — Và Đây Là Những Gì Thực Sự Xảy Ra

10/06/2026
90 views

4


Tôi là ai, đang làm gì
Năm đó tôi đang làm PHP backend được khoảng 3 năm. Không tệ. Lương ổn ở mức trung bình thị trường, công việc quen tay, không áp lực. Nhưng mỗi lần lướt LinkedIn hay đọc các group dev Việt, tôi đều thấy một pattern lặp đi lặp lại: Node.js, React, Go, Rust... lương cao hơn hẳn.
Đặc biệt là Node.js. Cùng là backend, nhưng JD Node thường offer cao hơn JD PHP từ 20–40%. Tôi bắt đầu tự hỏi: mình đang bỏ tiền trên bàn à?
Sau 2 tháng đắn đo, tôi quyết định: đổi stack.
Giai đoạn 1: Hưng phấn và ảo tưởng (tháng 1–3)
Tôi học Node.js và Express ban đêm sau giờ làm. Rồi NestJS. Rồi TypeScript. Rồi thấy cần học thêm Docker vì JD nào cũng hỏi. Rồi Kubernetes vì "thị trường đang cần". Rồi...
Bạn thấy vấn đề chưa?
Tôi sa vào tutorial hell — cái bẫy mà dân học lập trình ai cũng biết nhưng vẫn rơi vào. Mỗi ngày học một thứ mới, cảm giác productive lắm, nhưng không có gì thực sự hoàn chỉnh để show ra.
Sau 3 tháng, tôi có thể viết được một REST API bằng NestJS. Nhưng khi ngồi code thật, tôi chậm hơn so với PHP của mình gấp 3–4 lần. Còn khi debug một cái bug liên quan đến async/await và event loop, tôi mất cả buổi chiều cho thứ mà một dev Node senior có thể xử lý trong 10 phút.
Giai đoạn 2: Thực tế phũ phàng khi đi phỏng vấn (tháng 4–5)
Tôi bắt đầu apply. Kết quả? Rớt liên tục ở vòng technical.
Không phải vì tôi không biết Node. Mà vì tôi biết Node ở mức đủ để làm tutorial, không đủ để làm production. Các câu hỏi về performance, về memory leak, về cách tối ưu query trong một hệ thống lớn — tôi trả lời được về mặt lý thuyết, nhưng thiếu kinh nghiệm thực chiến để nói chuyện ngang hàng với interviewer.
Trong khi đó, ở công ty cũ với PHP, tôi đã từng:
  • Tối ưu một query chạy 8 giây xuống còn 0.3 giây
  • Xử lý bottleneck cache cho hệ thống 50k request/ngày
  • Debug một race condition trong batch job chạy đêm
Đó là thứ tạo ra giá trị. Không phải cái tên của ngôn ngữ.
Nhưng tôi đã bỏ hết nền tảng đó lại phía sau.
Giai đoạn 3: Nhận job — nhưng không phải như kỳ vọng (tháng 6)
Cuối cùng tôi cũng nhận được offer Node.js. Lương? Cao hơn PHP cũ 15%.
Không phải 40% như tôi kỳ vọng.
Lý do HR giải thích rất thẳng: "Bạn có background PHP mạnh, nhưng Node thực tế mới hơn 1 năm, nên chúng tôi offer ở mức mid-junior."
Tôi đã "reset" gần 2 năm kinh nghiệm trong mắt nhà tuyển dụng. Từ một senior PHP developer có thể negotiate lương, tôi trở thành một mid Node.js developer cần chứng minh lại từ đầu.
Vậy điều gì thực sự tác động đến lương?
Sau trải nghiệm đó, tôi ngồi lại và nhìn những người xung quanh — người lương cao, người lương thấp, cùng stack lẫn khác stack. Và tôi nhận ra:
1. Depth > Breadth Một người biết PHP/MySQL sâu đến tận xương tủy — biết cách tối ưu, biết cạm bẫy, biết xử lý edge case — luôn được trả cao hơn người biết 5 ngôn ngữ ở mức "làm được tutorial".
2. Problem-solving > Syntax Interviewer không hỏi bạn nhớ API hay không. Họ hỏi: khi hệ thống chậm, bạn debug như thế nào? Khi database bị lock, bạn xử lý ra sao? Câu trả lời đó đến từ kinh nghiệm thực chiến, không phải từ tên stack.
3. Môi trường quan trọng hơn ngôn ngữ Cùng là Node.js developer: làm outsource cho agency nhỏ, lương 800–1200 USD. Làm product company có funding, lương 2000–3500 USD. Làm remote cho công ty nước ngoài, 3000–6000 USD. Stack giống nhau, lương cách nhau 5–7 lần.
4. Khả năng deliver và communicate Senior developer không chỉ code giỏi — họ biết estimate chính xác, biết communicate risk, biết push back khi requirement không hợp lý. Đây là thứ không stack nào dạy bạn.
Vậy đổi stack có đáng không?
Câu trả lời thật của tôi: đáng — nhưng không vì lý do bạn nghĩ.
Tôi không kiếm được nhiều hơn đáng kể sau khi đổi sang Node.js. Nhưng tôi học được cách tư duy về hệ thống theo một góc nhìn khác. Tôi hiểu event-driven architecture sâu hơn. Và sau 1.5 năm với Node thực chiến, tôi thực sự có thể negotiate lương tốt hơn — không phải vì tôi biết Node, mà vì tôi đã xây dựng lại depth trong stack mới đó.
Nếu quay lại, tôi sẽ làm khác:
  • Không đổi stack vì lương — mà đổi vì thấy thực sự thú vị hoặc vì domain bạn muốn vào yêu cầu stack đó
  • Trước khi đổi, maximize giá trị ở stack hiện tại — senior với PHP vẫn kiếm hơn mid với Node
  • Đổi từ từ — làm side project, contribute open source, rồi mới apply full-time
Kết
Tech stack là vé vào cửa. Nhưng thứ quyết định bạn ngồi hàng ghế nào bên trong — lương, vị trí, cơ hội — là độ sâu của kiến thức, khả năng giải quyết vấn đề thực tế, và môi trường bạn chọn.
Tôi đã mất gần một năm để học điều đó theo cách khó nhất.
Bạn không cần phải vậy.
4