mediocrites-your-true-god-2
วันนี้อ่านเรื่องของ ไมเกรน (Migraine)
พบว่าอาการของ ไมเกรน นั้นมันมีความซับซ้อนมากๆ
แต่อาการหลักคือ ปวดหัวอย่างรุนแรง
บางคนอาจจะคลื่นไส้อาเจียน
สายตาพล่ามัว หรือ เห็นแสงระยิบระยับ

ส่วนการรักษา เห็นส่วนใหญ่ก็จะกินยาแก้ปวด รวมทั้ง พักผ่อนให้เพียงพอ
แต่แปลกนะ ไม่เกรน มันก็ชอบกลับมาเรื่อยๆ

เมื่อนำ Migraine มาเปรียบเทียบในการพัฒนา software ล่ะ ?
มันจะเกี่ยวข้องกันอย่างไร ?

เริ่มที่ความซับซ้อนของอาการ Migraine

มันสามารถเปรียบเทียบได้กับ Legacy code หรือเปล่านะ
หรือว่าระบบงานที่มีความซับซ้อน
ทำให้ทีมพัฒนาปวดหัวอย่างรุนแรง
ส่งผลทำให้งานเข้าทีมพัฒนาทุกๆ คน
ไม่ว่าจะต้องไปแก้ไข สัมผัสกับ Legacy code เหล่านั้นหรือไม่ก็ตาม
เพียงแค่เดินผ่าน คุณก็น่าจะรับรู้ได้ถึงพลังความน่ากลัว !!

และสิ่งที่เหมือนกับ Migraine ก็คือ
มักจะไม่แก้ไขที่ต้นเหตุของปัญหา
หรือบางครั้งรับรู้ถึงปัญหา แต่ไม่อยากแก้ไข
เพราะว่า มันสลับซับซ้อนมากๆ

มักจะแก้ไขปัญหาเฉพาะหน้า เพื่อให้ระบบมันทำงานได้เท่านั้น
เหมือนกับการกินยาแก้ปวดเพื่อระงับมันไว้เท่านั้น
และเมื่อถึงเวลา เงื่อนไขหนึ่งๆ ปัญหาก็จะกลับมา
ทำให้ทีมพัฒนา และ ทีมที่ดูแลระบบปวดหัวอีกครั้ง

ซึ่งมันจะเป็นแบบนี้ไปตลอดชั่วชีวิตของระบบนั้น
หรือตลอดชีวิตของทีมพัฒนา
โดยส่วนมากทีมจะล้มหายตายจากไปก่อนระบบเสมอ !!

เขาบอกไว้ว่า Migraine มันเกิดจากการบีบตัวและคลายตัว

ของหลอดเลือดแดงในสมอง มากกว่าปกติ
เหมือนกับการพัฒนา software เลยนะ
ที่มักจะถูกกดดันจากด้านบนลงมาข้างล่าง ตามฐานเงินเดือน
รวมทั้งถูกกดดันด้วย requirement จำนวนมาก
ในเวลาการทำงานที่สั้นๆ (Deadline)
ส่งผลทำให้ปวดหัว และ ป่วยกันอย่างมาก
นี่มันคือ การตายผ่อนส่งหรือเปล่านะ !!

ปัจจัยที่ทำให้เป็น Migraine ประกอบไปด้วย

ความเครียด
การอดนอน
ขาดการพักผ่อน
ทำงานหนักมากเกินไป
เครื่องดื่มที่มีแอลกอฮอล์

นี่มันคือ สิ่งที่ทีมพัฒนา software ต้องพบเจอทั้งหมดเลยหรือเปล่านะ ?
ดังนั้น Migraine มันเป็นของคู่กับการพัฒนา software หรือเปล่านะ ?

เมื่อไรล่ะ ที่ Migraine มันจะหาย ?

เขาบอกว่ามันจะเป็นโรคเรื้อรังเป็นปีๆ หรือ 10 ปีกันเลยทีเดียว
ซึ่งมันสร้างความสิตกกังวลให้คนที่เป็นอย่างมาก
ว่าอาจจะมีความผิดปรกติอะไรในสมองหรือเปล่านะ เช่นเนื้องอกในสมอง
และกลัวว่ามันจะทำให้เป็นอัมพาต หรือ พิการ ในอนาคต ก็ได้นะ

