Nội dung được dịch từ một bài viết nước ngoài – Tác giả ‘Santiago Valdarrama’ người xây dựng cấu trúc hệ thống Machine running( máy học) – đưa ra những lời khuyên dựa vào kinh nghiệm thực tế. Bài viết chia sẻ thái độ cần có và tip cho các kỹ sư thông qua chủ đề những bài học về phần mềm.
Hơn 10 năm tôi và anh ấy đã dùng chung một cái bàn phím. Đây là tất cả những điều tôi bị vấp phải.

Khác với anh ấy, tôi là nhà phát triển trẻ luôn khao khát học hỏi. Ngẫm lại, tôi chưa bao giờ trưởng thành hơn thế. Khoảng thời gian ở trường trước kia thật lãng phí khi nhìn về hiện tại. Tuy không thể tóm gọn hết 10 năm đã qua bằng vài dòng nhưng tôi sẽ thử một lần xem sao.
1. Nhanh còn hơn tốt
Hầu hết bạn chỉ cần có cách giải quyết “đủ tốt” để có được thời gian, tiền bạc và sự chú ý. Nhiều người hay lo lắng về những gì quá lâu hay quá nhiều. Họ cố gắng làm đúng ngay lần đầu nhưng đây rõ ràng là một sai lầm. Bạn nên tập trung liên tục vào việc trở thành người đầu tiên. Đây là cách tốt nhất có thể chứng minh rằng thời gian bạn bỏ ra là xứng đáng.
2. Xem xét lại nợ kỹ thuật(Technical debt)

Nhiều người ghét nợ kỹ thuật(technical debt), điều này thật ra không đúng. Họ chỉ không biết cách tận dụng nó như thế nào. Khi được dùng đúng cách, nợ kỹ thuật mang nghĩa bạn làm việc với những gì thực sự quan trọng và trì hoãn mọi vấn đề có thể đợi được. Điểm cần chú ý ở đây là sự cân bằng. Mặc dù quá nhiều là vấn đề nhưng không có nợ có nghĩa là bạn đang lãng phí thời gian của mình vào những việc không liên quan.
3. Không có câu hỏi nào ngu ngốc
Thật đau lòng khi mọi người quay lưng lại với một vấn đề có thể trả lời chỉ bằng một câu hỏi. Hãy luôn đặt câu hỏi! Không quan trọng ai sẽ nhận được nhiều điểm chỉ vì làm việc chăm chỉ hơn. Sẽ rất tuyệt khi bạn làm việc một cách thông minh và nhanh hơn. Hãy nhớ điều này. Không có câu hỏi nào ngu ngốc.
“Người đặt câu hỏi là kẻ ngốc trong 5 phút. Nhưng nếu không ai đặt câu hỏi thì mãi mãi chỉ là kẻ ngốc.” – Tục ngữ Trung Quốc

4. Năng lực giao tiếp giúp nâng cao kỹ thuật
Chúng ta thật may mắn khi có khả năng trình bày suy nghĩ của mình một cách rõ ràng. Nhưng nhiều người thậm chí chưa từng quan tâm đến điều này. Thực tế là bạn không thể leo đến nơi cao nhất chỉ với kỹ năng. Bạn nên dành nhiều thời gian nhất có thể để học cách giao tiếp với người khác. Sau đó nhân đôi lên.
5. Chỉ vì bạn có thể làm được điều đó không có nghĩa bạn phải làm
Để tập trung vào những việc quan trọng nhất bạn cần phân công việc càng nhiều càng tốt cho người khác. Hãy học cách chọn thứ tự ưu tiên và phân công cho người khác.
Những kỹ năng có giá trị mang lại thay đổi dựa theo năng lực của bạn
- Tìm công việc quan trọng và có tác động cao
- Nhận thức thời gian của bản thân đang bị lãng phí
- Học cách phân chia công việc hiệu quả
6. Chia sẻ mọi thứ
Chỉ vì bạn biết điều gì đó cũng không khiến bạn trở thành nhân tài chủ chốt. Thực tế, trong hầu hết các trường hợp, điều ngược lại mới đúng. Mọi người muốn ở bên ai đó giúp họ phát triển. Hãy chia sẻ tất cả kiến thức mà các bạn có. Nỗ lực để những người xung quanh thành công là cách nhanh nhất để trở thành thành viên chủ chốt trong team của bạn.
7. Chịu trách nhiệm về công việc của bạn
Bất cứ khi nào có vấn đề phát sinh, bạn nên tự hỏi bản thân câu hỏi sau. “Tôi có thể thay đổi điều gì tiếp theo?” Dù là việc gì nữa cũng luôn cần sự tìm hiểu từ nội tâm. Thật ra ai cũng dễ dàng hợp lý hóa bản thân. Nếu bạn luôn tìm cớ khi làm sai chuyện gì đó và đổ lỗi cho người khác bạn sẽ chỉ là nhân tài như thế trong suốt cuộc đời mình.

