Friday, July 08, 2005

Technic: จัดการระบบฐานความรู้ยังไงดี

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

สำหรับองค์ประกอบก็คิดว่ามันน่าจะมีของอยู่หลายๆส่วนด้วยกันดังนี้
  1. การสำรองไฟล์ข้อมูล
    • การสำเนาข้อมูลที่เขียนลงในกระดาษ (สแกนเข้ามา)
    • การทำดัชนีชื้ถึงความรู้ที่เข้าถึงบ่อยๆเช่น source code
    • การรวบรวม reference (เช่น ลิงค์ไปที่สำคัญๆ)
      3 กับ 4 ในภาพรวมก็คือพวกเดียวกัน
    • ระบบการจัดเก็บเอกสารและงานของตัวเอง
    • ระบบเวอร์ชันคอนโทรล (CVS หรือ Version Cue ทำนองเนี้ย)
    • การบันทึกความรู้ที่ได้รับเข้ามาใหม่ น่าจะมีเป็นเวอร์ชัน ร่าง พรีวิว และ รีวิว
    • การแสดงความรู้ของตัวเองเพื่อให้เข้าถึงง่ายๆ ค้นหา จัดหมวด และ เอาขึ้นเว็บ

    • คิดว่าจะทำข้อมูลเกี่ยวกับงานออกเป็นหลายๆกลุ่มคือ กลุ่มซอร์สโค้ด, กลุ่มอินพุต, กลุ่มเอาต์พุททดลอง, กลุ่มเอาต์พุทสำคัญ, กลุ่มเอกสารข้อความ, เอกสารรูปภาพ, เอกสารไดอะแกรม, เอกสารฐานข้อมูล (พวกเอ็กเซลทำนองนั้น), กลุ่มไบนารีและเอกสารของไบนารีนั้น (พวกของที่ไปดาวน์โหลดมา)

    • พวกของพวกนั้นจะแบ่งออกเป็นสี่ช่วงคือ Whimsical (ร่างแบบมั่วๆเพื่อเป็นจุดเริ่มต้น) Developing (เริ่มรู้แล้วว่าจะเอาอะไรและจะทำยังไง) Preview (เสร็จแล้วแต่ว่ายังไม่ได้ตรวจทานอย่างเป็นระบบ) และ Reviewed (ตรวจทานแล้ว)

      จริงๆแล้วการพัฒนาจะกระทำที่ไดเรกทอรี Whimsical และเมื่อเริ่มรู้แล้วว่าจะใช้อะไรบ้างและไม่ใช้อะไรบ้างก็จะก๊อปส่วนที่คิดว่าจะได้ใช้ไปใส่ที่ Developing การสำรองข้อมูลจะกระทำที่ตรงนี้เป็นหลัก การแยกออกมาเป็นสองส่วนนี้ก็เพราะว่า หากเราสำรองข้อมูลจาก Whimsical state มาไว้ เราจะงงตอนที่เราจะกลับมาเอา เพราะไม่รู้ว่าจะเอาอันไหนดี มันปนกันไปหมด จึงต้องแยกเอาพวกเนื้อๆออกมาสำรอง การสำรองข้อมูลของกลุ่มนี้

      ส่วน Preview คือเวอร์ชันที่ถึงจุดสำคัญๆ (milestone) แต่ก็ยังไม่ได้ตรวจดูดีๆว่าเป็นไงบ้าง ถูกต้องหมดหรือไม่ ส่วน Reviewed คือเวอร์ชันที่เรียกได้ว่าเอาไปส่งให้สาธารณะชนดูได้แล้ว

    • โครงสร้าง Workspace จะถูกแบ่งออกไปตาม software ที่ใช้ ไม่ใช่เป็นไปตามโปรเจ็ค ดังนั้นถ้าโปรเจ็คไหนที่ดันใช้หลายโปรแกรมพัฒนาหน่อยก็จะยุ่งๆหน่อยนะ

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

      อ๊ะรู้วิธีแก้แล้ว เราควรจะจัดการปัญหานี้ด้วยการเปลี่ยนวิธีทำงาน ในทุกๆโปรเจ็คที่ทำเราจะมี static variables ไว้ทำหน้าที่่เป็นสตริงเพื่อบอก base input/output dir เสมอ วิธีนี้น่าจะใช้ได้ดีนะ

    • แล้วพวก snippet ล่ะ จะทำยังไงดี (หมายเหตุ snippet หมายความรวมถึง procedure ต่างๆเกี่ยวกับเครื่องมือด้วย)
      อืม พวกนี้ต้องมีทั้งเวอร์ชัน รีวิว/รวมศูนย์ และ เวอร์ชันกระจัดกระจาย เวอร์ชันกระจัดกระจายคือพวกที่ทำแบบลวกๆซึ่งเกิดขึ้นระหว่างการพัฒนา โดยจะใส่ไว้ใน ไดเรกทอรีของใครก็ได้ไม่เกี่ยง ส่วนเวอร์ชันแบบรีิวิวนี้จะถูกจัดทำขึ้นแบบ HTML และจะอัพโหลดขึ้นเว็บส่วนตัวเป็นการ publish ไปเลย

      การรีวิวจะทำขึ้นทุกวันอังคารและวันศุกร์คิดซะว่าเป็นการจัดห้องใหม่ แม้แต่ snippet เองก็มีสองเวอร์ชันคือ whimsical และ reviewed และใน whimsical จะมีที่เก็บโค้ดสอบตกกับโค้ดที่สอบผ่าน และโค้ดที่ยังไม่ได้ review

    • เอ้า วกกลับมาเรื่องเอาต์พุตหน่อย เอาต์พุตจะแบ่งไปตามโปรเจ็คและสถานะของมัน โดยที่เอาต์พุตจะมีสามสถานะคือ Whimsical, Maybe and Major ถ้าหาก Output มันดูพอใช้ได้เราจะก๊อปปี้มันไปใส่ไว้ที่ Maybe เผื่ออ้างอิงไว้ในอนาคต และ พอถึงสถานะสำคัญ เช่น จะเอาไปใส่ใน Thesis เราจะเอาไปใส่ไว้ใน Major

    • เรื่องรายงานเราจะแบ่งมันไปตามโปรเจ็ค ภายในไดเรกทอรีรายงานจะแบ่งได้ออกเป็นสามส่วน คือ
      Text, Figures, Diagrams (สภาพที่อีดิตได้ก่อนจะกลายเป็น figures), Databases, Whimsical(ข้างในมี figures, diagrams และ databases), Backup, และ OutsideFiles

      อย่าลืมนะพวก OutsidFiles เราจะไม่ก๊อปไปไว้หลายที่เป็นอันขาด แต่จะทำด้วยการสร้าง link ไปหามันแทน แต่จะมีการทำ Backup แบบรวมศูนย์ไว้ด้วย แต่จะไม่ใช้ที่ตรงนั้นเป็นที่อ้างอิง

      หมายเหตุ หากเป็นข้อความที่สแกนมาจากสมุดตัวเอง ก็ให้เก็บไว้ใน Text ไม่ใช่ Figures

    • พวก reference ทำไงดี ทำเป็น Tree-like menu ใน HTML/Java script เอาก็แล้วกัน สิ่งที่สำคัญก็คือมันจะต้องสามารถชี้ไปที่เอกสารสำคัญบนฮาร์ดดิสก์เราได้ด้วย ซึ่งก็อาจจะทำได้โดยการใส่ base dir ไว้นั่นเอง ส่วนมากก็คือ ลิงค์ไปที่ต่างๆนั่นเอง

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

    • ที่เราเลิกใช้บล็อกเป็นแหล่งหลัก ก็เพราะว่าพอนานๆเข้าไปเราก็หาไม่ค่อยเจอเหมือนกัน สงสัยเหมือนกันว่าทำไมเรา search blog ของตัวเองบนเครื่องเราไม่ได้ แต่ดัน search blog ของคนอื่นได้หน้าตาเฉย แถมเวลาใช้เครื่องอื่นก็ดัน search ได้อีกเช่นเดียวกัน งง

      สรุปก็คือการใช้บล็อกยังคงมีอยู่เพื่อเป็น buffer ก่อน review ดังนั้น blog ของเราจะต้องถูกรื่อมาหใหม่หมด แล้วก็จะถูก mark [Reviewed or Unreviewed] ไว้

    • ให้มีไดเรกทอรี Package สำหรับงานที่ส่งมอบด้วย โดยจัดเป็นชุดพร้อมเอกสาร โดยจะมีสองเวอร์ชัน
      1. ToCustomer จะมีแต่ของที่ลูกค้าต้องการจริงๆ
      2. ForReference จะก๊อปปี้ทุกอย่างมาไว้เท่าที่เป็นไปได้ เผื่อว่าฉุกเฉิน

    • พวกเอกสารจะมีกลุ่มที่เป็นความรู้ใหม่ด้วย ยังไม่ได้รับการรีวิวก็ให้ไปทำแบบคล้ายๆกัน โดยเริ่มไปที่ Whimsical, Preview and Reviewed เช่นกัน เอาไปใส่ที่ไดเรกทอรี NewKnowledge โดยที่พวกที่ออกจากสถานะ Preview จะไปที่ Review นั้นก็ให้จัดหมวดหมู่ภายหลังจากนั้น

    • จำไว้ให้ดีว่าเราอยากเอาความรู้เราขึ้นเว็บอย่างแรงกล้า และมีการจัดหมวดหมู่อย่างเรียบร้อยสวยงามนะ

    • เราจะเริ่มที่งานของไทยคลับก่อนละกัน คิดว่า DreamWeaver เราต้องเปลี่ยนไปใช้แบบ FTP แล้วล่ะ มันไม่ยอมให้เราใช้ SAMBA Path ผ่านทางเว็บแล้ว

    (นอกเรื่อง พึ่งสังเกตว่ามันมีปุ่ม "Add Image" ใน Blogger มาให้ด้วยแฮะ ลองใช้ดูหน่อยนะ)











    เอิ้ว ใช้งานได้ดีจริงๆ

    No comments: