Tình huống mở đầu
Năm ngoái, team BKGlobal có hai developer mới join cùng thời điểm. Nam - 4 năm kinh nghiệm. Linh - 2 năm kinh nghiệm.
Sau 3 tháng, chúng tôi nhận ra: Linh đang behave như senior, dù ít kinh nghiệm hơn. Nam vẫn đang behave như junior, dù nhiều năm hơn.
Sự khác biệt không phải là kỹ thuật - cả hai đều code tốt. Sự khác biệt là ở cách họ tiếp cận vấn đề.
Bối cảnh
Chúng tôi đã observe và mentor nhiều lớp developer qua các năm. Và có một pattern rất rõ ràng về điều gì tạo nên "senior mindset" - trước khi title xuất hiện.
Đây là 5 dấu hiệu chúng tôi thấy ở các developer tiến nhanh.
Dấu hiệu 1: Hỏi "tại sao" trước khi hỏi "làm thế nào"
Junior: "Tôi cần implement feature X. Làm thế nào?"
Senior: "Tại sao chúng ta cần feature X? Nó giải quyết vấn đề gì? Có cách nào đơn giản hơn không?"
Linh hay đặt câu hỏi trước khi code: "Mục tiêu business của feature này là gì? Ai dùng nó? Frequency?" Những câu hỏi này thường reveal ra rằng scope ban đầu cần điều chỉnh.
Nam nhận task và code ngay - thường phải rework sau khi clarify requirements.
Senior developer hiểu rằng build sai thứ còn tệ hơn build không có gì.
Dấu hiệu 2: Ownership - không chỉ làm task, mà chịu trách nhiệm kết quả
Junior: "Tôi đã làm phần của tôi xong. Bug này không phải do code tôi."
Senior: "Bug này ảnh hưởng user experience. Dù không phải code tôi viết, tôi cần hiểu và giúp fix."
Ownership không có nghĩa là làm tất cả mọi thứ. Nó có nghĩa là: khi có vấn đề, bạn step up thay vì step back.
Chúng tôi nhớ một incident: production bug ảnh hưởng payment flow. Linh không phải là người viết phần đó, nhưng cô ấy chủ động vào debug, tìm root cause, và document lại để team hiểu.
Dấu hiệu 3: Communicate không chắc chắn một cách rõ ràng
Junior: (Không nói gì khi không chắc, hoặc nói "không sao" khi thực ra không chắc)
Senior: "Tôi chưa chắc về cái này. Estimate của tôi là 3 ngày, nhưng có một phần tôi cần research thêm. Tôi sẽ update sau khi clear hơn."
Đây là một trong những thứ khó nhất để learn vì nó đòi hỏi intellectual honesty và psychological safety.
Developer biết nói "tôi không biết" và "tôi cần thêm thời gian để research" thường được trust hơn những người luôn tự tin nhưng thường sai.
Dấu hiệu 4: Tư duy về maintainability, không chỉ functionality
Junior: "Code chạy được là xong."
Senior: "Code chạy được. Nhưng 6 tháng sau, người khác có thể hiểu và sửa được không? Tôi có thể test được không? Khi có lỗi, tôi có thể debug không?"
Một câu hỏi chúng tôi thích hỏi trong code review: "Tưởng tượng bạn bị xe bus tông (God forbid), người khác có thể maintain code này không?"
Senior developer viết code cho người đọc tiếp theo, không chỉ cho compiler.
Dấu hiệu 5: Chủ động raise issues sớm, không đợi đến khi muộn
Junior: Im lặng cho đến khi deadline - sau đó nói "tôi gặp vấn đề"
Senior: "Tôi thấy một risk trong approach này. Nếu X xảy ra, chúng ta sẽ cần thêm 3 ngày. Tôi muốn raise sớm để team có thể plan."
Raise issues sớm là multiplier - cùng một vấn đề, raise 2 tuần trước có thể được giải quyết dễ dàng, raise 1 ngày trước deadline thì catastrophic.
Bài học rút ra
Số năm kinh nghiệm là lagging indicator - nó theo sau, không dẫn đầu. Những thứ thực sự matters:
- Curiosity về "tại sao" - không chỉ "làm thế nào"
- Ownership của outcomes - không chỉ tasks
- Honest communication về uncertainty
- Long-term thinking về code quality
- Proactive communication về risks
Và điều quan trọng nhất: Những thứ này có thể practice ngay từ ngày đầu, không cần đợi 5 năm.
Takeaway
Nếu bạn đang là junior hoặc mid-level và muốn accelerate growth:
Chọn một trong 5 thứ trên và focus practice nó trong 1 tháng. Không cần cả 5 cùng lúc. Consistency beats intensity.
Và nếu bạn đang mentor junior developer - hãy share bài này với họ, và hỏi họ thấy bản thân đang ở đâu trong 5 dấu hiệu này.
Chúng tôi muốn nghe góc nhìn của các bạn - đặc biệt nếu bạn đang trong hành trình junior → senior. Comment để chia sẻ nhé.
BKGlobal Tech Team