Nhìn lại 20 năm
Hồi mới ra trường, tôi làm việc với một senior developer hơn tôi 15 tuổi. Ông ấy code chậm hơn tôi, không biết nhiều framework bằng tôi, nhưng mỗi lần ông giải thích vấn đề thì tôi ngồi nghe mà "ồ" liên tục.
Lúc đó tôi không hiểu tại sao. Bây giờ tôi hiểu: ông ấy có cái mà tôi không có - mental models về hệ thống phức tạp, được xây dựng qua 15 năm thực chiến.
Đó là thứ không học được từ tutorial. Không có shortcut.
Nhưng có những thứ khác - những bài học mà nếu ai đó nói với tôi sớm hơn, tôi đã tiến nhanh hơn và đỡ khổ hơn.
Bài học 1: Công nghệ thay đổi, first principles thì không
Năm 2005 tôi học VB6. Năm 2008 chuyển sang .NET Framework. Năm 2015 là .NET Core. Năm 2020 là container, cloud. Năm 2025 là AI.
Mỗi lần có trend mới, tôi thấy junior developer vội vàng học framework mới nhất, bỏ qua cái cũ chưa master.
Nhưng nhìn lại, những thứ tôi học một lần và dùng mãi là: algorithms và data structures, database design principles, distributed systems concepts, HTTP protocol, security fundamentals.
Những thứ này không "expire". Một developer hiểu sâu về concurrency sẽ handle threading trong bất kỳ language/framework nào. Một developer hiểu database indexing sẽ optimize query trong bất kỳ database nào.
Lời khuyên của tôi cho junior: Học ít nhất một thing thật sâu trước khi nhảy sang cái mới. "Breadth first" ở năm đầu là ổn - nhưng phải có ít nhất một area bạn deep.
Bài học 2: Communication skill quan trọng ngang coding skill
Năm 2010, tôi là developer giỏi nhất team (tôi tự nghĩ vậy :D). Nhưng tôi liên tục bị bỏ qua trong các promotion cycle. Sếp tôi thăng chức một người khác - người code không bằng tôi nhưng luôn biết cách trình bày vấn đề rõ ràng, viết email súc tích, và update progress tốt.
Tôi tức. Rồi dần dần tôi hiểu.
Trong công việc thực tế, 50% giá trị của bạn là khả năng giải quyết vấn đề kỹ thuật. 50% còn lại là khả năng truyền đạt vấn đề đó cho người khác hiểu.
Một developer giỏi nhưng không ai hiểu anh ta đang làm gì - thì đóng góp của anh ta bị giới hạn bởi khả năng communication, không phải technical skill.
Từ đó tôi bắt đầu đầu tư vào: viết technical doc rõ ràng, speak up trong meeting, và quan trọng nhất - học cách giải thích technical problem cho người không technical.
Bài học 3: Build things that exist outside your current job
Năm 2015, công ty tôi đang làm cho bị acquired và toàn bộ team bị restructure. Tôi phải tìm việc mới lần đầu sau 5 năm.
Vấn đề: Tôi có 5 năm kinh nghiệm Episerver - một platform rất specialized. Ngoài Episerver, CV của tôi trống rỗng. Không có side project, không có open source contribution, không có blog, không có track record gì visible.
Tìm việc mất 3 tháng - lâu hơn tôi tưởng rất nhiều.
Bài học đó dạy tôi: Đừng để tất cả "reputation" của bạn nằm trong công ty hiện tại.
Không cần side project hoành tráng. Nhưng hãy có gì đó visible:
- Blog viết về những gì bạn học (dù ngắn)
- GitHub với code bạn thực sự viết
- Tham gia community, trả lời câu hỏi Stack Overflow
- Speak tại local meetup
Khi bạn cần (và sẽ có lúc cần), đây là những thứ đi theo bạn ra ngoài cổng công ty.
Bài học 4: Senior không nghĩa là biết nhiều hơn - mà là sai ít hơn
Năm 25 tuổi tôi nghĩ senior developer là người biết mọi thứ. Khi gặp vấn đề là biết ngay câu trả lời.
20 năm sau, tôi biết rằng senior developer là người:
- Biết câu hỏi nào cần hỏi trước khi bắt đầu
- Biết cái bẫy nào cần tránh - vì đã từng rơi vào
- Biết khi nào nên dừng và research thêm thay vì tiếp tục với assumption sai
Cái khác biệt lớn nhất giữa junior và senior không phải speed hay breadth of knowledge. Đó là pattern recognition - senior đã thấy đủ nhiều vấn đề để nhận ra "cái này trông giống cái kia từng gặp năm ngoái".
Và pattern recognition chỉ đến từ một thứ: đủ nhiều lần làm sai và phân tích tại sao sai.
Bài học 5: Chăm sóc bản thân là investment, không phải luxury
Năm 2018 tôi bị burnout lần đầu. Dự án lớn, deadline liên tục, weekends cũng code. Trong 6 tháng tôi làm 60-70 giờ/tuần.
Kết quả: Tôi deliver dự án. Nhưng 2 tháng sau đó tôi không thể productive. Tôi ngồi vào máy tính không muốn làm gì. Mọi quyết định đều khó khăn. Tôi mắc lỗi cơ bản mà trước đây không bao giờ mắc.
Recovery mất 3-4 tháng.
6 tháng rushed work → 3 tháng không productive. Net productivity: âm.
Bài học: Sustainable pace không phải yếu đuối - đó là professional responsibility. Bạn không thể code tốt khi exhausted. Bạn không thể think clearly khi sleep-deprived. Những developer cứng nhất tôi biết đều có discipline về sleep, exercise, và time off.
Bước ngoặt
Nhìn lại, cái turning point thực sự trong career của tôi không phải khi tôi học được công nghệ mới hay nhận được promotion.
Đó là lúc tôi nhận ra rằng career là marathon, không phải sprint. Người chạy marathon nhanh nhất không phải người chạy nhanh nhất ngay từ đầu - mà là người có pace ổn định, biết khi nào cần push, khi nào cần conserve energy.
Gửi các bạn trẻ
Nếu bạn đang ở giai đoạn đầu sự nghiệp, đây là 5 điều tôi muốn nói:
- Học sâu một thứ trước khi nhảy sang thứ khác
- Communication skill đầu tư song song với technical skill
- Build visibility outside your current job - dù nhỏ
- Sai là bình thường - quan trọng là phân tích tại sao sai
- Sustainable pace > burnout và recovery cycle
Và một điều nữa không trong list: Tìm mentor. Không cần mentor "nổi tiếng". Chỉ cần một người đi trước, sẵn sàng chia sẻ thực tế. Tôi đã tiết kiệm được rất nhiều năm nhờ những người như vậy.
Bạn nghĩ sao?
Nếu bạn cũng đã có nhiều năm trong nghề - bài học lớn nhất của bạn là gì? Và nếu bạn mới bắt đầu - điều bạn muốn biết nhất là gì? Chia sẻ để chúng ta học từ nhau nhé 👇
/Son Do - believe in basic
#1percentbetter #CareerGrowth #SoftwareEngineering #DeveloperLife #20years