WEBSITE ĐANG PHÁT TRIỂN

20 năm code - 5 thứ tôi ước ai đó nói từ năm 25 tuổi

Năm 2006, tôi 25 tuổi, vừa bắt đầu công việc lập trình thứ 2. Tôi tự tin kinh khủng. Tôi tìm hiểu Stack Overflow, viết code nhanh, debug bằng cách thêm console.log() vào mọi nơi, và chắc chắn rằng 5 năm nữa tôi sẽ là senior engineer nào. Tôi còn nhớ buổi họp đầu tiên - boss nói "em cần học C#.NET tốt" - tôi chỉ nghe một nửa, chỉ nghĩ "được, tôi sẽ master nó trong 3 tháng."

Năm ấy, tôi không biết rằng những sai lầm tôi làm sẽ kéo dài hàng năm.

20 năm sau, tôi vẫn còn code. Tôi vẫn yêu cái việc này. Nhưng con đường mà tôi đi, những điều tôi học được - rất khác với cái gì tôi tưởng tượng ở tuổi 25. Bài viết này không phải lý thuyết hay best practices được viết ở đâu đó. Đó là 5 bài học từ sai lầm thực tế, từ những khoảnh khắc tôi nhận ra mình sai, và những quyết định mà tôi thực sự tiếc nuối.

Bài học 1: Chuyên sâu trước, rộng ra sau

Năm thứ 3 nghề, tôi bị một căn bệnh rất phổ biến: chứng rộn rãi công nghệ.

Thứ Hai, tôi say sưa với JavaScript. Thứ Ba, tôi muốn học Go. Thứ Tư, tôi lại bảo bạn rằng Rust là tương lai. Tôi theo dõi HackerNews, DEV.to, Medium - tất cả mọi cái. Kết quả? Tôi không giỏi cái gì hết. Tôi chỉ biết chút ít về mọi cái.

Bước ngoặt đến khi tôi 30 tuổi. Tôi gặp một architect cấp cao - người này có thể làm mọi thứ, nhưng điều đặc biệt là anh ấy sâu đến mức khủng khiếp về 2-3 công nghệ core. Anh ấy có thể tuần tra code của người khác bằng cách nhìn vào architecture, và lập tức nói "đó là kỳ vọng của một coder 2 năm kinh nghiệm, chứ không phải senior." Tôi hỏi anh ấy bí quyết là gì. Anh ấy nói một câu mà tôi không quên: "Deep work trước. Khi bạn thực sự giỏi một thứ, bạn sẽ hiểu rõ cách học những thứ khác."

Tôi bắt đầu quyết định: chuyên sâu .NET và SQL tối thiểu 5 năm liên tục. Không có side project tuyệt vời, không "thử AI" hay "học Rust mấy buổi tối". Chỉ đi sâu.

Kết quả? Sau 5 năm, tôi có thể thiết kế hệ thống e-commerce ở mức độ mà hầu hết senior không thể. Tôi hiểu bộ nhớ, threading, SQL optimization - những cái mà junior hoàn toàn không biết. Và kỳ lạ thay, khi tôi thực sự bắt đầu học cái mới (Go, Node.js), nó lại đơn giản hơn rất nhiều vì tôi đã có mental model rõ ràng.

Các bạn trẻ, đừng làm sai lầm tôi. Chọn một cái, đi sâu tối thiểu 3-5 năm. Rộng ra sau. Khi bạn sâu đó, rộng ra sẽ nhanh hơn bạn tưởng.

Bài học 2: Kỹ năng giao tiếp quan trọng hơn kỹ năng code

Tôi từng tự hào về code. Code của tôi nhanh, design tốt, ít bug. Tôi tưởng rằng đó là tất cả những gì cần.

Rồi tôi bị bypass promotion lần thứ 2. Lần thứ nhất, tôi không thành senior vì "chưa sẵn sàng." Lần thứ hai, tôi bị một senior khác vượt qua, mặc dù code của tôi tốt hơn.

