Hi there,

Welcome to Story Hub!

challenge-icon

Do You Believe the “Tech Stack Determines Salary” Myth?

user-avatar
Huyền
26/06/2026

Tech Stack Quyết Định Mức Lương? Tôi Không Còn Tin Điều Đó Sau Nhiều Năm Làm IT

Trong ngành IT, có một câu hỏi mà mình thấy xuất hiện khá thường xuyên:"Học công nghệ nào để lương cao?"Mỗi khi có một công nghệ mới nổi lên, rất nhiều bài viết bắt đầu xuất hiện với những tiêu đề như:Học AI để tăng gấp đôi thu nhập..Học Rust vì đây là tương lai của ngành lập trình.Fullstack React + Next.js đang được săn đón với mức lương hấp dẫn.Điều đó khiến nhiều người tin rằng mức lương của lập trình viên phụ thuộc gần như hoàn toàn vào tech stack mà họ đang sử dụng. Nhưng sau nhiều năm làm việc, mình nhận ra rằng câu chuyện không đơn giản như vậy.Tech Stack Có Ảnh Hưởng Đến Thu NhậpMình không phủ nhận điều đó. Thị trường luôn có những giai đoạn mà một công nghệ nào đó trở nên "hot" hơn những công nghệ khác.Ví dụ:AI và Machine Learning đang được đầu tư mạnh.Cloud Computing ngày càng phổ biến.Golang được nhiều công ty sử dụng cho hệ thống backend hiệu năng cao.React, Next.js hay TypeScript gần như đã trở thành tiêu chuẩn ở nhiều dự án frontend hiện đại.Khi nhu cầu tuyển dụng tăng nhưng nguồn nhân lực chưa đủ, mức lương cho những vị trí này thường cao hơn mặt bằng chung. Đó là quy luật cung và cầu rất bình thường.Tuy nhiên...Tech Stack Không Phải Là Yếu Tố Duy NhấtMình từng gặp những trường hợp rất thú vị. Có người sử dụng một tech stack được xem là "cũ", nhưng mức lương vẫn cao hơn nhiều người đang làm công nghệ mới. Ngược lại, cũng có những người liên tục chạy theo trend công nghệ nhưng thu nhập lại không cải thiện đáng kể.Tại sao?Bởi vì doanh nghiệp không chỉ trả tiền cho việc bạn biết sử dụng một framework hay một ngôn ngữ lập trình.Họ trả tiền cho:Khả năng giải quyết vấn đề.Tư duy thiết kế hệ thống.Kinh nghiệm thực chiến.Kỹ năng giao tiếp và làm việc nhóm.Khả năng dẫn dắt dự án.Mức độ ảnh hưởng đến sản phẩm và doanh nghiệp.Một lập trình viên có thể học React trong vài tháng. Nhưng để trở thành người có thể thiết kế kiến trúc hệ thống, tối ưu hiệu năng, mentoring cho đội nhóm và chịu trách nhiệm cho một sản phẩm lớn thì cần nhiều năm kinh nghiệm. Và chính những giá trị đó thường tạo nên khoảng cách lớn về thu nhập.Mình Đã Từng Muốn Đổi Tech Stack Vì TiềnMình nghĩ rất nhiều người trong ngành cũng từng như vậy. Khi thấy một công nghệ nào đó đang được trả lương cao hơn, chúng ta dễ có cảm giác rằng: "Nếu mình chuyển sang công nghệ đó thì thu nhập sẽ tăng nhanh hơn." Điều đó không sai, nhưng mình nhận ra một điều:Chỉ đổi tech stack thôi chưa đủ.Nếu chỉ học cú pháp mới, framework mới nhưng không nâng cao năng lực giải quyết vấn đề, thì mức lương có thể tăng trong ngắn hạn nhưng rất khó tạo ra sự khác biệt lớn trong dài hạn. Ngược lại, khi có nền tảng kỹ thuật tốt, việc chuyển đổi giữa các công nghệ thường dễ dàng hơn rất nhiều.Điều Quan Trọng Hơn Là Giá Trị Bạn Tạo RaSau cùng, mình cho rằng tech stack chỉ là một công cụ. Giống như một người thợ mộc, chỉ với một chiếc búa tốt có thể giúp công việc hiệu quả hơn, nhưng giá trị thực sự vẫn nằm ở tay nghề của người sử dụng nó. Trong ngành IT cũng vậy. Tech stack có thể mở ra cơ hội mới. Tech stack có thể giúp bạn tiếp cận những dự án tốt hơn. Tech stack có thể giúp mức lương khởi điểm cao hơn. Nhưng thứ quyết định sự phát triển lâu dài vẫn là khả năng học hỏi, thích nghi và tạo ra giá trị cho sản phẩm, khách hàng và doanh nghiệp.Góc Nhìn Cá NhânNếu bây giờ có người hỏi mình:"Nên chọn tech stack nào để lương cao?"Có lẽ mình sẽ trả lời:Hãy chọn một công nghệ có nhu cầu thực tế trên thị trường, phù hợp với định hướng của bạn và đầu tư đủ sâu để trở thành người giỏi trong lĩnh vực đó.Bởi vì một lập trình viên giỏi trong một tech stack "bình thường" thường có giá trị hơn một lập trình viên chỉ biết sơ qua nhiều công nghệ đang là xu hướng.Còn bạn thì sao?Tech stack bạn đang làm có thực sự tác động đến mức lương của bạn không?Bạn đã từng đổi công nghệ vì lý do thu nhập chưa?Và nếu nhìn lại, quyết định đó có mang lại kết quả như bạn kỳ vọng không?Mình rất muốn nghe thêm góc nhìn và trải nghiệm của mọi người.
challenge-post-cover
#3
4
35
user-avatar
Jany Lin
15/06/2026

Why Language Precision Shapes Performance in Indonesia’s Manufacturing Industry

