2 điểm bởi GN⁺ 6 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Khi cố gắng tùy biến blog một cách tự do, tác giả đã đi đến mức tự làm cả việc viết HTML, hệ thống viết bài bằng JSON, chuyển đổi Markdown, lẫn công cụ biên dịch và triển khai, và cuối cùng dẫn tới trải nghiệm tự tay triển khai một trình tạo trang tĩnh
  • yak shaving chỉ tình huống chuỗi công việc phục vụ một mục tiêu nào đó dần đi xa khỏi mục đích ban đầu, và đây là cách nói do Carlin Vieri ở MIT AI Lab tạo ra
  • Kỹ sư và nhà quản lý dễ rơi vào cái bẫy tự làm từ đầu khi cảm thấy các giải pháp có sẵn không vừa ý hoặc không phù hợp với yêu cầu
  • Trong phạm vi ngân sách và thời gian hạn chế, việc chọn phương án thay thế đáp ứng yêu cầu cốt lõi và cắt giảm khối lượng công việc có thể quan trọng hơn niềm vui tự triển khai
  • Vẫn có những trường hợp dẫn đến thành quả lớn như TeX của Donald Knuth, nhưng phần lớn yak shaving có thể thất bại; nếu học được điều gì đó thì bản thân nó cũng đã có giá trị

Blog tự làm dẫn đến một trình tạo trang tĩnh

  • Không dùng các trình tạo trang tĩnh hay framework như Jekyll, Hugo, Gatsby
  • Ban đầu đã thử một vài công cụ, nhưng vì cảm thấy mức độ tự do khi tùy biến không đủ nên quyết định tự làm
  • Cách viết bài bằng HTML khá bất tiện, nên để giải quyết, tác giả đã tạo một hệ thống viết bài dựa trên file JSON, nhưng với bài dài thì lại tiếp tục thấy gượng gạo
  • Sau đó, khi làm thêm cả dịch vụ chuyển file Markdown sang HTML và công cụ biên dịch, triển khai file kết quả, rốt cuộc cũng coi như đã tự xây từ đầu một trình tạo trang tĩnh

Ý nghĩa và nguồn gốc của yak shaving

  • yak shaving chỉ tình huống cứ tiếp tục đuổi theo các công việc liên quan để đạt một mục tiêu nào đó, rồi đánh mất mục tiêu ban đầu và rốt cuộc lại đi làm một việc hoàn toàn khác
  • Ví dụ trên LangDev IRC là: định chặt cây bằng rìu, rồi đi tìm đá để mài rìu, muốn đến ngôi làng có loại đá tốt thì phải kiếm một con yak, mà lông yak lại quá dài nên cuối cùng phải đi cắt lông yak
  • Ví dụ của Seth Godin bắt đầu từ việc rửa xe, rồi kéo theo vòi nước, Home Depot, E-ZPass, E-ZPass của hàng xóm, vấn đề cái gối đi mượn, và kết thúc bằng câu chuyện cạo lông yak ở sở thú
  • Cách nói này do Carlin Vieri tạo ra tại MIT AI Lab
    • Vieri chơi khúc côn cầu vào tối muộn thứ Ba, rồi ăn tối lúc nửa đêm trong khi xem tập Yak Shaving Day của The Ren & Stimpy Show
    • Vài ngày sau, trong lúc xử lý giấy tờ như xin phê duyệt hành chính, thiết lập tài khoản DHL, tìm bưu điện, anh đã nói với đồng nghiệp rằng mình đang yak shaving
    • Trong vài tháng sau đó, anh tiếp tục dùng cách nói này với mọi người trong phòng lab và nó dần lan rộng

Rủi ro của việc làm từ đầu

  • Một trong những sai lầm mà kỹ sư hoặc quản lý điều hành đội ngũ kỹ thuật thường hay mắc phải là tự làm từ đầu
  • Kỹ sư có thể không thích các giải pháp có sẵn hoặc muốn chứng minh năng lực của mình
  • Khách hàng hoặc nhà quản lý có thể hiểu sai những gì giải pháp hiện có làm được, hoặc cho rằng nó không đáp ứng chính xác yêu cầu
  • Hầu hết các dự án, dù là phát triển sản phẩm hay dự án thử nghiệm, đều bị giới hạn bởi ngân sách và thời gian
  • Khi đã bắt đầu tự làm, rất dễ lan sang yak shaving; một khi đã bước vào thì không biết sẽ kết thúc ở đâu và thậm chí có thể phải từ bỏ mục tiêu ban đầu
  • Trong những tình huống như vậy, phù hợp hơn là tìm phương án thay thế đáp ứng các yêu cầu cốt lõi và giảm khối lượng công việc nhiều nhất có thể

Vì sao yak shaving vẫn thú vị

  • yak shaving rất khó dứt ra vì niềm vui khi tự tay tạo ra thứ gì đó
  • Quá trình tạo ra thứ chưa từng có, phát hiện và giải quyết vấn đề, rồi lần theo chuỗi tri thức để hiểu thứ gì hoạt động ra sao chính là điều hấp dẫn các kỹ sư
  • Ngay cả với người không phải kỹ sư, ý tưởng tự tay làm ra thứ mình muốn vốn dĩ cũng rất cuốn hút
  • Trong 『The Mythical Man-Month』, Frederick P. Brooks Jr. đã tóm lược lý do việc lập trình thú vị như sau
    • Niềm vui thuần túy của việc tạo ra một thứ gì đó
    • Niềm vui khi tạo ra thứ hữu ích cho người khác
    • Sức hấp dẫn của việc tạo nên một đối tượng phức tạp như trò xếp hình mà các phần ăn khớp với nhau và quan sát các quy tắc của nó vận hành trong những vòng tuần hoàn tinh vi
    • Niềm vui được liên tục học hỏi
    • Niềm vui khi làm việc với một phương tiện biểu đạt linh hoạt và dễ thao tác

