• บทความเชิงเปรียบเปรยที่อธิบายความโกลาหลของการพัฒนาซอฟต์แวร์ผ่านอุปมาเรื่องการสร้างสะพาน พร้อมคำสารภาพแบบประชดประชันว่า ทุกทีมโปรแกรมมิงประกอบด้วยคนบ้า และผลลัพธ์จากพวกเขาคือสิ่งที่ทำให้ซอฟต์แวร์ธนาคารกับอินเทอร์เน็ตทำงานอยู่
  • โค้ดที่สมบูรณ์แบบมีอยู่แค่ในไฟล์ที่ทำงานอย่างเดียวและเขียนโดยลำพังเท่านั้น แต่ในโลกความเป็นจริง การทำงานคือการถูกสั่งวันศุกร์ให้สร้าง 600 อย่างภายในวันอังคาร พร้อมกับ เอาปิกัสโซไปพิงกองเกล็ดหิมะที่กำลังละลาย
  • นักพัฒนาเว็บต้องเรียนรู้เทคโนโลยีใหม่สัปดาห์ละหนึ่งอย่าง พร้อมตรวจว่าสารพัดเครื่องมือเดิมหลายร้อยชิ้นยังไม่พัง และแม้เป็นผู้เชี่ยวชาญก็ยังถือว่า โชคดีถ้าใช้เวลาแค่ 6 ชั่วโมงหาสาเหตุของปัญหา
  • อินเทอร์เน็ตพึ่งพาเงินมูลค่าหลายล้านล้านดอลลาร์ที่วางอยู่บนข้อตกลงแบบไม่เป็นทางการและโค้ดอายุ 10 ปีที่เขียนว่า "TODO: FIX THIS" และถ้าผู้ดูแลระบบทุกคนออกไปกินข้าวพร้อมกัน อารยธรรมก็จะล่มสลาย
  • โปรแกรมเมอร์ใช้เวลา 10–15 ชั่วโมงต่อวันทำงานที่สมองมนุษย์ไม่ได้ถูกออกแบบมาให้ทำ และ กำลังค่อย ๆ บ้าขึ้นเรื่อย ๆ ซึ่งนี่ก็คือราคาของอาชีพที่เลือกแทนการยกของหนัก 50 ปอนด์

ทุกทีมโปรแกรมมิงประกอบด้วยคนบ้า

  • เพื่อนที่ทำงานใช้แรงกายมักเริ่มบทสนทนาด้วยทำนองว่า "แกสบายจะตาย ฉันนี่ขุดอุโมงค์ด้วย เครื่องเจาะ อยู่ใต้ Mordor"
  • ถ้าคุณเห็นตรงกันว่าความเครียดกับความทรมานทางจิตใจเป็นเรื่องแย่ ยินดีต้อนรับสู่โลกของการเขียนโปรแกรม
  • อุปมาเรื่องการสร้างสะพาน: สมมติว่าคุณเข้าร่วมโครงการสร้างสะพานในมหานคร แล้วเจอสถานการณ์แบบนี้
    • Mary เป็นหัวหน้าโครงการ, Fred ทำงานกับไม้ได้อย่างเดียว แต่ดันรับผิดชอบทางเดินของสะพานที่สูง 200 ฟุตเหนือกระแสน้ำเชี่ยว
    • Dave โดนขโมยเสื้อสเวตเตอร์ไปครั้งหนึ่ง เลยติดตั้งจุดตรวจความปลอดภัย 15 ขั้นตอน
    • Phil ไม่ใช่วิศวกร แต่บังคับใช้นโยบาย ห้ามมีราวกันตก ไม่มีใครรู้ว่า Phil ทำอะไร แต่เพราะเกี่ยวข้องกับผู้บริหารจึงไม่มีใครแตะต้อง
    • Sara ใส่เทคโนโลยีปูพื้นล้ำสมัยระดับ "hemorrhaging-edge" ทุกตัวที่มีลงไปในแบบ
    • Tom กับ Harry ทะเลาะกันเรื่อง ระบบเมตริก vs ระบบอิมพีเรียล มาหลายปี และใช้หน่วยของคนที่เริ่มทำก่อน
    • เดิมออกแบบเป็นสะพานแขวน แต่ไม่มีใครรู้วิธีสร้างสะพานแขวน เลย เติมเสาค้ำตรงกลางระหว่างทาง และปล่อยสายเคเบิลแขวนไว้เพราะมันคงพยุงอะไรสักอย่างอยู่
    • เขาบอกให้พนักงานใหม่เสนอไอเดียใหม่ ๆ แต่ดันเป็น วิศวกรขับดัน ที่ไม่รู้อะไรเกี่ยวกับสะพานเลย
  • ถ้าถามว่าใครจะกล้าข้ามสะพานนี้ คำตอบคือไม่มีใคร แต่ โครงสร้างแบบนี้แหละที่สร้างซอฟต์แวร์ธนาคาร เว็บไซต์ และโปรแกรมความปลอดภัยของอินเทอร์เน็ตทั้งหมด