A production line can look perfectly stable on the surface and still be losing control underneath. Nothing breaks and stops. Yet output starts drifting in small ways that are hard to trace. In many cases, an Indonesian translation company plays a significant role in preventing these mismatches by ensuring technical instructions stay consistent from engineering teams to the production floor.On a multi-shift assembly line in Indonesia, a batch of identical components gets produced twice without anyone noticing at first. The cause is not a machine fault or a scheduling error. It starts much earlier, in how a single instruction is understood differently across shifts.One team works from the original English technical sheet. Another follows a translated version shared inside the plant. Both groups believe they are executing the same requirement correctly. In practice, the meaning has drifted just enough to split the outcome. By the time the results are compared, the gap is already built into the product. It shows up as rework on the line, shipment delays, or small but persistent differences in quality between batches.When technical writing stops behaving like instructionsManufacturing documentation is not descriptive writing. Every sentence in a manual is supposed to reduce variation, not create it. But language does not always stay stable when it moves across systems, teams, and shifts.A phrase like "tighten until secure" might seem harmless in isolation. In practice, it introduces room for interpretation. One operator applies higher torque. Another stops earlier based on feel. Both actions look reasonable at the moment. The outcome is a loss of precision as instructions move between languages and departments.In many Indonesian factories connected to global supply chains, documentation passes through several layers: engineering teams writing in English, translation teams adapting content, internal supervisors adjusting phrasing, and operators executing instructions on the floor. At each stage, small wording changes can alter how instructions are interpreted. By the time the instruction reaches the line, it no longer fully matches the original engineering intent.Where variation enters productionMost factories do not experience failure at a single point. Variation builds gradually. It usually appears in small, repeated moments:A maintenance note rewritten informally during a shift handover.A safety step shortened by a supervisor for faster communicationA translated manual updated in one file but not synchronized in anotherA technical term is replaced because it feels more familiar locally.On the floor, they even feel practical. But over time, they create parallel versions of the same process. Two operators can follow what they believe is identical instruction and still produce slightly different results. That is where consistency begins to weaken.In several facilities working with an Indonesian translation company, this issue becomes easier to control because documentation is handled through structured terminology systems rather than informal adaptation.The assumption that creates hidden riskOne of the most common assumptions in manufacturing environments is that language skills automatically equal technical accuracy. A bilingual employee is asked to handle translation without additional systems in place. Technical language is not general communication. It is controlled instruction. A single term in calibration, torque settings, or inspection criteria carries a fixed operational meaning. When that term changes across documents, the meaning shifts with it.Another growing issue is over-reliance on machine translation tools without technical validation. These systems can produce fluent sentences, but they do not understand engineering intent. They prioritize readability, not operational control. The result is documentation that looks correct but leads to inconsistent execution on the production floor. Most factories only discover this after defects appear or customer complaints rise.Language as part of production controlIn more mature manufacturing systems, documentation is treated as part of the production system itself. Instead of translating documents independently, companies begin to control language centrally. This is where official language translation services become part of operational governance. In this type of system:Torque values remain consistent across all documentation.Safety instructions are standardized without paraphrasing.Process steps follow a fixed, approved wording structure.This reduces interpretation at the operational level and limits variation before it reaches the line. Many manufacturers also introduce formal language quality control steps, similar to engineering review. How modern factories reduce misalignmentIn structured production environments, documentation updates do not happen randomly. They follow controlled workflows tied to engineering change processes. When a technical adjustment is made, it triggers updates across multiple documents at once. If one version updates faster than another, inconsistencies appear immediately.To prevent this, some factories integrate documentation systems with operational platforms like ERP and MES environments. This ensures that operators, supervisors, and engineers are working from the same approved version at the same time. Language consistency depends on synchronization across systems and documentation. When instructions remain stable across systems, workers do not pause to interpret meaning. They execute faster because there is less uncertainty in what is expected.A real operational environment in IndonesiaIn Indonesia’s automotive manufacturing ecosystem, production environments operate under strict global quality expectations. Facilities supporting high-volume assembly work follow detailed documentation control practices to maintain consistency across shifts and suppliers.Inside these systems, instructions are not casually rewritten or adjusted during production. Any change goes through review cycles involving engineering, quality assurance, and documentation control teams. The focus is not just on translating content from one language to another. It is to ensure that every version of the instruction carries the same operational meaning. This becomes especially important in multi-shift environments where teams do not always overlap. A small difference in wording between shifts can lead to different execution styles, even when the task is identical. Over time, structured language control helps reduce that drift and keeps output aligned across production cycles.When problems begin before production startsWhen defects appear on the floor, attention moves toward machines, materials, or operator performance. These are visible factors. But a large portion of variation begins earlier, during documentation creation and distribution.A slightly unclear instruction does not always stop production. It creates subtle deviation. One step is interpreted differently, or a measurement is adjusted slightly. One inspection is skipped or reworded. Across hundreds or thousands of units, those small deviations become measurable losses. This is why documentation quality is directly connected to operational stability.Why language stability affects output speedSpeed in manufacturing is also about decision clarity on the floor. When instructions are inconsistent, workers slow down without realizing it. They double-check steps. They ask supervisors for confirmation and rely on experience instead of documentation. That hesitation does not always appear in reports, but it affects throughput.When language is stable and controlled, that uncertainty drops. Workers spend less time interpreting and more time executing. Over long production runs, this creates measurable improvements in consistency and cycle time.Final ReflectionManufacturing performance is measured in output, efficiency, and cost control. Those metrics matter, but they lie on top of something less visible: shared understanding.When instructions remain precise across languages, systems, and shifts, production behaves predictably. When they drift, even slightly, variation spreads through the process. Most factories do not fail because they lack capability. They lose consistency because meaning gradually changes as instructions move between people, documents, and departments. In that sense, language is part of the structure that keeps production aligned in the first place.
0
199
challenge-icon

Solo builder: Vibe coding vs Cybersecurity?

user-avatar
Ngo Thi Thanh Ha
24/06/2026

Solo Builder: Vibe Coding vs Cybersecurity? Kéo Tốc Độ Ra Thị Trường Có Đánh Đổi Bằng Sự An Toàn?

Chào các đồng nghiệp solo builder! Bạn biết cảm giác đó: một ý tưởng tuyệt vời, code chảy tràn, và bạn muốn đưa nó ra thị trường ngay lập tức. Đó là thời kỳ "Vibe Coding" — giai đoạn hưng phấn khi sản phẩm hình thành với tốc độ ánh sáng. Nhưng khi sản phẩm bắt đầu đi xa hơn, một bóng ma bắt đầu xuất hiện: an toàn thông tin (Cybersecurity). Vậy bạn dung hòa tốc độ và an toàn thế nào?Câu Chuyện Thật: Khi Vibe Sụp Đổ Trước Dữ Liệu ThựcHai năm trước, tôi bắt đầu xây dựng dự án solo đầu tiên: một công cụ phân tích SEO nhỏ cho các blogger. Giai đoạn đầu, tôi hoàn toàn 'vibe'. Tôi ưu tiên giao diện, tính năng chính và tốc độ release. "Lúc đầu ai cũng vậy," tôi tự nhủ, "chỉ cần hoạt động là được, security tính sau."Sản phẩm được release trong 2 tháng, và tôi rất tự hào. Cho đến khi người dùng đầu tiên — một người dùng trả phí — báo cáo một vấn đề. Anh ấy đã vô tình truy cập vào bảng điều khiển của một người dùng khác chỉ bằng cách thay đổi một số trong URL. Đó là lỗ hổng IDOR (Insecure Direct Object Reference) kinh điển.Sự hưng phấn biến mất, thay vào đó là sự sợ hãi. Tôi phải đóng cửa dịch vụ ngay lập tức, sửa lỗi, và liên lạc với người dùng để xin lỗi. Tôi đã build quá nhanh mà không kiểm tra quyền truy cập cơ bản. Đó là một bài học đắt giá về việc 'nợ an toàn' sẽ phải trả giá đắt như thế nào.Giải Quyết: Xây Dựng Khung An Toàn Từ Số 0Tình huống đó buộc tôi phải thay đổi toàn bộ quy trình build. Tôi không thể để security là một yếu tố phụ nữa. Tôi đã làm gì để giải quyết nợ an toàn mà vẫn giữ được tốc độ cần thiết?1. Bắt Đầu Quan Tâm Đến Security Ngay Từ Giai Đoạn Build: Thay vì để sang giai đoạn sau, tôi đưa an toàn vào ngay quy trình phát triển:Nguyên tắc "Mặc Định An Toàn": Ngay từ khi viết function đầu tiên, tôi đã xác thực quyền truy cập. Nếu function đó tương tác với dữ liệu, nó phải được bảo vệ bởi default.Tự Động Hóa Kiểm Tra: Tôi sử dụng các tool static code analysis (SAST) và dynamic analysis (DAST) cơ bản trong CI/CD pipeline để phát hiện các lỗi phổ biến (SQLi, XSS) ngay khi commit code. Nó chỉ mất 5 phút để tích hợp, nhưng đã ngăn chặn vô số lỗi sau này.2. Không Cần Hoàn Hảo, Chỉ Cần Chắc Chắn: Tôi không cố gắng xây dựng một hệ thống bảo mật cấp ngân hàng. Thay vào đó, tôi tập trung vào:Top 10 OWASP: Tôi học và nắm vững 10 lỗ hổng bảo mật web phổ biến nhất. Điều này giúp tôi tránh được 80% rủi ro với 20% nỗ lực.Xác Thực và Phân Quyền Mạnh: Đây là cốt lõi. Tôi đã build lại hệ thống auth, đảm bảo quyền truy cập được kiểm tra ở mọi endpoint và API.Giá Trị Cho Bạn: Insight Có Thể Áp Dụng LạiNếu bạn là solo builder, đừng để security là "nỗi sợ" mà là một "công cụ hỗ trợ" cho sự phát triển.Bài học 1: Bắt đầu ngay, không cần lớn. Tích hợp security audit tool cơ bản hoặc nắm vững Top 10 OWASP không tốn quá nhiều thời gian nhưng có thể ngăn chặn 90% các lỗ hổng cơ bản. Nó giúp bạn tự tin hơn khi đưa sản phẩm ra thị trường.Bài học 2: 'Dung hòa' không phải là 'đánh đổi'. Tốc độ và an toàn có thể đi cùng nhau. Xây dựng một quy trình build an toàn ngay từ đầu sẽ giúp bạn build nhanh hơn trong dài hạn, vì bạn không phải mất hàng tuần để sửa lỗi sau này.Bài học 3: Xem an toàn là lợi thế cạnh tranh. Việc có một sản phẩm an toàn và minh bạch về bảo vệ dữ liệu sẽ giúp bạn chiếm được lòng tin của người dùng nhanh hơn, đặc biệt là người dùng doanh nghiệp.Tôi có thay đổi cách build của mình không? Hoàn toàn có. Tôi vẫn 'vibe', nhưng 'vibe' của tôi hiện tại đã có một lớp bảo vệ. Và bạn, bạn quan tâm đến an toàn sản phẩm từ lúc nào?
challenge-post-cover
#5
5
69
user-avatar
Nguyen Tuan Kiet
07/05/2026

