Agile Knowledge Layer อธิบายแบบ #:P

เริ่มจากการ อธิบายคุณค่า(Value) ทั้ง 4 ซึ่ง ก็คือการลำดับความสำคัญให้กับสิ่งที่คิดจะทำก่อนของคน Agile,

อธิบายหลักการของแนวทางปฏิบัติ(Principles) ทั้ง 12 เปรียบได้กับหลักการหลักๆที่คน Agile ใช้เป็นกรอบอ้างอิง เพื่อพิจารณาแล้วลงมือปฏิบัติจริงจัง ซึ่งต้องสนับสนุนคุณค่าทั้ง 4 ด้วย

ส่วนสุดท้าย คือ Practices หรือ เทคนิคที่คน Agile ใช้ปฏิบัติ พัฒนาซอฟแวร์ ซึ่งหลัการปฏิบัติเหล่านี้ จะต้องสอดคล้อง และสนับสนุนหลักการทั้ง 12 ซึ่งปกติคน Agile ก็จะเอาหลักปฏิบัติมาจากกระบวนการพัฒนาแบบ XP

เมื่อเขียนเป็น ภาพการส่งเสริมสนับสนุนกันของ Agile Manifesto ผมได้แบ่งเป็นชั้นๆ ซึ่ง Agile Manifesto จะคลอบคลุมชั้น Values และ Principle มันจะสนับสนุน หรือก่อให้เกิด Practices ซึ่งก็จะนำไปประยุกต์ใช้ปฏิบัติใน Process ต่างๆที่ขึ้นกับ Projects นั้นๆว่าใน Process หรือ Method อะไรซึ่งมันจะกำหนดว่ามี Process อะไรบ้างร้อยเรียงกันเป็นลำดับเพื่อพัฒนาผลิตภัณฑ์ หรือบริการใดๆก็ว่ากันไป ซึ่งแต่ละโครงการก็จะต้องพัฒนาสิ่งใดสักอย่างล่ะแล้วแต่เป้าหมายของมัน แต่จุดประสงค์ก็เพื่อ สนับสนุนองค์กรณ์(Organization)* ด้านใดสักด้านหนึ่ง  (เพราะถ้าไม่สนับสนุนองค์กรณ์เลย ก็ไม่รู้จะคิดโครงการนี้ขึ้นมาทำไมก็ไม่รู้) แสดงเป็น Agile Knowledge Layer แบ่งเป็น 6 ชั้น เพื่อใช้อธิบายในแบบของผมได้ง่ายๆ ตามข้างล่างนี้

Agile Knowledge Layer

 

* องค์กร หรือ Organization ในที่นี้ขึ้นอยู่กับบริบทของลูกค้า เช่น ลูกค้าเป็นธุรกิจประกันภัย องค์กรก็คือธุรกิจประกันภัย, ลูกค้าเป็นคนในประเทศไทย องค์กรในที่นี้ก็จะหมายถึง ปัญหาของผู้คนในประเทศไทย ที่ลูกค้าของเราสนใจ เป็นต้น

จากภาพ จะเริ่มอธิบาย จาก Organization หรือ Values ก่อนก็ได้ เพราะ Organization สามารถรับเอา Agile Manifesto เข้าไปก่อน หรือ แต่ละบุคคลรับเอา Agile Values ไว้ก่อนก็สามารถขับเคลื่อนไปยังทีมงานด้วย Principles จนทำให้องค์กรเป็น Agile ได้เหมือนกัน ซึ่งตรงนี้ก็จะเรียกได้ว่า Agile Culture แล้ว Agile Value และ Principles ของแต่ละคนนั้น ก็คือ Agile Mindset นั่นเอง

ผมขอเริ่มจาก ในระดับ Values ก่อนซึ่งเป็นส่วนของบุคคล แต่ละคนที่มีเป้าหมายเชิงคุณค่าเหมือนกัน เกิดการขับเคลื่อนให้เกิดหลักการร่วมกันกำหนด Principles จาก Principles  ร่วมกันนั้นก็ได้ ก่อเกิด Practices หรือ Patterns เพื่อใช้ในการปฏิบัติพัฒนาซอฟแวร์ขึ้นมา ซึ่งแต่ละหลักปฏิบัตินั้น ก็เพื่อแก้ปัญหาต่างๆใน Process หรือ ขั้นตอนการพัฒนาซอฟแวร์ในแต่ละส่วน ในแต่ละส่วนของ Process นั้นมีลำดับขั้นตอนของงานหรือ Flow ของกระบวนการเพื่อให้บรรลุเป้าหมายของ Projects เพื่อแก้ปัญหาใน Organization ต่างๆไงล่ะ

ใน Agile Manifesto นั้น ได้กำหนด คุณค่า(Values) และ หลักการ(Principles) อันเป็นมูลฐานสำคัญไว้ให้พวกเราแล้ว ดังต่อไปนี้

4 คุณค่า ที่พวกเราคน Agile ให้ความสำคัญก่อน ได้แก่

