2 คะแนน โดย GN⁺ 6 시간 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • จากความพยายามปรับแต่งบล็อกได้อย่างอิสระ ผู้เขียนเลยต้องลงมือทำตั้งแต่การเขียน HTML ระบบเขียนบทความด้วย JSON ไปจนถึงเครื่องมือแปลง Markdown และเครื่องมือคอมไพล์·ดีพลอย สุดท้ายจึงกลายเป็นประสบการณ์การสร้าง ตัวสร้างเว็บไซต์แบบสแตติก ขึ้นมาเอง
  • yak shaving หมายถึงสถานการณ์ที่งานย่อยต่อเนื่องเพื่อไปให้ถึงเป้าหมายหนึ่ง ค่อย ๆ ห่างออกจากจุดประสงค์เดิม และเป็นคำที่ Carlin Vieri จาก MIT AI Lab เป็นผู้บัญญัติขึ้น
  • วิศวกรและผู้จัดการมักตกหลุมพรางของการ สร้างขึ้นใหม่ตั้งแต่ต้น ได้ง่าย เมื่อรู้สึกว่าโซลูชันสำเร็จรูปไม่ถูกใจหรือไม่ตรงกับความต้องการ
  • ภายใต้งบประมาณและเวลาที่จำกัด การเลือก ทางเลือกอื่น ที่ตอบโจทย์ความต้องการหลักและลดปริมาณงาน อาจสำคัญกว่าความสนุกจากการลงมือทำเอง
  • แม้บางกรณีจะนำไปสู่ความสำเร็จใหญ่แบบ TeX ของ Donald Knuth แต่ yak shaving ส่วนใหญ่ก็อาจล้มเหลวได้ และหากได้เรียนรู้อะไรจากมัน นั่นเองก็มี คุณค่า

บล็อกที่ทำเองต่อยอดกลายเป็นตัวสร้างเว็บไซต์แบบสแตติก

  • ไม่ได้ใช้ตัวสร้างเว็บไซต์แบบสแตติกหรือเฟรมเวิร์กอย่าง Jekyll, Hugo, Gatsby
  • ตอนแรกลองใช้เครื่องมืออยู่บ้าง แต่รู้สึกว่าให้อิสระในการปรับแต่งไม่เพียงพอ จึงตัดสินใจทำเอง
  • การเขียนบทความด้วย HTML นั้นไม่สะดวก จึงทำระบบเขียนบทความบนไฟล์ JSON ขึ้นมาเพื่อแก้ปัญหา แต่พอเป็นบทความยาวก็ยังรู้สึกไม่เข้ามือ
  • หลังจากนั้นยังทำบริการแปลงไฟล์ Markdown เป็น HTML และเครื่องมือสำหรับคอมไพล์·ดีพลอยไฟล์ผลลัพธ์เพิ่มเข้าไป จนสุดท้ายก็เท่ากับสร้าง ตัวสร้างเว็บไซต์แบบสแตติก ขึ้นมาตั้งแต่ต้น