AI không thay thế tôi. Nhưng nó khiến tôi nhận ra mình phải thay đổi

Có một thời gian tôi từng nghĩ:“AI rồi sẽ thay thế con người.”Nhất là khi thấy AI bắt đầu:- viết content,- trả lời câu hỏi,- hỗ trợ lập trình,- tạo hình ảnh,- phân tích dữ liệu,- thậm chí nói chuyện ngày càng giống con người.Tôi đã từng nghĩ:“Nếu AI làm được gần hết mọi thứ… vậy con người còn lại gì?”Nhưng càng tiếp xúc và sử dụng AI nhiều hơn, tôi lại nhận ra một điều khác.AI không thật sự thay thế tôi.Nó chỉ khiến tôi nhận ra:nếu mình không thay đổi, mình sẽ tự bị bỏ lại phía sau.Trước đây, tôi thường làm mọi thứ theo cách cũ:- tự mò rất lâu,- làm việc theo thói quen,- mất hàng giờ cho những việc lặp lại,- và đôi khi bị mắc kẹt vì không biết bắt đầu từ đâu.Sau khi bắt đầu dùng AI đúng cách, tôi thấy tốc độ học và làm việc của mình thay đổi rất nhiều.Không phải vì AI làm hết thay tôi.Mà vì:- tôi tìm ý tưởng nhanh hơn,- học kỹ năng mới nhanh hơn,- sắp xếp suy nghĩ rõ hơn,- và có thêm thời gian tập trung vào những thứ quan trọng hơn.Điều thú vị nhất là:AI giúp tôi nhận ra giá trị thật sự của con người không nằm ở việc “làm nhanh hơn máy”.Mà nằm ở:- trải nghiệm thật,- khả năng kết nối,- tư duy,- cảm xúc,- sự thấu hiểu,- và cách mình tạo ra giá trị cho người khác.AI có thể hỗ trợ tôi viết.Nhưng nó không sống cuộc đời của tôi.Nó không trải qua thất bại thay tôi.  Không có cảm xúc thay tôi.  Không có trải nghiệm thật để kể thay tôi.Và cũng từ đó, tôi hiểu rằng:Người bị thay thế trong tương lai có thể không phải là người kém.Mà là người ngừng học hỏi và từ chối thích nghi.---Tôi không nghĩ AI là thứ để sợ.Tôi nghĩ AI là lời nhắc rằng:thế giới đang thay đổi rất nhanh.Và nếu mình chịu học, chịu thay đổi, chịu cập nhật bản thân mỗi ngày…Thì AI không phải mối đe dọa.Nó sẽ là một công cụ cực kỳ mạnh để giúp mình phát triển nhanh hơn phiên bản cũ của chính mình.
3
934
challenge-icon

Do You Believe the “Tech Stack Determines Salary” Myth?

user-avatar
Monkey
24/06/2026

Tech stack quyết định mức lương: “Huyền thoại” hay thực tế phũ phàng?

Có một câu hỏi kinh điển mà giới IT chúng ta vẫn hay tranh luận: “Học ngôn ngữ nào để lương cao nhất?” hay “Tech stack phổ biến có đồng nghĩa với thu nhập khủng?”.Với tư cách là một người làm việc trong ngành IT—trải qua từ vị trí IT Helpdesk, quản trị hệ thống cho đến việc tự tay viết các script automation, build extension để phục vụ các dự án cá nhân—góc nhìn của mình về câu chuyện này gói gọn trong một chữ: Tùy. Nhưng “tùy” ở đây không phải là nước đôi, mà nó có quy luật rõ ràng.1. Bản chất của Tech Stack: "Công cụ" vs "Giá trị cốt lõi"Nhiều người tin rằng cứ nhảy vào những tech stack “quốc dân” như JavaScript (Node.js, React) hay Python là auto lương cao vì thị trường cần nhiều. Thực tế, tech stack phổ biến là một con dao hai lưỡi:Điểm cộng: Việc làm bao la, tài liệu ngập tràn, dễ học, dễ bắt đầu.Điểm trừ: Tỷ lệ cạnh tranh cực kỳ khốc liệt (Red Ocean). Khi một công nghệ quá phổ biến, số lượng Engineer biết nó sẽ tỷ lệ thuận tăng lên, dẫn đến mức lương trung bình bị kéo xuống, trừ khi bạn thuộc top 5% xuất sắc.Ngược lại, những stack ngách hoặc khó nhằn hơn đôi khi lại mang lại mức thu nhập đột biến vì quy luật cung - cầu.Tuy nhiên, nếu nhìn sâu hơn, tech stack chỉ là cái vỏ, tư duy giải quyết vấn đề mới là cái lõi. Một Senior Engineer có base tốt về cấu trúc dữ liệu, giải thuật, system architecture và tư duy tối ưu hóa thì chuyển sang stack nào cũng có thể master nhanh chóng và nhận mức đãi ngộ xứng đáng.2. Câu chuyện thực tế: Khi mình chọn dịch chuyển Tech StackMình từng có giai đoạn tập trung mạnh vào các công việc vận hành, hỗ trợ kỹ thuật truyền thống. Nhưng để bứt phá về cả thu nhập lẫn hiệu suất công việc, mình buộc phải thay đổi. Mình không chọn tech stack theo trend "nghe đồn lương cao", mà chọn theo bài toán mình cần giải quyết.Để tối ưu hóa công việc và tự động hóa các quy trình lặp đi lặp lại, mình bắt đầu đào sâu vào Python (để viết script, cào dữ liệu, tương tác API), JavaScript/XPath (để build các extension tùy biến trên browser, tự động hóa thao tác web) và quản trị hệ thống Linux nâng cao (như deploy proxy server, tối ưu hóa hạ tầng trên Mini PC).Kết quả có như kỳ vọng? Hoàn toàn có. Nhưng bước ngoặt thu nhập không đến từ việc mình "biết" Python hay JS. Nó đến từ việc mình dùng những công cụ đó để tạo ra giải pháp. Khi mình có thể tự tay xây dựng một hệ thống proxy IPv6 script tự động chạy mượt mà, hoặc cấu hình các môi trường AI local để tối ưu hóa công việc, giá trị mình tạo ra lớn hơn rất nhiều so với việc chỉ ngồi fix lỗi vận hành thông thường. Thu nhập tăng lên là kết quả tất yếu của việc nâng cao năng suất đó.3. Bài học rút ra cho những ai đang đứng giữa các lựa chọnNếu bạn đang cân nhắc đổi hoặc chọn tech stack vì lý do thu nhập, đây là vài "insight" xương máu mình rút ra được:Đừng chạy theo Trend một cách mù quáng: Đừng học một ngôn ngữ chỉ vì thấy trên mạng bảo "lương ngàn đô". Hãy học nó vì nó giải quyết được bài toán thực tế trong công việc hiện tại của bạn, hoặc giúp bạn bước chân vào một mảng thị trường cụ thể mà bạn nhắm tới.Làm chủ "Tư duy hệ thống" thay vì "Cú pháp": Cú pháp (Syntax) của ngôn ngữ thay đổi rất nhanh, nhưng tư duy logic, cách thiết kế hệ thống, tối ưu phần cứng và khả năng tự học (Research) mới là thứ đi cùng bạn lâu dài.Mức lương = Stack + Kinh nghiệm + Môi trường: Tech stack chỉ là điều kiện cần (chiếm khoảng 30%). 70% còn lại quyết định thu nhập của bạn nằm ở: Khả năng giải quyết vấn đề (Problem-solving), kỹ năng làm việc nhóm, tiếng Anh, và việc bạn có tìm được một môi trường (hoặc dự án) chịu chi cho giá trị của bạn hay không.Tóm lại: Tech stack không quyết định mức lương của bạn, cách bạn dùng tech stack đó để tạo ra bao nhiêu giá trị cho doanh nghiệp (hoặc dự án cá nhân) mới là thước đo cuối cùng trên bảng lương. Hãy là một người giải quyết vấn đề giỏi (Problem Solver) bằng công nghệ, chứ đừng chỉ là một người gõ code thuê!Chúc các bạn tìm được "long mạch" trên con đường sự nghiệp của mình!
challenge-post-cover
#4
4
64
banner desktop banner mobile
user-avatar
DAT NGUYEN
04/05/2026

AI - Đòn Bẩy hay Máy Nghiền lập trình viên!

A CTO asked me the question " Do you think AI will leverage developer's ability or it will suppress us ?" As a person working closely with LLM , AI Agent to develop Business Processes. The answer is obvious, it is the first part of the question. AI gonna be a big helps to all developers who's proactive enough to adapt, evolve and co-exist with big models. Imagine you're swimming in the vast sea of opportunity, swimming alone could take us many many years to reach promise land and but the story is different when you swim with big whale ( AI models). It is our guardians if we take actions now.Of course, it speeds our pace, drain more of our energy. But isn't it successful people always been... How do you think ? Be the frontier or be left behind ?
0
970
user-avatar
Philipp Eiselt
15/04/2026

The Accidenture Problem

Most meetings fail before they even start.Not because of bad ideas. Not because of the wrong people in the room. Because the person running it didn't do the work beforehand.Ever had a hard time getting a decision out of a meeting? Ever watched stakeholders glaze over somewhere around slide 14 — knowing full well your actual idea is on slide 25?That's not an attention problem. That's a preparation problem. Here's the uncomfortable truth:If you walk into a meeting trying to convince people of something — you've already lost and end in an  discussion about what the actual problem is rather then talking about the solution. Convincing is not a meeting activity. Convincing is homework.The meeting is where you collect the signature on work that was already done in the hallway, the Slack thread, the quick call on Tuesday, and the coffee you had with the one stakeholder you knew was going to push back.Align before the meeting. Use the meeting to decide.That's the whole playbook.And when you do it right, something almost magical happens:👉 The meeting ends early 👉 Decisions happen fast 👉 Nobody fights you in the roomBecause the resistance didn't disappear. You just dealt with it before anyone opened a calendar invite.For decision meetings, my rule is simple:3–5 slides. No more.Structure:Outcome → "We are going to do this."How → The approach, the solution, the planDecision → What needs approval, right now, in this roomThree lines per slide. Visuals over text walls.If your slide needs more than three lines to explain — you haven't finished thinking yet.And if you're on slide 25 before you get to the point — you haven't respected the room.But the real work happened before slide one.You talked to the key stakeholders earlyYou understood their concerns before they became objectionsYou incorporated their input so they already see themselves in the solutionYou gave them time to digest — so they're not processing and deciding at the same timeThat last part matters more than people realize.Nobody makes good decisions cold. When someone hears an idea for the first time in a meeting, their first instinct is protection, not progress. They poke holes. They ask for more time. They "want to take it offline."But when they've already had the conversation? When they've already raised their concern and seen it addressed?They walk in ready. The meeting becomes a formality — in the best possible way.This is also how you respect everyone in that room.Your developers, your consultants, your strategy leads, your junior team members — they're not there to watch a 45-minute presentation. They're there because their judgment matters.Pre-alignment means when they arrive, the context is already shared. Their energy goes toward the decision — not catching up, not sitting politely through slides that don't concern them.Great presenters inform. Great leaders close.The debate, the brainstorming, the messy back-and-forth — that belongs in the channels you already have.Do the work before the meeting. Keep it to 5 slides. Walk out with a decision.That's the difference between people who run meetings and people who actually get things done.The slide 25 line is the funniest and most relatable moment in this version — everyone has lived that meeting. Want me to now write the short series intro lines for all three posts so they feel like a cohesive LinkedIn series?
0
907
challenge-icon

Solo builder: Vibe coding vs Cybersecurity?

user-avatar
Phan Trung Nghĩa
15/06/2026

Security Debt: Khi Technical Debt Có Thể Giết Chết Startup Của Bạn

