Lười + tỏ ra ngu ngốc là bản năng của Developer giỏi
Cần cù chăm chỉ và tỏ ra thông minh chưa hẳn là chìa khóa để thành công. Hay ít nhất, nó chưa phải là chìa khóa cho cánh cửa thành công của 1 developer. Cuối tuần rồi, tôi gặp một người anh học cùng trường. Dù cần cù tỉ mẩn từ 7 giờ sáng đến 7 giờ tối mỗi ngày, 3 năm làm việc miệt mài, nhưng ...
Cần cù chăm chỉ và tỏ ra thông minh chưa hẳn là chìa khóa để thành công. Hay ít nhất, nó chưa phải là chìa khóa cho cánh cửa thành công của 1 developer.
Cuối tuần rồi, tôi gặp một người anh học cùng trường. Dù cần cù tỉ mẩn từ 7 giờ sáng đến 7 giờ tối mỗi ngày, 3 năm làm việc miệt mài, nhưng lương anh cũng chỉ ngang tôi.
Ngẫm nghĩ lại về những bậc tiền bối mà tôi biết, tôi thấy có lẽ ‘Lười + Tỏ ra ngu ngốc’ mới là bản năng của Developer giỏi.
Xem việc làm Developer chất trên ITviec
Bác sĩ cần tận tay chẩn đoán bệnh cho từng bệnh nhân. Giáo sư cần giảng 1 bài giảng qua nhiều thế hệ. Kiến trúc sư cần vẽ từng nét cho từng thiết kế. Marketer cần pitch hết hợp đồng này đến hợp đồng khác. Thợ cắt tóc cần tự tay cắt tóc hàng ngày… Danh sách vẫn còn dài, nhưng đã đủ nhìn thấy bức tranh toàn cảnh: thế giới này đầy những người phải lặp lại công việc của họ hàng ngày!
Còn developer thì sao?
Khi cần thao tác cùng 1 thứ trong 1 dòng, dev cố gắng tự động hóa thành quy trình. Khi viết code sử dụng cho nhiều chương trình khác nhau, dev bắt đầu xây dựng 1 thư viện. Khi bắt đầu 1 project với bước đầu giống nhau, dev quay lại tìm kiếm hướng đi trong các lối mòn đã đi qua và tìm cách tối ưu hóa nó.
Developer sống là để loại bỏ những sự lặp lại nhàm chán.
Khoa – 1 Developer đầy đam mê với code – chia sẻ với tôi rằng:
Vậy thì… chăm chỉ làm việc có phải là tốt?
Tôi nghĩ rằng nó có khi còn gây ảnh hưởng tiêu cực lên hiệu suất làm việc, vì nó làm mọi người quên đi khái niệm “tối ưu hóa.”
“Ồ, việc này có thể làm bằng tay 10 phút là xong.” (Nhưng nhớ rằng thời gian thực để hoàn thành những thứ bạn estimate thường là gấp đôi.) Cứ như vậy, những lần tiếp theo, mọi người lại thao tác bằng tay.
Quan trọng hơn, sự chăm chỉ khiến bạn trở nên ngu ngốc. Khoảng thời gian làm việc mệt mỏi dễ dẫn bạn đến việc ra quyết định sai lầm. Và, đưa ra quá nhiều quyết định trong 1 ngày cũng dễ dàng khiến bạn ra quyết định sai lầm.
Có 1 anh bạn từng hỏi tôi: “Do lười biếng nên mọi người chọn trở thành developer, hay chính vì làm developer mà mọi người trở nên lười biếng?”
Tôi nghĩ vế thứ 2 đúng hơn. Chính sự lười biếng thúc đẩy developer tìm cách giảm thiểu thời gian viết code (đặc biệt là các code lặp lại).
Khi gặp nhiều dự án giống nhau, 1 developer sẽ tạo tool để bootstrap cả development process. Ví dụ 1 người bạn của tôi đã tạo DRM layer hoạt động với kho dữ liệu biểu mẫu thiết kế của cả công ty anh.
Nhiều developer còn sử dụng một số form của code generation. Có nghĩa là 50+ bug cùng 1 loại có thể sửa bằng cách sửa duy nhất 1 lần generator tool đó.
Một developer lười có thể mất thêm vài tiếng để cho ra sản phẩm, nhưng sẽ tiết kiệm được hàng tháng sau đó cho việc bảo trì sản phẩm.
‘Lười biếng’ đã tự chứng minh rằng nó là động lực to lớn đằng sau các phát minh khoa học kỹ thuật ngày nay. Ví dụ như sử dụng xe đẩy dễ dàng hơn vận chuyển mọi thứ bằng tay. Đi thuyền nhanh hơn bơi. Đi xe đạp mệt quá, thôi phát minh ra xe máy đi cho khỏe. Chạy xe máy cũng dính nhiều khói bụi đường, chuyển sang đi ô tô cho không khí trong lành… Và nhiều ví dụ khác nữa.
An – Ruby Developer của ITviec, đồng nghiệp của tôi – không đồng ý với những suy luận trên:
Trong khi đó, Cẩm – Senior Ruby Developer của ITviec, một đồng nghiệp khác của tôi – nói rằng:
Một điểm khác, cũng là điểm mà ít người đồng tình với tôi nhất, chính là: ‘tỏ ra ngu ngốc’ làm nên 1 developer giỏi.
Nếu thông minh, bạn sẽ nghĩ mình thông minh, và rồi…
1) Bạn ngừng học hỏi. Rất khó để bạn buộc bản thân tìm hiểu 1 công nghệ mới giúp bạn làm việc nhanh hơn.
2) Bạn ngừng phê phán code của chính mình. Bạn khó debug và refactor code của chính mình.
Để tìm ra giải pháp tối ưu nhất cho phần mềm, developer cần giữ tư duy mới mẻ và suy nghĩ sáng tạo. Nói cách khác, developer cần tư duy như 1 đứa trẻ, để bầu trời là giới hạn cho bộ não. Biết càng ít, bạn càng dễ dàng tiếp cận vấn đề theo hướng nguyên thủy nhất, từ đó develop ra tool tốt hơn, phần mềm tốt hơn.
Từ công việc của mình, tôi nhận ra, khi đối mặt với vấn đề, cách hiệu quả nhất để tìm giải pháp chính là ‘tỏ ra ngu ngốc’. Hỏi những câu hỏi đơn giản, con nít nhất và sẽ tìm được nguồn gốc vấn đề.
Bạn tôi, Nguyễn Minh Quang – Software Developer cho 1 công ty outsourcing, chia sẻ 1 tình huống anh từng gặp phải. Hãy cùng theo dõi đoạn đối thoại sau:
Kết quả cuối cùng, nguyên nhân người khách hàng này không nhìn thấy logo trên website là do anh ta (hay con anh ta) vô tình tắt hiển thị mọi hình ảnh trên website. Quang thừa nhận rằng anh không thể tìm ra hoặc có lẽ đã mất rất nhiều thời gian để tìm ra nguyên nhân này nếu não anh hoạt động ở chế độ ‘thông minh’. (Cười.)
Anh Đỗ Xuân Huy – Founder & CEO của YouNet Social Intranet – cũng từng chia sẻ với ITviec trong 1 bài phỏng vấn gần đây rằng:
3 lời khuyên mà tôi tổng hợp được để giúp các bạn phát huy tinh thần ‘lười + tỏ ra ngu ngốc’ là:
1) “Thể hiện sự ‘lười’ bằng cách suy nghĩ phương pháp trước khi làm bất cứ việc gì. Có phương pháp rồi thì mới áp dụng tốc độ nhanh vào công việc. Như vậy mọi thứ mới chính xác và không có lỗi.” – Anh Huy, Founder & CEO của YouNet Social Intranet.
2) “Hãy ‘be stupid’ bằng cách mặc định mọi function khi test là 100% bị lỗi. Như vậy mới tìm ra nhiều bug ẩn sâu trong function.” – Anh An, Test Manager của TMA Solutions.
3) “‘Tỏ ra ngu ngốc’ bằng cách hỏi những câu hỏi đơn giản, con nít nhất và bạn sẽ tìm được nguồn gốc vấn đề.” – Lâm Phương, Ruby Developer của ITviec.