ความหมายและที่มาของ yak shaving

  • yak shaving หมายถึงสถานการณ์ที่ระหว่างทำงานที่เกี่ยวเนื่องกันต่อไปเรื่อย ๆ เพื่อเป้าหมายหนึ่ง กลับหลงลืมจุดประสงค์เดิมและไปทำอย่างอื่นที่ต่างออกไปโดยสิ้นเชิง
  • ตัวอย่างจาก LangDev IRC คือ เริ่มจากจะตัดต้นไม้ด้วยขวาน แต่ต้องไปหาหินมาลับขวาน แล้วเพื่อจะไปหมู่บ้านที่มีหินดี ๆ ก็ต้องหาจามรีมาก่อน แต่ขนของจามรีดันยาวเกินไป สุดท้ายเลยต้องโกนขนมัน
  • ตัวอย่างของ Seth Godin เริ่มจากการล้างรถ แล้วลามไปถึงสายยาง, Home Depot, E-ZPass, E-ZPass ของเพื่อนบ้าน, ปัญหาเรื่องหมอนที่ยืมมา และลงเอยด้วยการโกนขน yak ในสวนสัตว์
  • คำนี้เป็นคำที่ Carlin Vieri ตั้งขึ้นที่ MIT AI Lab
    • Vieri เล่นฮอกกี้จนดึกในคืนวันอังคาร แล้วมากินมื้อเย็นตอนเที่ยงคืนพร้อมดูตอน Yak Shaving Day ของ The Ren & Stimpy Show
    • ไม่กี่วันต่อมา ระหว่างจัดการงานเอกสารอย่างการขออนุญาตทางธุรการ การตั้งค่าบัญชี DHL และการหาที่ทำการไปรษณีย์ เขาจึงบอกเพื่อนร่วมงานว่าตัวเองกำลังทำ yak shaving อยู่
    • หลังจากนั้นไม่กี่เดือน คำนี้ก็แพร่ไปในห้องแล็บ เพราะคนในแล็บใช้กันต่อเนื่อง

ความเสี่ยงของการสร้างทุกอย่างตั้งแต่ต้น

  • หนึ่งในความผิดพลาดที่ทั้งวิศวกรและผู้จัดการที่ดูแลทีมวิศวกรรมทำกันบ่อย คือการ สร้างขึ้นใหม่ตั้งแต่ต้น
  • วิศวกรอาจไม่ชอบโซลูชันสำเร็จรูป หรืออยากพิสูจน์ฝีมือของตัวเอง
  • ลูกค้าหรือผู้จัดการอาจเข้าใจผิดว่าโซลูชันเดิมทำอะไรได้บ้าง หรือมองว่ามันไม่ตอบโจทย์ความต้องการได้ตรงเป๊ะ
  • โปรเจกต์ส่วนใหญ่ ไม่ว่าจะเป็นการพัฒนาผลิตภัณฑ์หรือโปรเจกต์เล่น ๆ ล้วนมีข้อจำกัดด้าน งบประมาณและเวลา
  • พอเริ่มลงมือทำเอง ก็มีโอกาสสูงที่จะลุกลามเป็น yak shaving และเมื่อเข้าไปแล้วก็มักไม่รู้ว่าจะจบตรงไหน บางครั้งอาจถึงขั้นต้องละทิ้งเป้าหมายเดิม
  • ในสถานการณ์แบบนี้ การหาทางเลือกที่ตอบโจทย์ความต้องการหลัก และลดงานให้มากที่สุด มักเหมาะสมกว่า

แล้วทำไม yak shaving ถึงยังสนุกอยู่ดี

  • yak shaving หยุดได้ยาก เพราะการสร้างอะไรบางอย่างด้วยมือตัวเองนั้นสนุก
  • กระบวนการสร้างสิ่งที่ไม่เคยมีมาก่อน ค้นพบปัญหาแล้วแก้ไข และขุดลึกลงไปใน สายโซ่แห่งความรู้ เพื่อทำความเข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไร เป็นสิ่งที่ดึงดูดวิศวกร
  • ต่อให้ไม่ใช่วิศวกร แนวคิดของการสร้างสิ่งที่ตัวเองต้องการขึ้นมาด้วยมือก็มีเสน่ห์ในตัวเอง
  • Frederick P. Brooks Jr. สรุปเหตุผลที่การเขียนโปรแกรมสนุกไว้ใน 『The Mythical Man-Month』 ดังนี้
    • ความสุขล้วน ๆ จากการได้สร้างบางสิ่ง
    • ความสุขจากการสร้างสิ่งที่เป็นประโยชน์ต่อผู้อื่น
    • เสน่ห์ของการสร้างสิ่งที่เหมือนปริศนาซับซ้อนซึ่งชิ้นส่วนต่าง ๆ ขบกันและเคลื่อนไหวร่วมกัน โดยกฎของมันทำงานอยู่ในวงจรอันละเอียดอ่อน
    • ความสุขจากการได้เรียนรู้อย่างต่อเนื่อง
    • ความสุขจากการทำงานกับสื่อแสดงออกที่ยืดหยุ่นและจัดการได้ง่าย