Hai startup, hai kết cụcStartup A ra mắt MVP trong 6 tuần. Auth bằng JWT tự viết, password hash bằng MD5 vì "nhanh hơn bcrypt", session không có expiry, API endpoint không check authorization — chỉ check authentication. Họ lý luận: "Chưa có user thật, chưa cần lo security."Tháng thứ 4, họ có 8,000 user. Tháng thứ 5, có người tìm ra IDOR (Insecure Direct Object Reference) trong API — chỉ cần đổi user_id trong request là đọc được data của bất kỳ ai. Toàn bộ database 8,000 user bị scrape trong một đêm. Email, số điện thoại, lịch sử giao dịch.Họ mất 3 tháng và gần như toàn bộ runway để xử lý hậu quả — thông báo user, rewrite auth layer, audit lại toàn bộ API. Một co-founder rời đi. Họ không bao giờ recover được trust từ những early adopter quan trọng nhất.Startup B cũng làm nhanh. Nhưng trước khi viết dòng code đầu tiên, họ dành 2 giờ để trả lời một câu hỏi: "Nếu hệ thống của chúng ta bị tấn công, thứ tệ nhất có thể xảy ra là gì?" Từ đó, họ xác định 4 security invariants — những property bắt buộc phải đúng từ đầu — và xây mọi thứ xung quanh đó. Phần còn lại, họ iterate như bình thường.Startup B vẫn ship nhanh. Nhưng họ không bao giờ phải dừng lại để rebuild nền móng.Sự khác biệt không phải là bao nhiêu thời gian họ dành cho security. Sự khác biệt là họ hiểu cái gì không thể sửa sau.Technical Debt — Khái Niệm Bạn Biết Nhưng Chưa Hiểu ĐủWard Cunningham — người đặt ra thuật ngữ "technical debt" — mô tả nó như một khoản vay: bạn viết code chưa hoàn hảo hôm nay để ship nhanh hơn, với ý định sẽ "trả nợ" sau bằng cách refactor.Metaphor này có hai phần quan trọng mà developer hay bỏ qua:Một là: nợ có lãi suất. Code xấu không chỉ là code xấu — nó là code ngày càng khó sửa hơn khi codebase lớn dần, khi có thêm người join, khi có thêm feature build trên nền đó. Lãi suất của technical debt tăng theo thời gian.Hai là: có những khoản nợ không thể trả. Bạn có thể refactor một function xấu. Bạn có thể đổi tên biến, tách class, viết lại module. Nhưng có một số quyết định kiến trúc — một khi đã đi theo hướng đó và build đủ nhiều thứ lên trên — thì chi phí để quay lại gần như tương đương với việc rewrite từ đầu.Security debt thuộc loại thứ hai.Security Debt Khác Technical Debt Thông Thường Ở Điểm GìĐây là điểm mấu chốt mà hầu hết bài viết về chủ đề này bỏ qua.Technical debt thông thường ảnh hưởng đến tốc độ của bạn. Codebase càng nhiều nợ, bạn develop càng chậm, bug xuất hiện càng nhiều, onboarding engineer mới càng mất thời gian. Đau, nhưng là đau từ từ, có thể dự báo được.Security debt ảnh hưởng đến sự tồn tại của bạn. Và nó hoạt động theo cơ chế hoàn toàn khác:Cơ chế 1: Rủi ro không tuyến tínhTechnical debt tích lũy đều đặn — 10 bad function hôm nay, 20 bad function tuần sau. Security debt không hoạt động theo cách đó. Một lỗ hổng duy nhất, dù hệ thống của bạn có 99 thứ khác hoàn hảo, vẫn có thể là điểm vào để toàn bộ hệ thống sụp đổ.Attacker không cần phá vỡ mọi thứ. Họ chỉ cần tìm đúng một điểm yếu.Cơ chế 2: Chi phí tăng theo cấp số nhân theo thời gian phát hiệnIBM Cost of a Data Breach Report (2023) đưa ra con số cụ thể: trung bình một data breach tốn $4.45 triệu USD để xử lý — bao gồm investigation, remediation, notification, legal liability, và reputational damage.Nhưng con số quan trọng hơn là thời gian phát hiện: những breach được phát hiện trong vòng 200 ngày có chi phí trung bình thấp hơn 23% so với những breach phát hiện sau 200 ngày. Lỗ hổng càng tồn tại lâu, thiệt hại càng nhân lên.Với startup giai đoạn đầu, bạn không có $4.45 triệu để xử lý hậu quả. Một breach nghiêm trọng ở scale vài nghìn user đã đủ để:Mất toàn bộ early adopterVi phạm quy định bảo vệ dữ liệu (PDPA tại Việt Nam, GDPR nếu có user EU)Mất khả năng raise funding — không investor nào muốn đổ tiền vào startup vừa bị hackMất nhân sự — engineer giỏi không muốn làm việc với codebase mà họ biết là thiếu an toànCơ chế 3: Trust collapse không có đường quay lạiTechnical debt không ai nhìn thấy từ bên ngoài. Security incident thì ngược lại — nó là public event. Một khi user đã bị breach, họ không quên. Và trong thời đại social media, câu chuyện lan rất nhanh.Đây là thứ không thể mua lại bằng tiền hay refactor bằng code.Barry Boehm và Cái Giá Của Việc Sửa MuộnNăm 1981, nhà khoa học máy tính Barry Boehm công bố một nghiên cứu mà kết quả của nó vẫn còn nguyên giá trị đến hôm nay: chi phí để sửa một lỗi tăng theo hàm mũ theo thời gian phát hiện trong vòng đời phát triển phần mềm.Cụ thể:Sửa lỗi trong giai đoạn requirements/design: chi phí cơ sở = 1xSửa trong giai đoạn coding: 6xSửa trong giai đoạn testing: 15xSửa sau khi đã release: 100xBoehm gọi đây là Cost of Change Curve — và nó là lý do cơ bản nhất tại sao "làm đúng từ đầu" không phải là chủ nghĩa hoàn hảo, mà là kinh tế học thuần túy.Với security, curve này còn dốc hơn. Vì sửa security không chỉ là sửa code — đó là sửa kiến trúc, migrate data, thay đổi cách hệ thống xử lý mọi request, retest toàn bộ, và đôi khi thông báo cho tất cả user về việc thay đổi.Lấy ví dụ cụ thể: Row-Level Security (RLS).Nếu bạn thiết kế database từ đầu với RLS — mỗi query tự động filter theo user_id của người đang đăng nhập — đó là vài dòng config trong PostgreSQL và một số convention trong ORM layer. Chi phí: gần bằng 0.Nếu bạn đã có 50 model, 200 API endpoint, và data của nhiều user đã pha trộn trong cùng table mà không có isolation rõ ràng, việc retrofit RLS là một dự án riêng kéo dài vài tuần, với rủi ro cao là bỏ sót edge case nào đó trong quá trình migration.Đây không phải lý thuyết — đây là câu chuyện xảy ra ở hầu hết mọi startup khi họ bắt đầu nghĩ nghiêm túc về multi-tenancy hoặc data isolation.Ba Quyết Định Kiến Trúc Mà Solo Builder Thường Làm SaiKhông phải mọi security decision đều quan trọng như nhau ở giai đoạn đầu. Nhưng có ba quyết định mà nếu làm sai, chi phí để sửa sau này là không tỷ lệ với công sức làm đúng ngay từ đầu.Quyết định 1: Authentication & Session ManagementĐây là nơi nhiều solo builder tự viết thay vì dùng thư viện đã được kiểm chứng — vì nghĩ là "đơn giản thôi."Auth không đơn giản. Auth là một trong những domain có nhiều edge case và subtle vulnerability nhất trong toàn bộ application security. Chỉ riêng JWT đã có hàng chục cách implement sai: alg: none attack, weak secret, missing expiry, improper invalidation sau logout, không rotate refresh token.Làm đúng từ đầu trông như thế nào:Dùng thư viện auth đã được audit: NextAuth, Passport.js, Auth.js, hoặc managed service như Clerk, Supabase AuthPassword phải hash bằng bcrypt/argon2 — không phải MD5, SHA1, hay SHA256 thuần túySession token phải có expiry hợp lý và phải invalidate được server-side khi logoutImplement rate limiting trên login endpoint từ ngày đầu — brute force là attack cơ bản nhấtChi phí để làm đúng: thêm 2-3 giờ setup ban đầu.Chi phí để fix sau khi đã có user và đang dùng auth sai: migration toàn bộ password hash (buộc user reset password), rewrite session management, audit toàn bộ flow liên quan. Tính bằng tuần.Quyết định 2: Authorization Model — Ai Được Xem GìAuthentication hỏi: "Bạn là ai?" Authorization hỏi: "Bạn được phép làm gì?"Hầu hết solo builder implement authentication tương đối ổn. Authorization thì thường bị bỏ qua hoặc làm không nhất quán.Pattern nguy hiểm phổ biến nhất: check authentication nhưng không check authorization.// ❌ Pattern sai — chỉ check user đã login app.get('/api/documents/:id', requireAuth, async (req, res) => { const doc = await Document.findById(req.params.id) return res.json(doc) }) // ✅ Pattern đúng — check user có quyền với resource cụ thể app.get('/api/documents/:id', requireAuth, async (req, res) => { const doc = await Document.findOne({ _id: req.params.id, owner: req.user.id // Chỉ trả về nếu document thuộc về user này }) if (!doc) return res.status(404).json({ error: 'Not found' }) return res.json(doc) })Lỗi này có tên trong OWASP Top 10: Broken Object Level Authorization (BOLA) — hay còn gọi là IDOR (Insecure Direct Object Reference). Đây là vulnerability phổ biến nhất trong API hiện đại, và là thứ đã hạ gục Startup A trong câu chuyện mở đầu.Làm đúng từ đầu: Mọi query lấy data đều phải có điều kiện filter theo owner/tenant. Đây là convention — một khi đã là convention trong codebase, mọi developer (kể cả bạn trong tương lai) sẽ tự nhiên follow.Fix sau: Audit lại 200 API endpoint, tìm chỗ nào còn thiếu authorization check, test từng cái. Và bạn sẽ không bao giờ chắc chắn 100% mình đã tìm hết.Quyết định 3: Secret ManagementSecrets — API key, database password, JWT secret, third-party credentials — là mục tiêu số một của automated scanner trên GitHub. Có những tool chạy 24/7 scan mọi public repository mới để tìm credentials bị commit nhầm.Pattern sai phổ biến:# .env file bị commit vào git DATABASE_URL=postgresql://admin:supersecret@localhost/prod JWT_SECRET=myverysecretkey123 STRIPE_SECRET_KEY=sk_live_xxxxxHoặc hardcode trong code:const stripe = new Stripe('sk_live_xxxxx') // ❌Làm đúng từ đầu:.env phải có trong .gitignore từ commit đầu tiên — không phải "sẽ thêm sau"Dùng environment variables hoặc secret manager (AWS Secrets Manager, Doppler, Vault)Rotate tất cả credentials nếu bạn không chắc chắn 100% chưa bao giờ commitChi phí để làm đúng: 30 phút setup .gitignore và .env.example đúng cách.Chi phí khi bị lộ: rotate toàn bộ credential, audit xem secret đó đã bị dùng chưa, thông báo cho các bên liên quan. Stripe key bị lộ có thể dẫn đến charge fraudulent hàng nghìn đô trước khi bạn kịp nhận ra.Security Invariants — Khái Niệm Bạn Cần BiếtĐây là framework tôi thấy hữu ích nhất để solo builder tiếp cận security mà không bị overwhelm.Security invariant là một property của hệ thống phải luôn đúng, bất kể codebase phát triển theo hướng nào.Ví dụ:"Không có user nào có thể đọc data của user khác trừ khi được explicit grant.""Mọi input từ bên ngoài đều phải được validate trước khi xử lý.""Không có credential nào được hardcode trong source code.""Mọi action thay đổi data phải được log với timestamp và actor."Điểm mạnh của cách tiếp cận này: thay vì cố gắng implement một checklist security dài vô tận, bạn xác định 4-5 invariant quan trọng nhất với domain của mình, rồi đảm bảo mọi quyết định thiết kế không vi phạm chúng.Và khi onboard người mới hoặc review PR, câu hỏi không phải là "code này có secure không?" (quá mơ hồ) mà là "code này có vi phạm invariant nào không?" (có thể kiểm tra được).Quy trình xác định security invariants cho solo builder:Hỏi: "Data nhạy cảm nhất trong app của tôi là gì?" (PII, payment info, private content)Hỏi: "Thứ tệ nhất có thể xảy ra nếu data đó bị lộ?"Hỏi: "Điều gì phải luôn đúng để điều đó không xảy ra?"Viết ra 4-5 câu khẳng định — đó là invariants của bạnReview lại chúng mỗi khi thêm feature mới có ảnh hưởng đến data modelVibe Coding + Security Debt — Nhân Tố NhânMột yếu tố mới cần nhắc đến trong năm 2025: AI-assisted development đang làm cho security debt tích lũy nhanh hơn bao giờ hết.Lý do không phải AI tạo ra code xấu (dù điều đó cũng xảy ra — nghiên cứu của NYU/Stanford năm 2022 cho thấy ~40% code do Copilot generate trong security-sensitive context chứa lỗ hổng). Lý do sâu hơn là velocity tăng nhưng comprehension không tăng tương ứng.Khi bạn tự viết code, bạn hiểu từng dòng. Khi bạn vibe code với AI, bạn có thể review và hiểu — nhưng dưới áp lực deadline, review trở thành "đọc lướt thấy trông ổn thì ship."Với business logic, đó là acceptable risk — bug có thể fix bằng hotfix.Với security, một authorization check bị bỏ sót, một input validation thiếu, một secret bị log — những thứ này có thể nằm im trong production nhiều tháng trước khi được exploit.Nguyên tắc thực tế: Với mọi code liên quan đến auth, authorization, input handling, hoặc data access — dù do AI hay bạn viết — hãy dành thêm 5 phút để hỏi: "Code này có vi phạm security invariant nào của mình không?"Năm phút đó là khoản đầu tư tốt nhất bạn có thể làm.Minimal Security Baseline Cho Solo BuilderKhông ai expect bạn implement zero-trust architecture hay ISO 27001 từ ngày đầu. Nhưng đây là baseline tối thiểu mà chi phí implement thấp hơn rất nhiều so với chi phí bỏ qua:Trước khi viết dòng code đầu tiên (2 giờ):Xác định 4-5 security invariants cho domain của bạnSetup .gitignore đúng cách, không bao giờ commit .envChọn managed auth solution thay vì tự viếtKhi build data layer:Mọi query lấy data đều filter theo owner — đây là convention, không phải optionDùng ORM với parameterized query — không bao giờ string concatenation trong SQLThiết kế data model với tư duy "ai được phép xem table này?"Khi build API layer:Authentication + Authorization tách biệt và nhất quánValidate input ở layer nhận — không tin tưởng bất kỳ thứ gì từ clientRate limiting trên mọi endpoint public, đặc biệt auth endpointTrước khi go live với user thực:Chạy OWASP ZAP hoặc tương đương để scan một lầnReview tất cả environment variable — không có gì hardcodeCó kế hoạch "nếu bị breach, tôi làm gì trong 24 giờ đầu?"Câu Hỏi Đúng Không Phải Là "Khi Nào Làm Security"Câu hỏi sai: "Nên làm security ở giai đoạn nào?"Câu hỏi đúng: "Quyết định nào hôm nay sẽ không thể sửa lại sau mà không phải trả giá rất đắt?"Với technical debt thông thường — code xấu, thiếu test, architecture chưa tốt — câu trả lời thường là "ship trước, refactor sau." Và đó là quyết định hợp lý trong nhiều trường hợp.Với security debt — auth sai, authorization thiếu, secret bị lộ, data không được isolate — câu trả lời là khác. Vì những thứ này không chỉ làm bạn chậm. Chúng có thể kết thúc mọi thứ bạn đang xây dựng.Solo builder giỏi không phải là người làm security hoàn hảo từ đầu. Mà là người biết phân biệt được: thứ gì có thể sửa sau, và thứ gì không.Đó là tư duy của người build để tồn tại — không chỉ build để ship.
challenge-post-cover
#6
3
228
challenge-icon