โค้ดทุกก้อนล้วนแย่

  • โปรแกรมเมอร์ทุกคนมี ไฟล์ Good Code ที่หยิบมาอ่านตอนอยู่บ้านคนเดียวแล้วน้ำตาคลอ
    • ชื่อฟังก์ชันกับตัวแปรสอดคล้องกัน กระชับ ไม่ทำอะไรโง่ ๆ แบบเห็นชัด และไม่เคยถูกปล่อยสู่โลกจริงหรือโดนความต้องการจากฝ่ายขายถล่มใส่
    • มีคนเขียนแค่คนเดียว ไม่มีใครมาแตะทีหลัง และ อ่านเหมือนบทกวีที่คนอายุมากกว่า 30 เขียน
  • ความจริงคือ ถ้าวันศุกร์คุณถูกสั่งให้ทำ เกล็ดหิมะ 600 ชิ้น ให้เสร็จวันอังคาร คุณก็ต้องงัดทางลัดสารพัดออกมา เพื่อนร่วมงานก็ทำมันละลาย ทุกอย่างปนกันมั่วไปหมด แล้วเอาปิกัสโซไปพิงกองประติมากรรมประหลาดนั้น และสัปดาห์หน้าก็ ตักหิมะมาเพิ่ม เพื่อไม่ให้ปิกัสโซล้ม
  • มีทฤษฎีว่าถ้าทุกคนทำตามมาตรฐาน (standards) ปัญหาจะหมดไป แต่ในความจริง มาตรฐานมีมากกว่าสิ่งที่คอมพิวเตอร์ทำได้จริง และยังถูกบิดตามรสนิยมส่วนตัวอีก จนโค้ดเบสเดียวกันมี วิธีทำงานเดียวกันได้เป็นสิบ ๆ แบบ
  • ช่วงหลายสัปดาห์แรกในงานใหม่ ต่อให้รู้ทุกภาษา เฟรมเวิร์ก และมาตรฐาน ก็ยังหมดเวลาไปกับการทำความเข้าใจว่าโปรแกรมนี้ทำงานอย่างไร เพราะมาตรฐานนั้นเป็น ยูนิคอร์น