TeX ในฐานะ yak shaving ที่ประสบความสำเร็จ

  • TeX ก็เป็นตัวอย่างที่เกิดจาก yak shaving
  • TeX คือระบบเรียงพิมพ์ที่ศาสตราจารย์ Donald Knuth แห่ง Stanford สร้างขึ้น และหมายถึงทั้งระบบทั้งหมดที่ทำให้โปรแกรมทำงาน รวมถึงภาษาเรียงพิมพ์และคอมไพเลอร์ที่ประมวลผลมัน
  • เนื่องจากสามารถป้อนสมการได้ง่าย จึงถูกใช้อย่างแพร่หลายในสาขาสังคมศาสตร์ วิทยาศาสตร์ และวิศวกรรม โดยผู้ใช้ส่วนใหญ่มักใช้ LaTeX ซึ่งเป็นชุดแมโครที่ช่วยให้ใช้งาน TeX ได้สะดวกขึ้น
  • ในปี 1976 ระหว่างเตรียม 『The Art of Computer Programming』 เล่ม 2 ฉบับพิมพ์ครั้งที่ 2 Donald Knuth ต้องการงานเรียงพิมพ์แบบตัวพิมพ์โลหะที่เคยใช้ในฉบับพิมพ์ครั้งแรก แต่ไม่สามารถใช้งานได้อีกแล้ว
  • เมื่อไม่พอใจกับทางเลือกที่มีอยู่ Knuth จึงเห็นหนังสือเรื่องการเรียงพิมพ์ดิจิทัลของ Patrick Winston และตัดสินใจสร้างระบบเรียงพิมพ์ดิจิทัลขึ้นมาเอง
  • Knuth สร้าง TeX เวอร์ชันแรกด้วยภาษา SAIL และต่อมาพัฒนาให้เสร็จสมบูรณ์ด้วยภาษา WEB ที่เขาสร้างขึ้นเอง
    • ซอร์สของ WEB เป็นรูปแบบที่ผสมเอกสารและโค้ดไว้ด้วยกัน
    • สามารถใช้โปรแกรม Weave และ Tangle แยกไฟล์ WEB ออกมาเป็นไฟล์ TeX และไฟล์ Pascal ได้ตามลำดับ
    • Knuth เรียกกระบวนทัศน์การเขียนโปรแกรมนี้ว่า literate programming
  • Knuth ยังร่วมกับ Michael Plass คิดค้น อัลกอริทึมตัดบรรทัด Knuth-Plass สำหรับตัดสินใจว่าควรขึ้นบรรทัดใหม่ตรงไหนในย่อหน้า
  • เขายังออกแบบฟอนต์ Computer Modern สำหรับ TeX สร้าง METAFONT ซึ่งเป็นภาษาสำหรับนิยามกราฟิกแบบเวกเตอร์ และพัฒนาฟอร์แมต DVI สำหรับแสดงผลลัพธ์ของ TeX โดยไม่ผูกติดกับอุปกรณ์เฉพาะ
  • พูดได้ว่าเพื่อจะเขียนหนังสือหนึ่งเล่ม เขาได้สร้างทั้งภาษาโปรแกรม กระบวนทัศน์ อัลกอริทึม เครื่องมือ และฟอนต์ขึ้นมา โดยการทำ TeX ใช้เวลาเกือบ 10 ปี และหนังสือก็ออกช้าตามไปด้วย แต่ความพยายามนั้นไม่ได้สูญเปล่า