Is Being Good at Coding Enough to Grow in the IT Industry?

user-avatar
Phan Trung Nghĩa
15/06/2026

Code Giỏi Thôi Là Đủ? Trong Kỷ Nguyên AI, Định Nghĩa Đó Đang Bị Viết Lại

Một sáng thứ Hai bình thường của năm 2026Bạn mở máy lên. Trước mặt là một task: viết API endpoint xử lý upload file, validate định dạng, lưu vào S3, trả về presigned URL.Năm 2020, task này mất của bạn nửa buổi sáng — tra docs, viết boilerplate, debug edge case.Năm 2025, bạn mở Claude Code, gõ một đoạn mô tả ngắn, nhận lại code hoàn chỉnh trong 40 giây. Review qua, chỉnh vài dòng business logic, done.Câu hỏi đặt ra không phải là "AI có thay thế developer không?" — câu đó đã được tranh luận quá nhiều và quá nhàm. Câu hỏi thực sự là:Khi phần "code" trong công việc của bạn ngày càng được AI hỗ trợ nhiều hơn, thứ gì còn lại mới thực sự là giá trị của bạn? "Code Giỏi" Từng Có Nghĩa Là GìHãy thành thật với nhau một chút.Trong suốt hai thập kỷ trước, "code giỏi" đồng nghĩa với một tập hợp kỹ năng rất cụ thể:Thuộc lòng syntax của ngôn ngữViết algorithm nhanh, sạch, ít bugDebug được những lỗi khó hiểuNhớ được API của các thư viện phổ biếnTối ưu performance theo bản năngNhững kỹ năng này có giá trị thật. Và chúng được thị trường trả giá tốt — vì chúng khan hiếm, vì không phải ai cũng bỏ công học được.Nhưng "khan hiếm" là từ khóa quan trọng ở đây.Giá trị của một kỹ năng gắn liền với mức độ khan hiếm của nó. Và trong năm 2025, khả năng viết code thuần túy — đặc biệt là code có tính chất boilerplate, lặp đi lặp lại, theo pattern — đang dần trở nên kém khan hiếm hơn. Không phải vì developer giỏi hơn. Mà vì AI đang làm được phần đó.AI Đang Làm Tốt Chính Xác Những GìĐể không rơi vào cực đoan — hoặc "AI thay thế tất cả" hoặc "AI chỉ là công cụ đơn giản" — hãy nhìn thẳng vào thực tế.Những gì AI làm tốt (và đang ngày càng tốt hơn):Viết code theo pattern đã biết. CRUD endpoint, form validation, database query cơ bản, unit test, boilerplate config — đây là địa phận AI thống trị. Nếu task của bạn có thể mô tả bằng một paragraph rõ ràng và có câu trả lời "đúng" tương đối xác định, AI làm được.Debug lỗi phổ biến. Stack trace rõ ràng? Error message có nghĩa? AI đọc và giải thích nhanh hơn hầu hết junior developer.Chuyển đổi format và refactor cơ học. Đổi từ callback sang async/await. Migrate từ class component sang hook. Format lại JSON. Viết regex. Những task mà trước đây mất hàng giờ vì nhàm chán và cần sự tỉ mỉ — AI làm trong giây lát.Tra cứu và tổng hợp tài liệu. Thay vì đọc 5 trang docs để hiểu một API, bạn hỏi AI và nhận lại đúng phần mình cần, kèm ví dụ.Và đây là con số đáng chú ý:Theo khảo sát của Stack Overflow Developer Survey 2024, hơn 76% developer đang sử dụng hoặc có kế hoạch sử dụng AI tools trong workflow. GitHub Copilot báo cáo developer viết code nhanh hơn 55% khi dùng tool của họ.55% nhanh hơn. Nghĩa là công việc mà trước đây bạn làm trong 2 giờ, giờ mất 1 giờ 20 phút. Thời gian còn lại bạn làm gì?Đây chính là câu hỏi quan trọng nhất.Vùng AI Chưa Chạm Tới — Và Có Lẽ Không Bao Giờ Chạm Tới Hoàn ToànĐây là phần nhiều người bỏ qua khi tranh luận về AI và developer.AI rất giỏi trả lời câu hỏi. Nhưng AI không tự đặt ra câu hỏi đúng.1. Hiểu Business Context để Đặt Vấn Đề ĐúngMột khách hàng đến gặp bạn và nói: "Tôi cần một cái form để người dùng submit yêu cầu."Developer bình thường sẽ hỏi: form cần những field gì, validate thế nào, lưu vào đâu.Developer giỏi sẽ hỏi: "Submit yêu cầu xong thì chuyện gì xảy ra? Ai review? Có SLA không? Người dùng cần track status không? Volume dự kiến bao nhiêu submission/ngày?"Và sau khi nghe câu trả lời, developer giỏi có thể nói: "Thực ra cái bạn cần không phải là một form. Bạn cần một mini workflow engine."AI không làm được điều này — không phải vì thiếu thông minh, mà vì AI không có skin in the game. AI không biết rằng cái form đó sẽ ảnh hưởng đến 500 nhân viên kế toán. AI không cảm nhận được sự căng thẳng trong giọng khách hàng khi nhắc đến deadline cuối quý.Đặt câu hỏi đúng — không phải trả lời đúng — là kỹ năng phân biệt người xây hệ thống với người thực thi task.2. Phán Đoán Trade-off Trong Bất ĐịnhMọi quyết định kỹ thuật thực sự đều là trade-off:Dùng microservice hay monolith cho startup 5 người?Cache aggressive để tăng tốc độ, hay chấp nhận stale data một phần?Viết abstraction layer đẹp, hay ship nhanh rồi refactor sau?Thuê thêm người hay dùng serverless để scale?Không có câu trả lời "đúng" tuyệt đối cho những câu hỏi này. Câu trả lời phụ thuộc vào: team size hiện tại, runway của công ty, technical debt có thể chịu được, ưu tiên của business tuần này.AI có thể liệt kê pros/cons của mỗi lựa chọn. Nhưng AI không thể chịu trách nhiệm cho quyết định. Và chính sự chịu trách nhiệm đó — khả năng nói "tôi chọn cái này, vì lý do này, và tôi đứng sau quyết định đó" — là thứ tạo ra trust trong team.3. Giao Tiếp Với Người Không Phải DeveloperMột trong những kỹ năng được underrate nhất trong ngành IT: giải thích kỹ thuật cho người không kỹ thuật.Không phải giải thích theo kiểu "à thực ra cái này đơn giản lắm..." rồi tiếp tục dùng jargon. Mà là thực sự dịch được vấn đề kỹ thuật sang ngôn ngữ của business: rủi ro, chi phí, thời gian, impact."Nếu chúng ta không refactor cái module này bây giờ, mỗi feature mới sẽ tốn thêm 30% thời gian develop. Trong 6 tháng tới với roadmap hiện tại, điều đó nghĩa là chúng ta chậm khoảng 3 tuần so với kế hoạch."Câu đó có giá trị hơn nhiều so với: "Technical debt đang tăng và codebase khó maintain."AI có thể giúp bạn soạn câu đó. Nhưng AI không biết roadmap 6 tháng tới của công ty bạn. Không biết sếp của bạn quan tâm đến metric nào nhất. Không biết rằng 3 tuần chậm là ngưỡng mà sếp sẽ bắt đầu lo lắng thật sự.4. Ownership — Thứ Không Thể OutsourceOwnership là gì?Ownership không phải là "tôi viết code cho feature này." Ownership là "feature này có chạy đúng không là trách nhiệm của tôi — từ lúc bắt đầu thiết kế đến lúc user không còn complain nữa."Developer có ownership sẽ:Hỏi lại requirement khi thấy ambiguous, không làm theo hiểu sai rồi đổ lỗi sauProactive monitor sau khi deploy, không chờ bị báo bugNghĩ đến edge case mà không ai yêu cầu phải nghĩKhi có vấn đề, đến với giải pháp thay vì chỉ đến với vấn đềĐây là thứ mà không AI nào làm thay được. Và đây cũng là thứ phân biệt rõ nhất những người được thăng tiến với những người không được.Vậy "Code Giỏi" Năm 2026 Có Nghĩa Là GìĐây là luận điểm cốt lõi của bài này.Định nghĩa của "code giỏi" không biến mất. Nó đang được nâng tầm.Trước đây: Code giỏi = viết được code chạy đúng, nhanh, ít bug.Bây giờ: Code giỏi = dùng AI nhân lên năng lực của mình để tạo ra impact lớn hơn nhiều lần.Đây là sự khác biệt:Developer thời cũDeveloper thời AITự viết mọi thứ từ đầu | Biết cái gì nên tự viết, cái gì để AI làmGiá trị = số dòng code | Giá trị = chất lượng quyết địnhNgại dùng tool vì "mất đi cảm giác coding" | Xem AI là force multiplierDeep expert trong một stack | T-shaped: deep + broadCode là đích đến | Code là phương tiệnNói cách khác: developer giỏi năm 2025 không phải là người code nhiều nhất. Mà là người tạo ra kết quả tốt nhất với nguồn lực ít nhất — và AI là một trong những nguồn lực đó.Ba Kỹ Năng Bạn Cần Đầu Tư Ngay Bây GiờNói lý thuyết đủ rồi. Cụ thể bạn cần làm gì?Kỹ năng 1: System Thinking — Tư Duy Hệ ThốngHọc cách nhìn vấn đề ở nhiều tầng cùng lúc:Tầng code: cái này implement thế nàoTầng system: cái này ảnh hưởng đến các component khác thế nàoTầng business: cái này giải quyết được vấn đề gì của người dùng cuốiDeveloper hay bị mắc kẹt ở tầng code. Để lên senior và xa hơn, bạn phải di chuyển được giữa cả ba tầng một cách tự nhiên.Cách luyện: Khi nhận một task, trước khi code, hãy tự hỏi: "Task này tồn tại vì business reason gì? Nếu tôi làm sai, điều tệ nhất có thể xảy ra là gì?"Kỹ năng 2: Communication — Không Phải Nói Hay, Mà Là Nói ĐúngHọc cách viết rõ ràng: ticket, PR description, comment trong code, email update cho stakeholder.Học cách đặt câu hỏi thay vì đưa ra giải pháp ngay. Câu hỏi tốt thường có giá trị hơn câu trả lời tốt.Học cách nói "không" — hoặc đúng hơn là "có, nhưng" — khi deadline không thực tế hoặc requirement mâu thuẫn nhau.Cách luyện: Viết. Mọi thứ. PR description đầy đủ thay vì "fix bug". Comment giải thích tại sao thay vì cái gì. Retrospective note sau mỗi sprint.Kỹ năng 3: Prompt Engineering + Critical Review — Cộng Sinh Với AIĐây là kỹ năng mới nhất nhưng đang trở thành yêu cầu bắt buộc.Biết cách prompt AI để ra output có ích. Không phải hỏi "viết cho tôi một cái API" mà là: "Tôi cần một REST endpoint với những constraints này, edge cases này, phải tương thích với codebase đang dùng pattern này..."Nhưng quan trọng hơn: biết review code AI tạo ra một cách phê phán. AI không sai hoàn toàn, nhưng AI hay:Bỏ sót edge case trong domain cụ thểDùng pattern cũ hoặc không phù hợp với contextViết code chạy được nhưng không maintainableTự tin quá mức vào giải pháp không tối ưuDeveloper giỏi dùng AI như một junior developer rất nhanh — cần review kỹ, cần hướng dẫn rõ, nhưng có thể delegate những task routine để tập trung vào việc quan trọng hơn.Một Cảnh Báo Quan TrọngCó một bẫy mà nhiều developer đang rơi vào khi tiếp cận AI: dùng AI để tránh né sự khó chịu của việc tư duy.Khi gặp vấn đề khó, reflex tự nhiên là hỏi AI ngay. AI trả lời. Bạn copy-paste. Done.Nhưng bằng cách đó, bạn đã bỏ lỡ đúng cái phần quan trọng nhất: quá trình vật lộn với vấn đề, hiểu tại sao nó khó, và xây dựng mental model để lần sau gặp vấn đề tương tự bạn tư duy được mà không cần công cụ.AI nên là công cụ để nhân lên năng lực sau khi bạn đã hiểu vấn đề — không phải công cụ để né tránh việc hiểu vấn đề.Nếu bạn không hiểu tại sao đoạn code AI viết ra lại đúng, bạn đang tích lũy nợ kiến thức. Và nợ đó sẽ đến hạn vào đúng lúc bạn không muốn nhất.Câu Hỏi Bạn Nên Tự Hỏi Mỗi TuầnKhông phải: "Tôi đã viết bao nhiêu dòng code tuần này?"Mà là: "Tuần này tôi đã ra được những quyết định nào? Tôi đã giải quyết được vấn đề gì mà nếu không có tôi thì sẽ không được giải quyết — hoặc giải quyết kém hơn?"Đó là thứ tạo ra giá trị thực sự. Và đó là thứ — cho dù AI có tiến bộ đến đâu — vẫn cần đến bạn.Code giỏi không còn là đích đến. Nó là ngưỡng cửa.Câu hỏi là: sau khi bước qua ngưỡng cửa đó, bạn mang theo gì?
challenge-post-cover
#5
1
450
user-avatar
Philipp Eiselt
15/04/2026