มีแต่ความมืดอยู่เสมอ

  • อุปมาจากตู้เก็บของตอนเด็ก: พอคลานเข้าไป ผนังด้านหลังก็ถอยออกกลายเป็นชั้นวางของ แล้วพอเงยหน้าขึ้นอีกทีก็พบ ความว่างเปล่าสัมบูรณ์ของช่องคลานใต้หลังคาที่แสงส่องไม่ถึง และคุณก็รู้สึกได้ทันทีว่ามีสัตว์ประหลาดที่คุณต้องใช้ไฟฉายกับตุ๊กตาคอยขวางไว้ทุกคืนอาศัยอยู่ตรงนั้น
  • การเรียนเขียนโปรแกรมก็เหมือนกัน: คุณเรียนรู้เครื่องมือที่มีประโยชน์ พอมองไปรอบ ๆ ก็มีเครื่องมือใหม่อีก และเครื่องมือนั้นจะเผยให้เห็น ความสยองไร้ก้นบึ้ง ที่อยู่ข้างเตียงคุณมาตลอด
  • ความจริงของนักพัฒนาเว็บทั่วไป
    • ต่อให้คุ้นกับภาษาโปรแกรม 12 ภาษา พร้อมไลบรารี มาตรฐาน และโปรโตคอลนับไม่ถ้วน ก็ยังต้องเรียนของใหม่เพิ่มทุกสัปดาห์
    • ต้องคอยเช็กว่าเครื่องมือเดิมหลายร้อยตัวถูกอัปเดตหรือพังหรือยัง และตรวจดูว่า บั๊กที่เคยเอามาใช้อย่างชาญฉลาดตอนเมาช่วงสุดสัปดาห์ ยังไม่ได้ถูกแก้
    • คิดว่าทุกอย่างทันสมัยดีแล้ว แต่อยู่ ๆ ก็พังทั้งหมด
  • ตัวอย่างสาเหตุที่พัง: มีใครบางคนตัดสินใจให้ 1/0 ใช้แทน Infinity ได้ แล้วอีกคนก็ทำให้มันกลายเป็น ข้อผิดพลาดในคอมไพเลอร์ โดยไม่บอกใคร ผลคือแม้แต่ผู้เชี่ยวชาญก็ต้องใช้เวลา 6 ชั่วโมงกว่าจะหาต้นตอเจอ
  • แม้แต่ความเชี่ยวชาญในสายงานของตัวเองก็ยังเป็นเพียงเศษเสี้ยวเล็กมากของวิทยาการคอมพิวเตอร์ทั้งหมด และ ไม่มีคนสักคนเดียวที่รู้ว่า MacBook อายุ 5 ปีเครื่องหนึ่งทำงานอย่างไรทั้งหมด
  • เหตุผลที่คนพูดว่า "ลองปิดแล้วเปิดใหม่หรือยัง" ก็เพราะไม่รู้จริง ๆ ว่ามีอะไรผิด จึงทำให้คอมพิวเตอร์เข้าสู่ภาวะโคม่าแล้ว ปล่อยให้ทีมหมออัตโนมัติในตัว จัดการ

อินเทอร์เน็ตคือขุมนรกพิเศษในตัวมันเอง

  • ต่อให้เป็นเว็บแนวรถเข็นช็อปปิงที่มีหน้าไดนามิกแค่ 3 หน้า ก็ยังต้องมี ทีมดูแลตลอด 24 ชั่วโมง เพราะทุกอย่างพังอยู่ตลอดเวลา ทุกที่ และกับทุกคน
  • ณ ขณะนี้เอง พนักงาน Facebook กำลังรับมือข้อความผิดพลาดนับหมื่น รายหนึ่งในออฟฟิศ Google ไม่ได้นอนมา 3 วันแล้ว และมีโปรแกรมเมอร์ฐานข้อมูลที่ไหนสักแห่งนั่งท่ามกลางขวด Mountain Dew เปล่า ๆ จนคิดว่าสามีตายไปแล้ว
  • ถ้าผู้ดูแลระบบทุกคนลุกไปกินข้าวพร้อมกัน ก่อนจะถึงร้านเดลีก็คงต้อง สู้กับฝูงกลายพันธุ์เพื่อแย่งอาหารกระป๋อง แล้ว
  • เงินมูลค่าหลายล้านล้านดอลลาร์กำลังพึ่งพาข้อตกลงแบบไม่เป็นทางการและโค้ดที่มีคอมเมนต์จากเมื่อ 10 ปีก่อนว่า "TODO: FIX THIS IT'S A REALLY DANGEROUS HACK"
  • มีกลุ่มคนที่โจมตีอินเทอร์เน็ตไปทั่วทั้งเพื่อข่าวกรอง เพื่อผลประโยชน์ หรือเพราะเบื่อ และ 4chan แค่อารมณ์เสียไปครึ่งบ่าย ก็อาจทำลายชีวิตกับธุรกิจของใครบางคนได้ แต่ก็เหมือนมีระเบิดนิวเคลียร์ตกเพิ่มอีกลูกในฤดูหนาวนิวเคลียร์ เลยไม่มีใครตกใจแล้ว
  • บนอินเทอร์เน็ต ถ้าคุณพูดว่า "เหมือนอันนี้จะใช้ได้เป็นบางครั้งนะ" มันก็จะกลายเป็นส่วนหนึ่งของอินเทอร์เน็ตทันที และใครก็ตามที่มีคอมพิวเตอร์กับเงินไม่กี่ร้อยดอลลาร์ก็สามารถ อัปโหลดโค้ดแฮ็กสุดสยอง ขึ้นไปทำให้ทั้งระบบแย่ลงทีละนิดได้
  • กฎลับของอินเทอร์เน็ตคือ: หลังเปิดเบราว์เซอร์ได้ 5 นาที เด็กชาวรัสเซียก็มีเลขประจำตัวประชาชนของคุณแล้ว, พอสมัครใช้งาน NSA ก็เริ่มติดตามตำแหน่งคุณ, และพอส่งอีเมล ที่อยู่ของคุณก็ไปโผล่บนป้ายโฆษณาในไนจีเรีย
  • เรื่องนี้ไม่ใช่เพราะใครไม่ใส่ใจ แต่เป็นเพราะ ทุกอย่างพังหมดและไม่มีโค้ดดี ๆ อยู่จริง ทุกคนเลยได้แต่พยายามสุดชีวิตให้มันยังพอใช้งานต่อไปได้