Tôi hỏi manager: "Tại sao?" Manager trả lời một câu tôi còn nhớ rõ: "Vì người ấy có thể giải thích ý tưởng của anh ta sao cho cả team hiểu, còn anh có thể chỉ tự chơi code."

Từ đó, tôi bắt đầu thay đổi. Tôi học cách viết tài liệu thiết kế (design docs), cách trình bày ý tưởng trong meeting, cách giải thích một quyết định technical sao cho product team hiểu được. Tôi còn học cách nghe, không phải chỉ nói.

Thực tế, 10 năm sau, tôi nhận ra rằng những promotion, những dự án lớn, những cơ hội thực sự tốt - không phải đến từ việc tôi code tốt. Nó đến từ việc tôi có thể communicate tốt. Vì sao? Vì ở cấp cao hơn, code không quan trọng bằng việc bạn có thể làm cho người khác hiểu tại sao một quyết định lại đúng.

Và, tôi học thêm một điều: kỹ năng giao tiếp không decay. Code knowledge của tôi 5 năm trước đã lỗi thời. Nhưng kỹ năng giao tiếp? Nó vẫn cứ hữu ích mãi.

Bài học 3: Personal branding không phải marketing

Tôi từng có một quan niệm sai lầm: personal branding là PR, là "tự quảng cáo." Tôi từng thấy mình như là một developer thực thụ nên không cần "bán hàng" hay "khoe khoang."

Một hôm, tôi nhận được message từ một anh bạn cũ 10 năm không gặp. Anh ấy nói: "Tôi thấy bạn chia sẻ bài viết trên blog của mình về search optimization. Tôi cũng đang xây dựng search product và muốn hỏi."

Đó là lúc tôi hiểu: personal branding là track record được nhìn thấy.

Personal branding của tôi không phải tôi đi nói "tôi giỏi .NET." Nó là tôi giải quyết những bài toán thực tế, sau đó chia sẻ cách mình làm. Khi tôi viết về cách optimize Episerver Find, hay cách thiết kế database cho e-commerce, những người thực sự cần nó sẽ tìm thấy tôi.

Và kỳ lạ thay, khi tôi bắt đầu viết bài, từng tham gia cộng đồng, chia sẻ công khai những cái tôi học được - số offer tôi nhận được tăng gấp đôi. Không phải vì tôi tuyên bố tôi giỏi, mà vì tôi chứng minh nó qua work mà tôi chia sẻ.

Các bạn trẻ, đừng chờ tới "đủ giỏi mới chia sẻ." Chia sẻ sớm. Chia sẻ những điều bạn học được. Learn in public. Đó là investment tốt nhất cho career.

Bài học 4: Chuyên gia hay nhân tài - chọn đúng lúc

Năm 35 tuổi, tôi phải đưa ra quyết định lớn: tiếp tục đi sâu technical (architect, principal engineer), hay chuyển sang management (engineering manager, tech lead)?

Tôi nhìn lại những "engineer siêu sao" tôi biết. Nhiều người chuyển sang management vì "đó là cách duy nhất để tăng lương" hoặc "muốn có quyền lực hơn." Rồi 3-5 năm sau, họ hối tiếc. Vì sao? Vì họ không thích manage người.

Tôi chọn đi deep technical. Tôi yêu thích việc giải quyết những bài toán phức tạp, thiết kế hệ thống ở scale lớn, mentor engineer thông qua code review và architecture guidance. Tôi không muốn quản lý một đội 8 người, đảo lộn những vấn đề performance hay conflict.

Điều này đưa đến bài học: chọn đường đi dựa trên cái bạn yêu thích làm mỗi ngày, không phải vì tiền hay quyền lực. Nếu bạn yêu code, hãy ở lại deep technical. Nếu bạn yêu mentoring và team building, hãy đi management. Nhưng đừng chọn vì lý do sai.

Và một điều tôi học được muộn: technical skills decay nhanh, nhưng reputation và relationship thì không. Tôi còn nhớ từng engineer tôi giúp đỡ 10 năm trước. Họ bây giờ ở position cao hơn tôi. Có họ ở đó, tôi có network và credibility. Nếu tôi quên mất người, chỉ focus vào code, tôi sẽ bị isolated.