TeX, một yak shaving thành công

  • TeX cũng là một trường hợp sinh ra từ yak shaving
  • TeX là hệ thống sắp chữ do giáo sư Stanford Donald Knuth tạo ra; nó chỉ toàn bộ hệ thống nơi chương trình vận hành, bao gồm ngôn ngữ sắp chữ và cả trình biên dịch xử lý nó
  • Nhờ có thể nhập công thức dễ dàng, nó được dùng rộng rãi trong khoa học xã hội, khoa học và kỹ thuật; đa số người dùng sử dụng LaTeX, một tập macro giúp dùng TeX thuận tiện hơn
  • Năm 1976, khi chuẩn bị bản in lần 2 của tập 2 bộ 『The Art of Computer Programming』, Donald Knuth muốn kiểu sắp chữ bằng con chữ chì đã dùng ở bản in lần 1, nhưng lúc đó không còn dùng được nữa
  • Không hài lòng với các phương án thay thế, Knuth đọc cuốn sách về sắp chữ số của Patrick Winston và quyết định tự xây dựng một hệ thống sắp chữ số
  • Knuth làm phiên bản đầu tiên của TeX bằng ngôn ngữ SAIL, sau đó hoàn thiện nó bằng ngôn ngữ WEB do chính ông tạo ra
    • Mã nguồn WEB là cách trộn tài liệu và mã với nhau
    • Với các chương trình Weave và Tangle, có thể trích xuất lần lượt file TeX và file Pascal từ file WEB
    • Knuth gọi mô hình lập trình này là literate programming
  • Cùng với Michael Plass, Knuth cũng tạo ra thuật toán ngắt dòng Knuth-Plass để quyết định nên ngắt dòng ở đâu trong một đoạn văn
  • Ông thiết kế Computer Modern, bộ phông chữ cho TeX; tạo ra METAFONT, ngôn ngữ định nghĩa đồ họa vector; và cũng phát triển định dạng DVI để xuất kết quả TeX mà không phụ thuộc vào thiết bị cụ thể
  • Có thể nói, để viết sách, ông đã tạo ra cả ngôn ngữ lập trình, mô hình lập trình, thuật toán, công cụ và phông chữ; việc làm TeX mất gần 10 năm và cuốn sách cũng ra muộn tương ứng, nhưng đó không phải là nỗ lực vô ích

Giữa thất bại và học hỏi

  • TeX là một ví dụ thành công ở mức cực đoan, còn phần lớn yak shaving thì thất bại
  • Cần biết dừng ở điểm thích hợp, nhưng thường khó bỏ cuộc vì tiếc thời gian đã đầu tư hoặc vì bản thân yak shaving quá thú vị
  • Ngay cả khi phải làm đến cùng, có lúc người ta sẽ tự hỏi “Rốt cuộc mình đang làm gì thế này?”, rồi mất hứng, hoặc dự án bị dừng vì cạn kiệt tài nguyên được phân bổ
  • Với người muốn học, yak shaving có thể là một cách cực kỳ hiệu quả
  • Nhiều môn học khoa học máy tính, dù không phải chủ ý của giảng viên, vẫn đòi hỏi một mức độ yak shaving nào đó; đôi khi người học còn thu được nhiều hơn khi đào sâu kiến thức xung quanh hơn là chỉ làm phần bài tập chính
  • Để xây dựng một hệ thống máy tính theo kiểu yak shaving, cần học từ Boolean logic, mạch logic, kiến trúc máy tính, ngôn ngữ lập trình cho đến hệ điều hành
  • The Elements of Computing Systems của Noam Nisan và Shimon Schocken đi đúng theo quá trình như vậy
  • Dù không đi được đến đích cuối cùng, nếu trong lúc cạo lông yak mà học được điều gì đó thì chỉ riêng điều đó thôi cũng đã có giá trị

2 bình luận

 
unsure4000 4 giờ trước

Có vẻ như bài đăng bản tiếng Hàn là bản gốc.

https://parksb.github.io/article/32.html

 
Ý kiến trên Lobste.rs
  • Cạo lông yak thì vui, nhưng nên đặt ra một mức giới hạn nào đó về độ sâu đệ quy hoặc lượng công sức bỏ ra, và khi chạm đến đó thì phải dừng lại

  • Việc bày ra một cách diễn đạt mà hầu như chẳng ai dùng rồi viết như thể đó là thuật ngữ ai cũng biết thực sự rất khó chịu. Người dùng Reddit đặc biệt hay làm vậy, cứ liên tục viện dẫn hết định luật này đến định luật kia
    Tôi đã tìm được nguồn gốc từ MIT của thuật ngữ này: https://projects.csail.mit.edu/gsb/old-archive/…

    • Lúc nào cũng sẽ có người nghe lần đầu, nhưng yak shaving là một cách nói khá phổ biến trong lĩnh vực của chúng ta. Tìm thử sẽ thấy vô số ví dụ sử dụng
    • Bài viết định nghĩa thuật ngữ đó ngay từ đầu, và theo tôi là giải thích khá ổn
    • Học được một thành ngữ mà trước giờ mình chưa biết chẳng phải cũng là điều thú vị sao. Đây đâu phải kiểu hội thoại trực diện mà nếu không theo kịp ngay lúc đó thì sẽ bị bất lợi
      Nếu không tiếp xúc với những gì nằm ngoài chân trời hiểu biết của mình thì làm sao có thể mở rộng nó được
    • Khó tin là đến giờ vẫn chưa ai nói điều này, nhưng Yak shaving hoàn toàn là một cách diễn đạt cromulent