1 Hour Meeting Blockers (And why you shouldn't like them)

Let me disappoint you:Your meetings are not fixing your delivery problem.They're often making it worse.The biggest issue isn't the tools. It isn't the framework. It isn't even the team.It's the calendar.Instead of clarity, we get:1-hour discussions that needed 10 minutesCircular updates where everyone nods and nothing movesRooms full of people waiting for a decision that never comesBlockers are "raised." Concerns are "noted." Actions are "taken offline."You have Slack. You have Teams. You have email, shared docs, and approximately 14 other ways to communicate before anyone opens a calendar invite.The brainstorming, the context, the messy back-and-forth — that belongs there. Not in a room with 10 people on the clock. By the time you're in the meeting, everyone should already know the problem. The meeting exists for one thing only: the decision.That's it. Walk in prepared. Walk out with an answer.In fast-paced environments — manufacturing floors, large enterprise IT, high-stakes portfolios — I learned something brutally simple:👉 A good update is 3 sentences.What happenedWhat we're doing about itHow we prevent it next time  / What do we learn from itIf I need more detail, I pull the right person into a follow-up. Everyone else goes back to work.Because here's what nobody talks about enough:The people most hurt by bad meetings aren't the managers sitting in them.It's the developers. The consultants. The strategy leads. The junior team members who came in with a sharp idea, waited 55 minutes for their moment, and then watched the meeting end without a single decision being made.That's not just a time problem. That's a talent problem.You hired experienced people. You brought in consultants. You have junior developers who are closer to the actual code than anyone in that room. And then you trap them in a loop of alignment theater — pulling them away from the exact work they were hired to do, and the exact thinking they were hired to bring.Great meetings don't just save time. They signal respect for the people in the room.Modern IT has normalized:Endless alignment before any actionBrainstorming that should have been a Slack threadOwnership so shared it belongs to nobodyThe truth is uncomfortable:Meetings have become the work, instead of enabling the work.Come prepared. Decide fast. Let people go build things.Execution doesn't need more discussion. It needs clarity, a decision, and one person responsible for it.Everything else is just a very organized way of going nowhere.
0
871