Lean Software Development ปัจจัยสำคัญเพื่อการพัฒนาอุตสาหกรรมที่ยั่งยืน

Lean Software Development  (LSD) 

” ประวัติของ คำว่า Lean  “

  • Lean คือระบบของกระบวนการผลิตที่เน้นการ จัดการความสิ้นเปลืองในการผลิต เพื่อให้การผลิตมีประสิทธฺภาพสูงสุด
  • การใช้ทรัพยากรเพื่อประโยชน์อื่นนอกจากการสร้างสิ่งที่มีมูลค่า ถือว่าเป็นสิ่งที่สิ้นเปลื่อง
  • สิ่งของหรือกระบวนการใด ๆ จะถือว่ามีมูลค่า ก็ต่อเมื่อลูกค้ายอมจ่ายเพื่อสิ่งนั้น

Lean มีแนวคิดอยู่ 7 ประการ และมีเครื่องมือ (tools) ในการปฏิบัติทั้งหมด 22 อย่าง ดังต่อไปนี้

  1. Eliminate waste : กำจัดความสิ้นเปลือง 

     ความสิ้นเปลือง ได้แก่ 

  • สิ่งที่ไม่สามารถเพิ่มมูลค่าให้กับผลิตภัณฑ์
  • ฟังก์ชันที่ไม่จาเป็น
  • requirement ที่ไม่ชัดเจน
  • การสื่อสารและกระบวนการทำงานภายในองค์กรที่ช้า

