- Hành vi học bằng cách chạm vào và thay đổi một thứ gì đó (tinkering) không chỉ là tiếp thu kỹ năng đơn thuần mà còn là quá trình cốt lõi của việc học và hình thành gu thẩm mỹ
- Trong quá trình thử mà không có mục đích rõ ràng và lặp lại thất bại, tính ham khám phá và cảm quan sẽ lớn dần
- Gu thẩm mỹ tốt được tạo nên thông qua những thử nghiệm lặp đi lặp lại: tự mình dùng nhiều công cụ và môi trường khác nhau, bỏ đi thứ không thích và giữ lại thứ tốt
- Việc liên tục động tay vào, phá đi rồi làm lại là cách rèn cảm giác phân biệt giữa sự tầm thường và sự xuất sắc
- Thói quen đặt câu hỏi, thử nghiệm và va chạm mỗi ngày mới chính là thái độ mà lập trình viên thời nay nên có
Tinkering là gì
Tinkercó nghĩa là hành vi lặp đi lặp lại những chỉnh sửa nhỏ để sửa chữa hoặc cải thiện một thứ gì đó- Ví dụ như điều chỉnh độ nhạy chuột trong game FPS, thiết lập window manager trên Linux, hay tháo ra và bôi trơn bàn phím cơ
- Những việc này không nhất thiết phải làm, nhưng mang lại niềm vui khi tự tạo ra môi trường của riêng mình và từ đó dẫn tới học hỏi
Thái độ của tinkering
- Có hai kiểu người: chỉ hành động để đạt mục tiêu và thử làm dù không có lý do cụ thể
- Tư thế lý tưởng nằm ở khoảng giữa: tìm sự cân bằng giữa thử nghiệm và tính thực dụng
- Việc đụng vào ngôn ngữ, công cụ, editor mới và chấp nhận sự bất tiện sẽ trở thành quá trình mở rộng cảm quan sáng tạo
- Không thể khẳng định rằng việc một số lập trình viên chỉ dùng terminal của VSCode, không biết vim bindings, hay dùng GitHub Desktop thay vì CLI là xấu, nhưng nên xem đó là mức cơ bản tối thiểu (minimum)
- Như câu nói “bài tập là thứ có thể ném đi”, tính khám phá và tần suất của quá trình quan trọng hơn kết quả
Mối quan hệ giữa việc học và gu thẩm mỹ
- Gu thẩm mỹ tốt là khả năng phân biệt được tích lũy từ kinh nghiệm, và không thể có nếu thiếu những lần thử đa dạng
- Quá trình dùng nhiều công cụ và ngôn ngữ khác nhau để phân biệt “cái tốt” và “cái chưa ổn” chính là học tập
- Những thử nghiệm từng có vẻ không cần thiết trong quá khứ rốt cuộc lại làm sâu sắc thêm sự thấu hiểu và tình yêu đối với lập trình
- Không đi theo tiêu chuẩn của người khác, mà lặp đi lặp lại việc tự chọn và tự bỏ theo tiêu chuẩn của riêng mình mới là quá trình tạo nên gu thật sự
- Gần đây, việc thử viết shader GLSL, macro thủ tục trong Rust, template C++, phát triển ứng dụng Swift, dùng editor Helix đã mang lại kiến thức và trải nghiệm mới thuần túy từ niềm vui
“Thời gian dành cho việc học không bao giờ là lãng phí”
Vì sao gu thẩm mỹ lại quan trọng vào lúc này
- Trong hành vi không ngừng thử, sửa, phá rồi làm lại, không chỉ kỹ năng mà cả cảm quan và tiêu chuẩn thẩm mỹ cũng cùng trưởng thành
- Gu thẩm mỹ tốt (good taste) được hình thành qua quá trình thử dùng nhiều thứ, bỏ đi những gì không hợp ý và giữ lại những gì phù hợp
- “Gu” ở đây là khả năng phân biệt giữa sự tầm thường và sự xuất sắc, khác nhau ở mỗi người và không cần phải giống người khác
Hãy đặt câu hỏi với hiện trạng, thử nghiệm, phá vỡ và lặp lại điều đó
1 bình luận
Ý kiến trên Hacker News
Từ lâu có một người bạn từng nói rằng sau khi đã tìm hiểu mọi thứ về cà phê, cuối cùng anh ấy chỉ còn có thể thưởng thức cà phê được pha từ hạt đắt tiền và máy móc xịn; nhưng mức độ vui thích cũng không khác gì hồi còn uống cà phê mua ở siêu thị
Vì vậy tôi cố sống theo hướng giảm bớt “gu” của mình nếu có thể. Tai nghe 20 đô và TV 200 đô đã đủ khiến tôi hài lòng, và dù bạn bè dùng TV 3.000 đô thì mức độ vui vẻ cũng chẳng khác bao nhiêu
Giờ tôi đăng ký hạt từ các lò rang độc lập và thích thú với việc khám phá hương vị mới mỗi lần. Biết đến cà phê ngon là một trải nghiệm đã làm cuộc sống tôi phong phú hơn
Với tôi, “gu” không làm hỏng trải nghiệm mà còn khiến nó phong phú hơn
Dù vậy trong sinh hoạt hằng ngày tôi vẫn dùng chiếc 20 đô. Điều quan trọng là “tận hưởng mà không phô trương”
Cũng như một kỹ sư xuất sắc cuối tuần vẫn chạy Doom trên củ khoai tây, gu là sức mạnh để bao dung sự đa dạng
Gu thực sự là khả năng hiểu được vẻ đẹp của nhiều phong cách khác nhau. Tôi cũng đã thử nhiều thiết bị pha cà phê khác nhau và cuối cùng có được một “gu bớt phán xét hơn”
Tôi đồng cảm với ý rằng có người “chỉ làm vì mục tiêu” và có người “cứ thế mà làm”
Bây giờ là thời đại ai cũng có thể
vibe coding, nên tôi nghĩ khác biệt giữa các lập trình viên nằm ở “gu tốt (good taste)”Đây không chỉ là cảm giác, mà là năng lực phân biệt được tích lũy qua nhiều lần thử nghiệm. Trong thiết kế hệ thống cũng vậy: không chỉ làm nhanh mà còn phải biết tạo ra “cấu trúc không dễ sụp đổ”
Vì thế tôi tạo thư mục
sandboxđể thử ý tưởng mới hay thư viện mới, qua đó nuôi dưỡng gu của mình~/Codecủa tôi thì đầy dự án thử nghiệm. Chính những thử nghiệm nhỏ này đã giúp tôi trở thành lập trình viên tốt hơnVí dụ, tôi từng thấy một PR biến việc chỉ cần thêm route vào ứng dụng Flask thành thứ phức tạp với AWS Lambda và Terraform
Tôi hiểu ý chính của tác giả, nhưng cảm thấy ví dụ không hay lắm. Độ nhạy chuột, switch bàn phím hay thiết lập VSCode vốn là những thứ được tạo ra để chỉnh
Việc học thật sự đến từ chỗ “dùng sai đi”, nhưng ngày nay ngay cả những kiểu thử nghiệm đó cũng đã bị đóng gói thành hàng hóa. Thật tiếc khi thế giới đã tiện đến mức cả việc tinh chỉnh cũng trở thành một trải nghiệm được đóng gói
Trước đây tôi nghĩ “gu” là tiêu chuẩn để phân biệt chất lượng tốt, nhưng giờ tôi xem nó là mức độ trùng khớp về giá trị
Việc đánh giá gu của ai đó là tốt, rốt cuộc là vì người đó và tôi đang chia sẻ cùng một hệ giá trị
Tôi nghĩ chính “tính chủ đích” mới là cốt lõi của gu thật sự
Những kỹ sư tệ nhất tôi từng thấy là những người bị mắc kẹt trong “gu của chính mình”. Trong môi trường cần cộng tác, thái độ đó sẽ phá hỏng cả đội
Lập trình không phải nghệ thuật mà là “công việc dành cho người khác”. Người dùng quan tâm tới giá trị của kết quả hơn là ngôn ngữ hay pattern
Nhà phát triển thực sự giỏi là người có thể cộng tác theo bất kỳ cách nào
Điều quan trọng là có cảm giác để biết khi nào nên giữ nguyên tắc
Sự phân biệt giữa “hành động vì mục tiêu” và “hành động chỉ vì muốn làm” khá giống khái niệm trong 『Zen and the Art of Motorcycle Maintenance』
Robert Pirsig chia nó thành “hiểu biết lãng mạn” và “hiểu biết cổ điển”, nhưng rốt cuộc nói rằng cả hai đều là ảo ảnh, và một góc nhìn tích hợp mới là lý tưởng
Tôi cảm thấy khái niệm ‘tinkering’ của tác giả thực ra khá giống kiểu hành vi tập trung lặp lại thường thấy ở người có đặc điểm thần kinh đa dạng (neurodivergence)
Gu tốt không đến từ lặp lại đơn thuần mà từ sự kết hợp giữa tri thức và kỹ năng. Mấu chốt là bạn hiểu thế giới rộng đến đâu, và có nhận thức được những lĩnh vực mình chưa biết hay không
Trước đây tôi cũng từng là một “người chỉnh mãi không thôi”, nhưng khi gia đình, công việc và cuộc sống bận rộn hơn thì thực tế buộc tôi phải từ bỏ
Giờ tôi dùng Synology NAS và quay lại Windows thay vì Linux. Dù vậy, tinh thần tinkering vẫn còn ở trong tôi
“Kiểu ghi chú cần phải bảo trì” không hợp với tôi
Tôi không chắc từ “gu” có đúng không, nhưng tôi đồng ý với ý “quá trình học hỏi thông qua thử nghiệm đầy hứng thú”
Tuy vậy kiểu học này có hai giới hạn
Tác giả dùng IDE để định nghĩa ‘tinkering’, nhưng IDE không phải đối tượng thử nghiệm duy nhất
Còn có rất nhiều lĩnh vực khác như độ nhạy chuột, bàn phím, window manager
Không thể vì ai đó không đụng vào IDE mà gọi họ là “không biết tinh chỉnh”. Cuối cùng, điều quan trọng là “thái độ khám phá”, chứ không phải một công cụ cụ thể