ซึ่งมันไม่ได้ต่างกับ Legacy code เลยนะ
ที่เรามักจะอยู่กับมันเป็นปีๆ หรือ สิบๆ ปีกันเลยทีเดียว
การจะเข้าไปแก้ไข หรือ เพิ่ม feature ใดๆ เข้าไปก็ตาม
จะต้องใช้ทั้งเวลา และ ค่าใช้จ่ายที่สูงมาก
แถมยังกลัวอีกว่า สิ่งที่ทำการเพิ่ม และ แก้ไขไปนั้น
มันจะส่งผลกระทบให้ส่วนอื่นๆ ของระบบพังหรือเปล่า
บ่อยครั้งพบว่า มันมักจะกระทบมากอีกด้วย

ทำให้ใครๆ ก็ไม่อยากยุ่งกลับระบบนั้นมากนัก
ดูได้จากอัตรา turn over ของทีมที่ดูแลได้เลย

การรักษา Migraine เป็นอย่างไร ?

ส่วนใหญ่คือ การกินยาแก้ปวด
พักผ่อนให้เพียงพอ
อย่าทำงานหนัก หรือ ทำงานนานๆ

แต่เมื่ออาการหายไปแล้ว ก็จะกลับไปอยู่ในสภาวะเสี่ยงต่อการเป็น Migraine เหมือนเดิม
เป็นแบบนี้ซ้ำแล้วซ้ำเล่า แบบไม่มีที่สิ้นสุด
มันเหมือนกับการทำงานกับ Legacy code เลยนะ
รู้ทั้งรู้ว่าตรงไหนมันมีปัญหา มันไม่ดี

แต่กลับไม่มีใครกล้าที่จะแก้ไขให้มันดีขึ้น
มีแต่ความกลัว ว่าถ้าผิดแล้วมันจะต้องรับผิดชอบ
หรือกลัวงานเข้า … ทำให้ระบบมันน่ากลัว และ แย่ลงไปเรื่อยๆ
เป็นแบบนี้ซ้ำแล้วซ้ำเล่า
ส่งต่อรุ่นต่อรุ่น
สุดท้ายเมื่อไม่มีทางออก หรือ ไม่สามารถเดินต่อไป
เราก็จะสร้างมันขึ้นมาใหม่ ….
แต่ก็วนเข้าสู่งวัฎจักรเดิมเช่นเคย

แปลกนะ ที่คนเราก็
เรียนมาเยอะ
รู้ก็เยอะ
ประสบการณ์ก็เยอะ
เจ็บมาก็เยอะ
แต่ไม่ได้เอามาใช้เพื่อปรับปรุงมันเลย …

เมื่อรู้แบบนี้แล้วการกินยา
เพื่อบรรเทาความเจ็บปวดนั้น มันก็เป็นเพียงการแก้ไขปัญหาเฉพาะหน้าเท่านั้น
ดังนั้น เรามาป้องกัน หรือ ลดสภาวะที่ล่อแหลมต่อ การเป็น Migraine กันดีกว่าไหม ?

สาเหตุของความเครียดคืออะไร ?

ทำไมต้องทำงานหนัก ?
ทำไมถึงพักผ่อนไม่เพียงพอ ?
ทำไมต้องทำงานเกิน 40 ชั่วโมงต่อสัปดาห์ ?
ทำไมคุณกลัว Legacy code ?
ทำอย่างไรคุณถึงจะไม่กลัว Legacy code ?
ลองตอบคำถาม จะนำไปสู่หนทางของคุณเอง …

การกินอาหารมันก็ช่วยลดความเสี่ยงของ Migraine ลงไปได้นะ
เช่น ขิง น้ำมันมะกอก ปลา อะโวคาโด กล้วยหอม ลูกพรุน ฟักทอง เมล็ดทานตะวัน และ โยเกิร์ตผลไม้ เป็นต้น
ในการพัฒนา software ก็เช่นเดียวกัน
มีทั้งแนวคิด และ แนวปฏิบัติในการพัฒนา software มากมาย
เพื่อช่วยลดความเสี่ยงต่างๆ ในการพัฒนา เช่น

  • Test-Driven Development (TDD)
  • Acceptance Test-Driven Development (ATDD)
  • Specification by Example (SBE)
  • Automated testing
  • Continuous Integration (CI)
  • Continuous Delivery (CD)

และอื่นๆ อีกมากมาย

ประเด็นคือ

คุณกินอาหารเหล่านี้บ้างหรือไม่ ?
คุณนำแนวปฏิบัติเหล่านี้มาใช้บ้างหรือไม่ ?
หรือชอบเป็น Migraine กัน ?