# TOOL 1 : Learn to see wastes (มองหาความสิ้นเปลือง)

    – งานที่ทำเสร็จไปแล้วบางส่วน (partially done work

   –  งานเอกสาร และเอกสารเพิ่มเติม

    – ฟีเจอร์อื่นๆเพิ่มเติม

    – การสร้างสิ่งที่ผิดจากความต้องการ

   – การรอข้อมูลที่จะนามาใช้ทางาน

   – การสับเปลี่ยนงานที่ทำอยู่

    – ข้อบกพร่องในซอฟต์แวร์

# TOOL 2: Learn to reduce waset ( เรียนรู้ที่จะลดความสิ้นเปลือง )

–  สร้าง value stream mapping เพื่อหาสิ่งที่ลดประสิทธิภาพของการผลิต

–  ถามคำถามกับตัวเองเสมอว่า เรากาลังทำสิ่งๆนั้นไปเพื่ออะไร

 –  ตัดกระบวนการด้านบริหารจัดการที่ไม่จำเป็นออก และมีการออกแบบกระบวนการที่มีประสิทธิภาพทดแทน

2. Amplify Learning 

    หลักการเบื่องต้นที่นำพาสู่การ เรียนรู้ความต้องการลูกค้า

  • พยายามมุ่งเน้นไปที่จุดประสงค์ของการใช้งานที่แท้จริง
  • พยายามหาวิธีที่จะแก้ไขปัญหาใหม่ๆ
  • พยายามออกแบบโดยใช้หลักการทดลองทำโดยใช้ระยะเวลาสั้นๆในการพิสูจน์
  • การตอบรับจากลูกค้าในแต่ละรอบ เป็นสิ่งสำคัญ

# Tool 3  ใช้ Feedback เป็นหลักในการพัฒนา

  • พยายามสร้าง และ เพิ่มผลตอบรับจากลูกค้า ระหว่างการพัฒนาให้มากที่สุด
  • พยายามทดสอบระบบให้บ่อยที่สุด อย่าทำให้ปัญหามันสะสม
  • ยอมรับความคิดเห็นจากลูกค้า นำมาวิเคาระห์ แล้วกลับไปแก้งานให้เร็วที่สุด
  • ไม่ควรมีการเก็บ requirement สำหรับ UI ในเวอร์ชั่นทดลอง

#Tool 4 : Iteration

  •  Iteration คือ วงจรของการพัฒนาซอฟแวร์ ซึ่งประกอบไปด้วย
    - Design > Programmed > Tested > Integrated > Delivered
  •   ซึ่งทำให้ ได้รับผลตอบรับจากลูกค้ามากขึ้น ทำให้เราสามารถจัดการงานได้มีประสิทธิภาพมาก ขึ้น
  •   ทำให้ ไม่ต้องรีบด่วนตัดสินใจในประเด็นต่างๆ ซึ่งอาจจะทำให้ตัดสินใจพลาดได้ เพราะเรา สามารถทราบผลการตัดสินใจได้ตลอดเวลาที่จบ iteration
  •   การจะทำ Iteration จำเป็นต้องมี การวางแผนเป็นทีม และ พยายามวนรอบ iteration ให้ถี่ที่สุด และ สิ่งสำคัญคือต้องการความร่วมมือกันของคนในทีม
  •   สามารถทำให้ทีมจัดการงานได้อย่างยืดหยุ่น และ พอใจทุกฝ่ายมากที่สุดเท่าที่จะทำได้ และยึดหลักทำสิ่งที่สำคัญที่สุดก่อนเป็นสำคัญ
  •   การวนรอบเพื่อรับผลตอบรับจากลูกค้าบ่อย ทำให้งานที่ออกมาตรงตามที่ลูกค้าต้องการมาก ที่สุด และงานสามารถพัฒนาไปในเส้นทางที่ถูกต้อง

#Tool 5  Synchronization

  •  คือการทาให้การพัฒนาส่วนใดๆ ที่มีผู้เกี่ยวข้องหลายๆคน สามารถเข้าใจจุดประสงค์ของงานที่ ตรงกัน เพื่อกาจัดปัญหาความเข้าใจคลาดเคลื่อน
  •   ควรทำการ automated test ทำการตรวจสอบปัญหาตั้งแต่ตอนที่มันเกิดขึ้น เพราะมันอาจ ทำให้เกิดปัญหาที่ใหญ่ขึ้นเรื่อยๆได้ และ ที่สาคัญคือ ช่วยในเรื่องความเข้าใจตรงกันของ นักพัฒนา ที่อาจทำให้เกิดปัญหา แต่ละส่วนในการพัฒนาเข้ากันไม่ได้
  • ควรทำการรวมงานของคนทั้งทีมเข้าด้วยกันทุกวัน และ ร่วมงานข้ามทีมอย่างน้อยสัปดาห์ละ ครั้ง

#Tool 6 : Set Base Development

  •  คือการนำปัญหามาวิเคราะห์ แล้วพยายามคิดการแก้ปัญหาในหลายๆทาง แล้วอภิปรายถึง ผลดีผลเสีย หลังจากนั้นทาการคานึงถึงข้อจากัดต่างๆในการพัฒนา แล้วเลือกวิธีการแก้ปัญหา ที่ดีที่สุด

    3 Decide ad Late as Possible

    •   ไม่ใช่การผัดวันประกันพรุ่ง แต่เป็นการคงตัวเลือก คงการตัดสินใจที่เด็ด ขาดไว้เท่าที่ จะทำได้ แต่อย่าปล่อยให้อะไรไม่ชัดเจนนานเกินไป
    •   ปัญหาส่วนมากของการพัฒนาซอฟแวร์แบบเป็นขั้นตอนตามปรกติ คือการลง รายละเอียดเร็วเกินไป เรียกว่า “ depth-first ”ซึ่งสิ่งที่ควรจะทำคือ “ breadth – first ” นั่นคือพยายามมองเป็น ภาพรวมก่อนที่จะลงรายละเอียดลึกๆ
    •   เหตุผลที่ต้องทำการมองภาพรวมก่อน เพราะความต้องการของลูกค้ามักจะไม่คงที่ และลูกค้าบางคนจะยังไม่รู้สิ่งที่ตัวเองต้องการ จนกว่าจะได้เห็นผลงานจริงๆ

#Tool 7: Options Thinking

    • การสร้างรายละเอียดแผนงาน (Detailed plans) เป็นการสร้างการตัดสินใจให้มั่นคง
    • การวางแผนและทำนาย ไม่ใช่สิ่งที่ไม่ดี แต่ควรสร้างแผนที่สามารถเปลี่ยนแปลงได้อยู่เสมอ

      #Tool 8 The Last Responsible

      •   ช่วงเวลาที่ใช้ในการตัดสินใจในการเลือกจัดการสิ่งทำสิ่งที่ต่าง ๆ
      •   ไม่ใช่การผัดวันประกันพรุ่ง

        # Tool 9 Making Decisions ส่วนใหญ่การตัดสินใจโดยสังหรณ์ใจสาคญักว่าการตัดสินใจแบบสมเหตุสมผล

        Depth First

        Breath First

        สร้างขอ้ตกลงร่วมกันตั้งแต่แรกๆ

        ทาให้ข้อตกลงร่วมกันลา้ช้า

        ตัดสินใจด้วยเหตุผล

        ตัดสินใจด้วยสัญชาตญาณ

        ใช้การทานายและสมมติฐานเป็นหลักในการ ตัดสินใจ

        ใช้ข้อมูลทันสมัยและกระแสตอบรับในการ ตัดสินใจ

        4  Deliver as fast as possible

        ทำไมต้องส่งมอบให้เร็ว ?

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

         

# Tool 10  Pull Systems

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

          # Tool 11  Queueing Theory

          หัวใจหลักก็คือการลดเวลาของแต่ละ cycle หรือเวลาที่ใช้ในการดาเนินการตั้งแต่จบกระบวนการหนึ่งถึงอีกกระบวนการหนึ่ง

          #Tool 12 Cost of Delay

          •   การทำงานแบบ Rapid development ช่วยให้ประหยัดเวลาและคา่ ใช้จ่ายแต่ฝ่ายบริหารอาจจะไม่คิดเช่นนั้น
          •   ตัดสินใจว่าอะไรที่ส่งมอบช้าแล้วจะทำให้ต้องเสียค่าใช้จ่ายเพิ่มโดยใช้บัญชีรายรับ รายจ่าย
          •   สร้างแบบจาลองทางด้านเศรษฐกิจของแอปพลิเคชัน
          •   ใช้บัญชีรายรับรายจา่ยและแบบจาลองทางเศรษฐกิจเพื่อช่วยในการตัดสินใจ

5 Empower the Teamอะไรเป็นองค์กรที่เติบโตแล้ว ?

          • สมมติฐาน 1 : องค์กรที่โตแล้วจะสนใจระบบทั้งหมดขององค์กร ไม่ได้มุ่งเน้นเป็นจุดย้อยๆในองค์กร
          • สมมติฐาน 2 : องค์กรที่โตแล้วจะมุ่งเน้นไปที่การเรียนรู้อย่างมีประสิทธิภาพ และการเพิ่ม ความสามารถของคนที่จะต้องตัดสินใจ

#Tool 13 : Self-Determination

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

#Tool 14: Motivation (แรงจูงใจ)

  •   ต้องสนใจจุดประสงค์ของงานมากกว่าสนใจตัวเอง
  •   จะต้องมีความชัดเจน
  •   จะต้องประสบความสาเร็จ
  •   ทีมจะต้องมีการบริการลูกค้า
  •   ทำให้มันเป็นความมุ่งมั่นของตัวพวกเขาเอง
  •   หน้าที่ของฝ่ายบริหารคือ ให้การสนับสนุนทีมในเรื่องทรัพยากร คอยให้คาแนะนาลูกทีมและคอยคุ้มครองพวกเขา

++++++The building blocks (การสร้างแรงจูงใจ)+++++++++

ทุกคนจะต้องมีความชัดเจนในงานที่ต้องทา และมุ่งมั่นที่จะทางานให้ประสบความสาเร็จ ร่วมกัน ถ้าแพ้ก็แพ้ด้วยกัน ถ้าชนะก็ชนะด้วยกัน

  •   เครื่องป้องกัน (safety) (พยายามอย่าทำให้ทีมหมดกาลังใจ)
  •   ความมีประสิทธิภาพ และความมีวินัย (เป็นแรงจูงใจที่ดีมากที่ได้เป็นส่วนหนึ่งของทีมที่ชนะ และทำให้มีความมั่นใจในการทำงาน

#Tool 15 : Leadership (ความเป็นผู้นา)

Managers

Leaders

จัดการกับความซับซ้อน
ƒ -วางแผนและดูแลเรื่องงบประมาณ ƒ -จัดระเบียบการทางานและบุคลากร ƒ -ติดตามและควบคุมการทางาน

จัดการกับการเปลี่ยนแปลง ƒ – กาหนดทิศทางของงาน ƒ -จัดคน
ƒ -ช่วยให้เกิดแรงจูงใจ

# Tool 16 : Expertise (ความชำนาญ)

* ให้ทีมได้มีโอกาสมีส่วนร่วมกับกลุ่มคนที่มีความเชี่ยวชาญในด้านต่างๆ เช่น เข้าร่วมการสัมนาอบรม ต่าง ๆ

*  ส่งเสริมให้เกิดการพัฒนาตัวเองของคนในทีม

6 Build Integrity In – สร้างความสมบูรณ์ของซอฟต์แวร์

  •  #Tool 17  Perceived Integrity – ความสมบูรณ์ที่ลูกค้ารับรู้ได้
  • #Tool18 ConceptualIntegrity-ความสมบรูณ์ของระบบภายใน
  •  #Tool 19 Refactoring – บางครั้งระบบที่มีความซับซ้อน และเราพบวิธีแก้ปัญหาที่ดีกว่า จึงต้องมีการแก้ไขโครงสร้างระบบเพื่อให้มี Conceptual Integrity
  •  #Tool 20 Testing ต้องมีการทดสอบระบบเพื่อให้แน่ใจว่า ระบบมีการทำงาน ตามที่เราต้องการจริงๆ

7 See the whole

System Thinking & System Dynamic Sub-optimization
1. ถ้าเป็นระบบที่ซับซ้อนให้เริ่มจากการแบ่งส่วนของระบบให้เป็นระบบย่อยๆแล้วจัดการทีละส่วน ก่อน
2. วัดความสามารถแต่ละส่วนทำให้ลดประสิทธิภาพทั้งระบบ (ต้อง
วัความสามารถทั้งระบบ)

 #Tool 21: With measurement

การที่เรา optimize ทุกๆ ส่วนเป็นวิธีที่ไม่สมควร เราควร optimize ส่วนที่สำคัญมากๆ ซึ่งเราควรจะแยกแยะออกให้ได้ว่าส่วนไหนเป็นส่วนสำคัญที่เราจะ optimize ส่วนที่สำคัญส่วนใหญ่จะเป็นส่วนของ business logic จะวัดส่วนที่สำคัญได้จาก argregation

#Tool 22: Contract

Project Manager มี 4 ปัจจัยที่ต้องคำนึง เวลาจัดการบริหารงาน

1.time.  2.cost  3.quality  4.scope

siriporn JAturapuch
at GlurGeek.Com
สวัสดีค่ะ ตอนนี้ทุกคนได้เข้ามาอยู่ในเว็บไซต์ GLURGEEK
หน้าเพจนี้เป็นอีกหนึ่ง Member
แนะนำตัว
ชื่อ ศิริพร จตุรภุช
ชื่อเล่น พริ้ม (ฟรุ้งฟริ้ง) เพรา
เชียร์หน้ากากนักร้องคือ หน้ากากแอปเปิ้ลที่เฉลย ออกมาเป็น โอ๊ต ปราโมช

Leave a Reply

© 2022 GlurGeek.Com