Bài học 5: Kiên trì tại một nơi hoặc biết khi nào rời đi

Lần duy nhất trong 20 năm tôi đã "bị bypass" thực sự, tôi đã ở tại công ty gần 6 năm mà không bước tiến. Công ty tốt, người tốt, nhưng tôi không còn học được cái gì.

Tôi từng có niềm tin sai lầm: "Loyal với công ty, công ty sẽ loyal với tôi." Sự thật? Công ty care về business. Tôi cần care về career của mình.

Sau đó, tôi học thêm bài học ngược lại: nhiều developer quá nhanh thay đổi công ty. Họ ở chỗ này 1-2 năm, rồi hop sang chỗ khác, rồi lại đi. Kết quả? Họ không bao giờ sâu được ở cái gì. Họ kiếm tiền cao hơn, nhưng không có impact.

Deep work cần time. Để thực sự gây impact, thiết kế một hệ thống bền vững, mentoring một team tốt - bạn cần ở lại ít nhất 3-5 năm. Nếu ít hơn, bạn chỉ là "đi qua."

Quyết định nên ở hay rời đi không phải quyết định dễ. Nhưng đây là dấu hiệu tôi học được:

  • Nên ở lại: Bạn còn học được cái mới, team còn thách thức bạn, career progression còn rõ ràng.
  • Nên rời đi: Bạn đã 2+ năm mà không feedback là ích gì, công ty không thể promote, hoặc bạn không còn care về product.

Những lời cuối - cho các bạn trẻ ở tuổi 25

Nếu bạn 25 tuổi đang đọc bài này, tôi muốn nói một cái gì đó: Bạn có thời gian. Đó là tài sản quý nhất của bạn.

Những sai lầm tôi mắc phải không phải vì tôi ngu. Nó là vì tôi không biết rằng career construction là một kỹ năng, không phải ngẫu nhiên. Tôi tốn 5 năm để học cái mà tôi có thể biết lúc 25.

Bây giờ đây, nếu tôi có thể nói với bản thân 20 năm trước, tôi sẽ nói:

  1. Chuyên sâu một lĩnh vực. Không phải mọi ngôn ngữ.
  2. Học cách communicate. Code chỉ là 50% của job.
  3. Chia sẻ công khai. Nó là investment, không phải quảng cáo.
  4. Chọn đường đi dựa trên tình yêu, không phải lương. Long-term, nó sẽ pay off hơn.
  5. Balance giữa consistency và flexibility. Ở lại đủ lâu để deep, nhưng rời đi khi bạn không còn grow.

Các bạn, 20 năm là khoảng thời gian dài để học. Tôi chắc chắn sẽ còn sai lầm nữa. Nhưng tôi cũng biết rằng, những sai lầm ngày hôm nay, nếu bạn sẵn sàng học từ nó, sẽ trở thành advantage ngày mai.

Câu hỏi cho các bạn: Cái gì tôi nên nói lại từ bài viết này? Bạn có sai lầm nào ở career mà bạn muốn chia sẻ? Tôi rất muốn nghe.


/Son Do - believe in basic

#1percentbetter #careerdevelopment #softwaredeveloper #20years #lập-trình-viên #bàihọc #engineering #mentoring #careeradvice #personaldevelopment


Bài viết liên quan

Xem thêm
Phát triển bản thân cho Developer

Roadmap developer 2026 - nên học gì trước trong thời đại AI?

2026 không cần học tất cả - cần học đúng thứ. Foundation vẫn là nền tảng không thể bỏ. AI tools là multiplier, không phải replacement. Bài này là góc nhìn thực tế từ team BKGlobal về prioritization, không phải list đủ mọi thứ.

Phát triển bản thân cho Developer

Junior → Senior: không phải về số năm kinh nghiệm

Nhiều developer 5-6 năm vẫn không phải senior. Một số developer 2-3 năm đã có senior mindset. Sự khác biệt không phải là thời gian - mà là những thói quen tư duy và cách tiếp cận vấn đề.