8. Code tốt nhất là không viết gì cả
Bạn nên có trách nhiệm trong việc viết code. Tất cả code mà bạn viết sẽ giống như một cái tem luôn theo bạn bất kể bao lâu và bạn phải có trách nhiệm về nó. Bạn nên học cách giải quyết vấn đề với càng ít code càng tốt. Phương pháp không code(No-code) tuy được đánh giá thấp nhưng lại có tiềm năng vô hạn.
9. Nếu bạn không test cuối cùng vấn đề sẽ xảy ra
Bạn hãy bỏ suy nghĩ lười nhác rằng “Nếu có vấn đề ở code dù bản thân có làm gì đi nữa cũng sẽ trở thành vấn đề thôi”. Nếu hôm nay bạn không bỏ thời gian viết test case thì ngày mai các bạn có thể sẽ trả giá lớn hơn. Tôi đã nhận được bài học sâu sắc về vấn đề này. Không có automated tests, vấn đề sẽ xảy ra.
10. Chấp nhận thất bại
Không có thất bại bạn sẽ không học hỏi được. Nếu bạn chưa từng thất bại đó là vì bạn chưa gặp phải những công việc mang tính thử thách. Thất bại, rút kinh nghiệm, thử lại. Đặt mục tiêu của bạn cao hơn và đừng sợ hãi. Hãy luôn nhớ đôi khi suy nghĩ rằng bản thân còn thiếu sót lại là chuyện tốt! Điều này có nghĩa là bạn đang đánh đổi bản thân và trưởng thành hơn. Người chỉ làm những điều dễ dàng ngoài cốt lõi sẽ không có cơ hội để nghi ngờ bản thân. Khác với câu” Tôi thích thất bại” hãy khát vọng thành công. Nhưng nên nhớ một sự thật rằng bạn chỉ thành công sau khi vấp ngã hàng trăm lần.

Tổng kết
Ngay cả sau rất nhiều năm, tôi vẫn không ngừng cố gắng đưa những điều cơ bản nhưng thiết yếu vào thực tế. Nhắc nhở bản thân và nhìn lại những gì đã làm, trò chuyện với người khác, thực hiện những thay đổi cần thiết, chấp nhận và bỏ qua.
Và những hướng dẫn dưới đây đã giúp tôi rất nhiều trong hành trang thành công của mình
- Tập trung vào việc là người đầu tiên. Điều này tạo ra nhiều cơ hội nhiều hơn và chứng tỏ bạn đã đúng.
- Sử dụng technical debt hợp lý cũng hữu ích cho bạn.
- Ở bên những người sẵn sàng cho và nhận sự giúp đỡ. Hãy đặt câu hỏi không ngừng.
- Năng lực giao tiếp sẽ nâng đỡ cho kỹ thuật của bạn.
- Hãy tập trung vào những gì quan trọng và có tác động. Phần còn lại có thể được giao cho những người khác.
- Chia sẻ tất cả những kiến thức bạn có.
- Không né tránh vấn đề và bản thân chịu trách nhiệm với việc mình làm.
- Viết code với trách nhiệm. Bạn viết càng ít code càng tốt.
- Test tự động hoá là cơ bản. Đừng bao giờ bỏ bê nó.
- Đặt ra mục tiêu cao hơn và đừng bằng lòng với điều này. Thất bại, học hỏi, phát triển, thử lại.
The translated article above belongs to Santiago Valdarrama author and Metacoders commits not to use this article for any commercial purposes
The topic: Lessons learned from the smartest Software Engineer I’ve met