ระหว่างความล้มเหลวกับการเรียนรู้

  • TeX เป็นกรณีความสำเร็จระดับสุดโต่ง ส่วน yak shaving ส่วนใหญ่มักจบลงด้วยความล้มเหลว
  • แม้ควรหยุดให้ทันในจุดที่เหมาะสม แต่ก็มักเลิกได้ยาก เพราะเสียดายเวลาที่ลงทุนไปแล้ว หรือเพราะตัว yak shaving เองก็สนุก
  • ต่อให้จำเป็นต้องทำต่อจนสุด บางครั้งก็อาจเริ่มสงสัยว่า “ตอนนี้ฉันกำลังทำอะไรอยู่กันแน่?” จนความสนใจลดลง หรือทรัพยากรที่จัดสรรให้โปรเจกต์หมดลงจนต้องหยุดกลางทาง
  • สำหรับคนที่ต้องการเรียนรู้ yak shaving อาจมีประสิทธิภาพมากทีเดียว
  • หลายวิชาในสาขาวิทยาการคอมพิวเตอร์มักบังคับให้ทำ yak shaving อยู่ระดับหนึ่งโดยไม่ตั้งใจ และบางครั้งการขุดลึกลงไปในความรู้รายรอบมากกว่าตัวโจทย์ ก็ทำให้ได้อะไรมากกว่าเดิม
  • หากจะสร้างระบบคอมพิวเตอร์ด้วยแนวทาง yak shaving ก็ต้องเรียนตั้งแต่ Boolean logic, วงจรลอจิก, สถาปัตยกรรมคอมพิวเตอร์, ภาษาโปรแกรม ไปจนถึงระบบปฏิบัติการ
  • The Elements of Computing Systems ของ Noam Nisan และ Shimon Schocken ก็เดินตามกระบวนการแบบนี้โดยตรง
  • ต่อให้ไปไม่ถึงปลายทาง หากระหว่างโกนขน yak ได้เรียนรู้อะไรบางอย่าง นั่นก็มีคุณค่าในตัวมันเอง

2 ความคิดเห็น

 
unsure4000 4 시간 전

ดูเหมือนว่าโพสต์ฉบับภาษาเกาหลีจะเป็นต้นฉบับ

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

 
GN⁺ 6 시간 전
ความคิดเห็นจาก Lobste.rs
  • การโกนขนจามรี นั้นสนุกก็จริง แต่ควรกำหนดขีดจำกัดของความลึกในการแตกประเด็นแบบวนซ้อนหรือปริมาณความพยายามไว้ระดับหนึ่ง และเมื่อถึงจุดนั้นก็ควรหยุด

  • รู้สึกรำคาญมากที่มีคนสร้างสำนวนที่แทบไม่มีใครใช้ขึ้นมา แล้วใช้ราวกับเป็นคำที่ทุกคนรู้จักกันดี โดยเฉพาะผู้ใช้ Reddit ชอบทำแบบนี้มาก และยังชอบอ้างกฎโน้นกฎนี้อยู่เรื่อย
    ผมหาต้นทางจาก MIT ของคำนี้เจอแล้ว: https://projects.csail.mit.edu/gsb/old-archive/…

    • ถึงจะต้องมีคนที่ได้ยินคำนี้เป็นครั้งแรกเสมอ แต่ yak shaving ก็เป็นสำนวนที่พบได้ค่อนข้างบ่อยในสายงานของเรา ลองค้นดูก็จะเจอตัวอย่างการใช้งานจำนวนมาก
    • บทความนี้ให้นิยามคำดังกล่าวตั้งแต่ตอนเริ่มต้น และผมคิดว่าอธิบายได้ค่อนข้างดี
    • การได้เรียนรู้สำนวนที่ไม่เคยรู้มาก่อนก็น่าจะเป็น เรื่องสนุก ไม่ใช่หรือ? นี่ไม่ใช่บทสนทนาแบบเผชิญหน้าที่ถ้าตามไม่ทันในเวลาจริงแล้วจะเสียเปรียบ
      ถ้าไม่เจอสิ่งที่อยู่นอกขอบเขตความรู้ของตัวเอง แล้วจะขยายขอบเขตนั้นได้อย่างไร
    • แทบไม่อยากเชื่อว่ายังไม่มีใครพูดคำนี้ แต่ Yak shaving เป็นสำนวนที่ cromulent อย่างสมบูรณ์