” เราให้ความสำคัญกับ คนและการมีปฎิสัมพันธ์กัน มากกว่าการทำตามขั้นตอนและเครื่องมือ “

ความเชี่ยวชาญเฉพาะอันเป็นอัตลักษ์ของแต่ละบุคคล และการจัดการงาน เพื่อทำงานเป็นทีมที่การตัดสินใจมาจากภายในทีมนั้นเอง สำคัญมากกว่า เครื่องมือ, เทคนิค หรือ กระบวนการ ขั้นตอนใดๆ

” เราให้ความสำคัญกับ ซอฟต์แวร์ที่นำไปใช้งานได้จริง มากกว่าเอกสารที่ครบถ้วนสมบูรณ์ “

ซอฟแวร์ที่ใช้งานและ มีประโยชน์ได้กับลูกค้าของเรา สำคัญมากกว่า เอกสาร หรือ artiface ใดๆที่ยังไม่ได้พัฒนา แล้ว build ออกมาเป็นซอฟแวร์ที่ใช้งานได้จริง เช่น feature list/user stories/requrments ที่ยังไม่ได้ออกแบบ, code ที่ยังไม่ได้ unit test/integartion test หรือ ผ่าน code analysis, UML diagram ที่ยังไม่ได้ code, ซอฟแวร์ที่สร้างออกมาแล้วแต่ลูกค้ายังไม่ยอมรับ หรือจ่ายตัง, เอกสาร plan ที่มีแต่กิจกรรม, งบประมาณ, และ เวลาส่งมอบ แต่ยังไม่ได้ code เป็นต้น

” เราให้ความสำคัญกับ ร่วมมือทำงานกับลูกค้า มากกว่าการต่อรองให้เป็นไปตามสัญญา “

การทำงานร่วมกับลูกค้าของเรา สำคัญมากกว่า ตัวสัญญา ที่เราและลูกค้าได้กำหนดตกลงกันไว้อันเป็นอดีตไปแล้ว เพราะพวกเราเข้าใจในสภาวะที่ไม่แน่นอนของซอฟแวร์ อันเป็นสิ่งจำเป็นในการแก้ปัญหาในองค์กร(Organization) ของลูกค้า

” เราให้ความสำคัญกับ การตอบรับกับการเปลี่ยนแปลง มากกว่าการทำตามแผนที่วางไว้ “

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

จากข้างต้น เป็นคุณค่าที่คน Agile ให้ความสำคัญก่อน ส่วนคุณค่าอื่นๆ ในมาตรฐานขององค์กรของลูกค้านั้น เราก็ให้ความสำคัญด้วย ไม่ได้ตัดออกไป หรือละเลยแต่อย่างใด เพียงแต่หากมีหนทางที่เป็นไปได้ ที่เดินไปสู่คุณค่าทั้ง 4 ที่เรากล่าวไว้แล้วนั้น พวกเราก็จะให้ความสำคัญ แล้วก้าวเดินต่อไปในหนทางนั้นก่อนเสมอ

จากความคิดคุณค่า อันเป็นลำดับความสำคัญของพวกเรา จึงทำให้เราร่วมกันกำหนดหลักการ เพื่อเป็น แนวทางให้คนที่คิดเหมือนเรา เป็นหลักไว้ 12 ข้อ ดังนี้ http://agilemanifesto.org/iso/th/principles.html

หลักการเพื่อเป็นแนวทางในการปฏิบัติทั้ง 12 ขออณุญาติ อ้างอิงตาม URL ข้างต้น เมื่อ อ่านจบแล้ว สรุปหลักการที่ สนับสนุนคุณค่าทั้ง 4 ของเรา ได้ตาม ตามรางข้างล่างนี้

Agile Values & Principles Map

 

ในส่วนของ Practices (เช่น CI, CD, TDD/ATDD/BDD, Startup Meeting, Pair Programming, Clean Code, Retrospective) , Process หรือ Framework หรือ Work Flow (เช่น Scrum/XP/RUP/DSDM/Kanban/SEMAT/DAD), Projects (เช่น Product Discovery, Design Thinking, Lean Startup)**  , และ Organization(เช่น Projects Portfolio Management, Competitive Advantage, Decision Making) เมื่อมีเวลาและความรู้เพียงพอแล้วก็จะมาเขียนต่อครับ แต่ไม่รู้เมื่อไร

** ในวงเล็บเป็นเพียงตัวอย่าง ซึ่งบาง Process ก็มีกำหนด Practices หรือ กำหนดชนิดของ Projects ไว้เฉพาะอย่างไว้แล้วเช่น XP หรือไม่ก็ กำหนดเป็น Framework ที่มี Process หลักๆไว้ส่วน Practices ก็ให้หามาใส่เข้าไปเอง เช่น Scrum เป็นต้น

ผมขออณุญาติแชร์ไว้เพียงแค่นี้ครับ

 

ขอบคุณครับ

#:P

Advertisements

#agile