ไม่ใช่ว่าเราบ้า แต่เรากำลังจะบ้า

  • ERROR: Attempted to parse HTML with regular expression; system returned Cthulhu — ถ้าคุณยังขำกับมุกนี้ได้ก็ยังไม่เป็นไร แต่ถ้ามีคนถามว่า "arrayReverse" ไหม แล้วคุณตอบด้วย s/camel/_/ อย่างเป็นธรรมชาติ นั่นแปลว่าคุณ เข้าสู่ขั้นที่พูดเป็นโค้ดแล้ว
  • สมองมนุษย์ไม่ได้เก่งเรื่องตรรกะพื้นฐานเป็นพิเศษนัก แต่กลับมีอาชีพที่ต้องใช้ทั้งวันไปกับ ตรรกะที่ซับซ้อนอย่างรุนแรง
  • ถ้าคุณใช้เวลาทั้งวันไล่ตามหาจุลภาคที่หายไปในห่วงโซ่เงื่อนไขและข้อกำหนดนามธรรมขนาดมหึมา พอเงยหน้ามามองหน้าคน คุณก็ไม่รู้แล้วว่าเขาพูดจบหรือยัง — เพราะ ไม่มี semicolon
  • ยกตัวอย่างภาษาโปรแกรมประหลาด (esolang) เพื่อสาธิตผลทำลายล้างต่อสมอง
    • มีโปรแกรมที่ให้ผลลัพธ์เหมือน "Hello World" ของ C++ อยู่ในรูปแบบของ Brainfuck, Ook!, และโค้ด Perl ที่แสดงเลขมายาเป็น ASCII art หมุน 90 องศา
    • โปรแกรมเลขมายานั้น ชนะการแข่งขันมาแล้ว และในโลกแบบนี้ก็ไม่มีใครสงสัยเลยว่าทำไมบางคนถึงสูบบุหรี่วันละซอง
  • โปรแกรมเมอร์ทุกคนกำลังบังคับสมองให้ทำสิ่งที่มันไม่ได้ถูกออกแบบมาให้ทำ วันละ 10–15 ชั่วโมง สัปดาห์ละ 5–7 วัน และ ทุกคนกำลังค่อย ๆ บ้าลงทีละน้อย
  • สรุปคือ แทนที่จะยกของหนัก 50 ปอนด์ คุณได้โอกาส รับใช้ซาตานที่กำลังเล็มขนตัวเองและกินข้าวอยู่บนกะโหลกที่ถูกผ่าเปิด และสิ่งตอบแทนก็คือส่วนหนึ่งของอินเทอร์เน็ตจะยังทำงานต่อได้อีกไม่กี่วัน

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น