Friday, April 30, 2010

อีกมุมมองหนึ่งของ Software Product Quality

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

งั้นทำไมไม่ทำให้มันดีไปเลยล่ะ


เพราะมันเป็นเรื่องยากครับ น่าแปลกที่อุตสาหกรรมด้านไอทีที่เราทำกันนั้น ดูเหมือนว่าจะเป็นอุตสาหกรรมที่ทันสมัย แต่กลับไม่มีองค์กรไหนเอาหุ่นยนต์มาช่วยเขียนโปรแกรมหรือส่งบอทไป Gathering Requirement แทนเราเลย เพราะอะไรผมคิดว่าทุกท่านก็คงรู้กันดี ดังนั้นเมื่อเป็นเช่นนี้ เราจึงต้องทำงานกันเป็นทีมครับและเมื่อดูจากการทำงานจริงตาม SDLC (Software Development Life Cycle) ที่เราใช้กันอยู่ทุกวันแล้วจะเห็นได้ว่าทุก Phrase สามารถก่อให้เกิดปัญหาด้านคุณภาพได้ทั้งนั้น ตั้งแต่ Gathering Requirement จนถึง Maintainance
ดังนั้นเพื่อเป็นการปรับความเข้าใจถึงจุดยืนของการพัฒนา Application ซักตัวผมอยากจะนำเสนอมุมมองอีกแบบเพื่อที่จะทำให้ทุกท่านเข้าใจ Software Product Quality ได้ดียิ่งขึ้นครับ





ผมมักจะเปรียบเทียบ Software Product Quality เป็นสามเหลี่ยมด้านเท่า โดยตั้งชื่อให้กับมันว่า Software Quality Triangle โดยรูปสามเหลี่ยมนี้จะมีคุณสมบัติว่า
  • เป็นสามเหลี่ยมด้านเท่าที่มีด้านและมุมเท่ากัน
  • มุมที่แรกคือ User Requirement หรือ มุมมองของผู้ใช้ Software
  • มุมที่สองคือ Requirement Specification หรือ มุมมองของ System Analyst / Business Analyst
  • มุมสุดท้ายคือ Software หรือมุมมองของ Software Developer
  • ด้านแต่ละด้านคือเส้นตรงที่เชื่อมระหว่างมุมสองมุมชื่อว่า Gap ซึ่งก็คือปัจจัยที่จะทำให้มุมทั้งสามมุมห่างออกจากกัน

แนวคิดหลักของการใช้ Software Quality Triangle นี้คือ

"ทำอย่างไรที่จะทำให้สามเหลี่ยมด้านเท่านี้มีรูปร่างเล็กที่สุด
ในอัตตราส่วนที่เท่ากัน"

ในทางทฤษฏี นั่นแปลว่าเราจะทำอย่างไรให้ Software ออกมาใกล้เคียงกับทั้ง Requirement Specification และ User Requirement มากที่สุดนั่นเอง ซึ่งในทางปฏิบัติแล้วก็เป็นที่รู้กันอยู่ว่า "ยากมาก" เนื่องจากมีปัจจัยมากมายซึ่งส่งผลต่อการลดขนาด Software Quality Triangle อย่างที่กล่าวไว้ในแนวคิดหลัก ถ้าจะด้านแต่ละด้านมาวิเคราะห์อย่างละเอียด เราจะมองเห็นปัจจัยที่ส่งผลกระทบต่อ Software Product Quality ได้ดียิ่งขึ้นครับ


User Requirements vs Requirements Specification Gap

เป็นปัจจัยพื้นฐานแต่สำคัญที่สุดในสามเส้นเกิดขึ้นจากเหตุผลที่สุด Classic ที่เราเจอกันอยู่ทุกวันนั่นก็คือ

"System Analyst / Business Analyst ไม่เข้าใจ Requirement อย่างลึกซึ้งเพียงพอ"

เช่น

  • System Analyst / Business Analyst เข้าใจ Requirement ไปคนละอย่างกับ Users
  • Requirement ไม่ชัดเจนเพียงพอที่จะพัฒนา Application
  • ปัญหาด้านการสื่อสาร เช่น เมื่อ System Analyst เข้าไปเก็บ Requirement จาก Users ดันไปใช้ภาษาเชิง Technical มากเกินไป ทำให้สื่อสารกันไม่ค่อยจะรู้เรื่อง ตีความโจทย์ไม่ออก

ดังนั้นวิธีที่จะลด User Requirements vs Requirements Specification Gap นั้นควรจะเลือกใช้วิธีสื่อสารที่เหมาะสมและชัดเจนเพื่อความเข้าใจที่ตรงกันของทั้งสองฝ่าย รวมไปถึงจากหมั่น Update Requirements Specification ให้เป็น Version ใหม่อยู่เสมอเพื่อป้องกันการเข้าใจผิด

Requirements Specification vs Software Gap

เกิดจากเหตุผลเดียวคือ

"Software Developer ไม่ Coding ตาม Requirement Specification
หรือ Technical Specification ที่ System Analyst ออกแบบมา"

ซึ่งเกิดจากหลายปัจจัย (ถ้าไม่รวม Bugs หรือ Defects) ดังนี้

  • Technical Specification ไม่ชัดเจน
  • มีการ Change Request หรือ เปลี่ยนแปลง Requirement แต่ไม่ได้แก้ไข Technical Specification ตาม ทำให้เอกสารไม่ใช่ตัวที่ใหม่ล่าสุด
  • Software Developer เพิ่มหรือแก้ไข Feature ส่วนตัวเข้าไปเอง
  • Software Developer ละเลย Requirement บางข้อไป เนื่องจาก หา Solution ไม่ได้

ดังนั้นการควบคุมและตรวจสอบทีมอย่างเข้มงวดถือเป็นอีกหนึ่งวิธีแก้ปัญหาที่จะสามารถลด Requirements Specification vs Software Gap ได้อย่างมีประสิทธิภาพ

Software vs User Requirements Gap

เส้นนี้ถ้าให้อธิบายแล้ว Software vs User Requirements Gap คือเส้นที่แปรผันตามสองเส้นแรก

  • ยิ่ง User Requirements vs Requirements Specification Gap และ Requirements Specification vs Software Gap สั้นเท่าไหร่ Software ที่ถูกพัฒนาออกมาก็จะใกล้เคียงกับความต้องการและความคาดหวังของ Users มากเท่านั้น
  • ยิ่ง User Requirements vs Requirements Specification Gap และ Requirements Specification vs Software Gap ยาวเท่าไหร่ ทีม Development งานเข้าอย่างแน่นอนเนื่องจากจะต้องทำการแก้ไข Software นั้นจนกว่า Users จะพอใจและยอมรับ ซึ่งจะก่อให้เกิดผลเสียต่อองค์กรในอีกหลายด้าน

Software Quality Triangle ในความเป็นจริง

แต่ในความเป็นจริงแล้ว Software Quality Triangle ที่เราทำกันอยู่ปัจจุบันไม่ได้เป็นรูปสามเหลี่ยมด้านเท่าอย่างที่วาดฝันไว้ หลายองค์กรไม่ได้ใส่ใจกับ Software Product Quality เท่าที่ควร ซึ่งนั่นส่งผลให้ Software Quality Triangle เปลี่ยนแปลงรูปร่างไปเป็น 4 รูปแบบหลักดังนี้

รูปแบบที่ 1


  • System Analyst เก็บ Requirement ไม่ดีพอ
  • Software Developer พัฒนาซอร์ฟแวร์ตาม Requirements Specification

รูปแบบที่ 2


  • System Analyst เก็บ Requirement ไม่ดีพอ
  • Software Developer พัฒนาซอร์ฟแวร์ไม่ตรงตาม Requirements Specification แต่ดันไปถูกใจ User Requirement

รูปแบบที่ 3

  • System Analyst มีความเข้าใจ User Requirement อย่างลึกซึ้ง
  • Software Developer โดนสลายการชุมนุมแน่นอน


รูปแบบที่ 4


  • มั่วทุกอย่าง

Tuesday, April 20, 2010

Social Network เปลี่ยนแปลงพฤติกรรมสังคมไทยอย่างไรบ้าง

ในปัจจุบัน เด็กรุ่นใหม่คงไม่มีใครไม่รู้จัก Facebook, Twitter หรือถ้าเป็นเมื่อก่อนก็ Hi5 เพราะกระแส Social Network ในสังคมโลกกลายมาเป็นส่วนหนึ่งที่อยู่ในกระแสเลือดของกลุ่มคนที่มีอายุ 10 กว่าจนถึง 40 ปีไปแล้ว ดังนั้นในบทความนี้ผมจะไม่ขออธิบายว่า Facebook หรือ Twitter คืออะไร เพราะคิดว่าหลายคนอาจะรู้จักสื่อเหล่านี้มากกว่าผมด้วยซ้ำ แต่หากจะแสดงความคิดเห็น ทัศนะคติ และ วิเคราะห์ต่อว่า เราจะสามารถใช้ประโยชน์จากสื่อเหล่านี้ได้อย่างไรให้มีประโยชน์ต่อสังคมไทยสูงสุด


ธุรกิจ

จากการที่ผมไปหาข้อมูลมาเพิ่มเติม รู้หรือไม่ว่า ทั่วทั้งโลกมีคนใช้ Facebook จำนวน 400 ล้านกว่าคน ซึ่งถ้าเปรียบเป็นประเทศประเทศนึงแล้ว ถือว่า Facebook เป็นประเทศที่ใหญ่เป็นอันดับต้นๆของโลก หลายคนใช้เวลากับ Facebook มากมาย หลายคนถึงขั้นเสพติด หลายคนถ้าไม่ได้เข้าวันไหนจะเข้าขั้นลงแดง หงุดหงิดเลยทีเดียว เมื่อมีสมาชิกมากและเป็นที่นิยมมากขนาดนี้ก็เป็นที่สังเกตุได้ว่า "สินค้าหลากหลายชนิดกระโดดมาใช้สังคมออนไลน์เป็นเครื่องมือ" นั่นเพราะจำนวนสมาชิกที่มากมายอาจจะทำให้สินค้านั้นเป็นที่รู้จัก (ในกลุ่มเป้าหมาย) มากกว่าการลงโฆษณาผ่านสื่ออื่น และให้ผลตอบรับที่ดีกว่าโดยไม่ต้องเสียเงินซักบาทเลยด้วยซ้ำ เพราะอะไรล่ะ ทำไมถึงให้ผลตอบรับที่ดีกว่า นั่นเพราะ Social Network ได้ส่งผลอย่างมากต่อกลุ่มคนซึ่งเป็นผู้บริโภคครับ แล้ว Social Network ส่งผลอย่างไรต่อผู้บริโภคมั่งล่ะ คงจะปฏิเสธไม่ได้ใช่มั้ยครับว่า หากท่านจะซื้อโทรศัพท์มือถือหรือสินค้าใดสักชิ้น โดยรับสารเพียงแค่โฆษณาจากเจ้าของผลิตภัณฑ์เพียงอย่างเดียว ท่านคงจะไม่สบายใจหรือยังไม่มั่นใจในการตัดสินใจซื้อสิ้นค้านั้น เพราะท่านไม่เชื่อเจ้าของสินค้าครับ ท่านเชื่อเพื่อน ตรงจุดนี้ Social Network หรือแม้แต่ Discussion Forums เช่น Pantip.com หรือการทำ Fansite ผ่าน Facebook ก็กลายมาเป็นตัวแปรสำคัญที่มีผลอย่างมากต่อการตัดสินใจเลือกซื้อสินค้าซักตัวหรือแม้กระทั่งการโปรโมตสินค้า หรือดาราคนโปรด หากกระแสของสินค้าตัวนั้นผ่านทาง Social Network ออกมาไม่ดี ท่านก็อาจจะเปลี่ยนใจทันทีโดยที่ยังไม่ได้ฟังคำโฆษณาของเจ้าของผลิตภัณฑ์เลยด้วยซ้ำ นั่นเพราะ "กลยุทธ์ปากต่อปาก" ซึ่งถือเป็นคุณสมบัติตัวหนึ่งของ Social Network นั่นเองครับ

การศึกษา

เรื่องต่อมาที่ผมอยากจะนำเสนอคือเรื่อง การใช้ประโยชน์จาก Social Network กับระบบการศึกษาไทยครับ มีความจริงอยู่เรื่องนึงที่เป็นปัญหากับระบอบการศึกษาไทยมาเป็นเวลาช้านาน (เป็น Thailand Only อย่างนึง) แล้วก็คือ เด็กไทยไม่กล้าถาม ไม่กล้าแสดงความคิดเห็น (แต่กล้าทวีต) ถ้าเป็นอย่างนั้นส่วนตัวผมคิดว่าน่าจะมีการทดลองนำเอา Twitter มาประยุกต์กับระบบการศึกษาของไทยคงจะดีไม่น้อยใช่มั้ยครับ หรือการใช้ Social Network เป็นเครื่องมือในการส่งเสริมการเรียนรู้ให้เด็กไทย ยกตัวอย่างเช่น

มีรุ่นน้องของผมคนนึงพยายามสร้างสังคมออนไลน์ขึ้นมาเพื่อส่งเสริมระบบการศึกษาไทย ส่งเสริมให้เด็กไทยเขียนบทความกันมากขึ้น หรือมีการรวมกลุ่มเพื่อสร้างสังคมแห่งการเรียนรู้ผ่านทาง Social Network (http://do.in.th/) นี้ ซึ่งเป็นไอเดียที่แจ่มแมวและเป็นที่น่ายินดีของประเทศไทยที่มีเด็กที่มีความสามารถและเสียสละเพื่อพัฒนาระบบการศึกษาหรือแม้แต่สังคมไทยต่อไป ขอปรบมือให้ครับ

ศาสนาและวัฒนธรรม

ปัจจุบันคนไทยเข้าวัดกันน้อยลงมาก แต่ก็ยังดีที่มีการใช้ Social Media มาช่วยจึงทำให้ศาสนาไม่หายสาปสูญไปเร็วนัก ยกตัวอย่างเช่น มีการใช้ Facebook เพื่อเผยแพร่บทความหรือคำพูดที่ให้ข้อคิดจาก ท่าน ว.วชิระเมธี หรือถ้านำไปคิดต่อ ในอนาคตเราอาจจะใช้ Social Network ในการเผยแพร่คำสอน ตอบคำถามทางศาสนา หรือ ส่งเสริมให้คนไทยทำดีผ่านทาง Social Network แต่ไม่ได้หมายความว่าให้พระมาเล่น Facebook นะครับ (อย่างงั้นผมคงโดนประณามแย่) ผมหมายถึงให้กลุ่มคนที่ตั้งใจจะรักษาศาสนาหรือวัฒนธรรมออกมาสร้างชุมชนแห่งการเรียนรู้ในแง่ศาสนา เช่น เอาคำสอนมาแปลหรือส่งเสริมให้มีการทำกิจกรรมทางวัฒนธรรมร่วมกันเพื่อเป็นการผลักดันให้สังคมไทยในยุค Post Modern ใกล้ชิดกับศาสนาและวัฒนธรรมอันดีมากยิ่งขึ้นครับ

สังคม

ถ้าท่านจะสร้างกระแสสังคมสักเรื่อง Social Network ก็ถือเป็นอีกหนึ่งช่องทางสำคัญในการดำเนินงาน อย่างที่เราเคยเห็นเป็นตัวอย่างมามากมายในปัจจุบัน ยกตัวอย่างเช่น การรวมกลุ่มเสื้อหลากสี (ไม่อยากเอาเรื่องนี้มาพูดเท่าไหร่เลย ฮ่าฮ่า) หรือ การรวมกลุ่มเรารักในหลวงที่เป็นที่โด่งดังมาแล้ว ดังนั้นจะเป็นการดีมากถ้าสังคมไทยจะสามารถพัฒนาให้ดีขึ้นโดยใช้เครื่องมือที่ทรงพลังนี้เป็นหนึ่งในแรงผลักดันที่สำคัญ ผมจะลองยกตัวอย่างให้ฟัง สมมุติว่าผมอย่างจะสร้างโครงการปลูกป่า เพื่ออนุรักษ์ธรรมชาติ โดยมีกลุ่มเป้าหมายเป็นกลุ่มวัยรุ่นอายุประมาณ 15-25 ปี ท่านคิดว่าระหว่างการใช้ Social Network หรือการลงผ่านสื่อหนังสือทั่วไปจะได้ผลมากกว่ากัน แค่นี้ก็สามารถเป็นคำตอบได้แล้วครับว่า Social Network มีผลกระทบต่อสังคมไทยมากขนาดไหน

Camp Framework

วันนี้เป็นอีกวันทำงานที่โคตรจะว่าง ไม่มีอะไรทำ จะปล่อยเวลาให้เสียไปก็เสียดาย นึกอะไรสนุกขึ้นได้ก็เลยจะเรียบเรียงมานำเสนอทุกท่านครับ

ปัจจุนบันมีนักศึกษา Computer Science จบใหม่ขึ้นมาทุกปี ปีละจำนวนไม่น้อย แต่ละคนมีความฝันเหมือนกันคือ "อยากเก่ง" , "อยากมีรายได้ต่อเดือนเยอะ" หรือไม่ก็ "อยากมีความก้าวหน้าและมั่นคงทางการงาน" ครับ แต่!!~ ทำอย่างไรล่ะ ทำยังไงถึงจะเป็นแบบนั้นได้

จากคำถามนี้อาจทำให้หลายคนสนใจในบทความนี้ขึ้นมาไม่น้อยใช่มั้ยครับ เชื่อหรือไม่ว่าคุณสามารถทำงานเพียงแค่ 1 ปี แล้วสามารถอัพเงินเดือนได้ถึง 10,000+ บาทในการสมัครงานครั้งใหม่ได้ ก่อนอื่นผมขอออกตัวก่อนนะครับว่าผมไม่ใช่คนเก่ง คนรวย หรือ ประสปความสำเร็จทางด้านการงานมากมายแต่อย่างใด ผมแค่ต้องการจะแบ่งปันมุมมองส่วนตัว (โปรดใช้วิจารณญาณ) ให้โปรแกรมเมอร์รุ่นใหม่ (กว่า) ได้ลองดู Framework นี้ครับ


Camp Framework

แทนที่จะทำงานแบบเน้น Chill Out ทำไปแชทไปหรือทำไปปลูกผักไป แล้วเน้นวิ่งเต้นเปลี่ยนงานเพื่ออัพเงินเดือนตัวเอง เพราะทำงานที่เดิมแล้วเงินเดือนมันขึ้นช้า

ลองมาดูนี่ครับ Framework นี้เน้นการทำงานไปทางด้านการพัฒนาซอร์ฟแวร์ระดับ Enterprise โดยเฉพาะ Java สำหรับเด็กที่จบใหม่หรือนักศึกษา Computer Science ที่กำลังเรียนอยู่แล้วต้องการเตรียมตัวออกมานอกกะลานะครับ

Main Concept ของ Framework ตัวนี้ว่าด้วยเรื่องของการแสวงหาความรู้แบบ Optimal และใช้ควรจะใช้เวลาที่จะทำให้สำเร็จภายใน 1-3 ปีแล้วแต่ความขยัน (ผมก็ยังทำได้ไม่หมด) ก่อนอื่นต้องสร้างทักษะพื้นฐานเพื่อใช้ในการพัฒนาตัวเองภายในเวลาอันรวดเร็วครับ ซึ่งผมจะแบ่งเป็น 2 ด้านคือ Technical และ Non-Technical ซึ่งทั้ง 2 ส่วนมีความสำคัญมากไม่แพ้กันเลย ต้องยอมรับว่า Software Developer ที่ไม่มีทักษะทางด้าน Non-Technical (Soft Skill) เลยจะประสปความสำเร็จได้ช้ากว่า ดังนั้นผมจึงได้บูรณาการ Skill ที่จำเป็นเข้ามารวมไว้ด้วยกันครับ

ทักษะด้าน Technical

  • พื้นฐานด้าน Project Management
  • พื้นฐานด้าน Requirement Management
  • พื้นฐานด้าน Software Quality หรือ Quality Assurance
  • พื้นฐานด้าน CMMI, Agile, Extreme Programing (XP)
  • พื้นฐานด้าน ภาษา Programing พื้นฐาน
  • พื้นฐานด้าน Object Oriented Programing
  • พื้นฐานด้าน UML
  • พื้นฐานด้าน Web-Base Application Development และ HTTP
  • พื้นฐานด้าน Design Pattern
  • พื้นฐานด้าน Database Design
  • พื้นฐานด้าน Software Architecture
  • พื้นฐานด้าน Opensource
  • พื้นฐานด้าน Internet และ Application Security
  • พื้นฐานด้าน Architecture Framework
  • พื้นฐานด้าน Web Services, Service-Oriented Architecture

ดูแล้วมึนตึ้บใช่มั้ยครับ แต่นี่คือพื้นฐานเบื้องต้นในการประกอบอาชีพของท่าน (ก็ท่านจะเป็น Programmer ไม่ใช่หรอ) และยังต้องหาเพิ่มเติมหากท่านคิดจะยึดอาชีพสายนี้ต่อไป เพราะรู้หรือไม่ว่าเทนโนโลยีใหม่นั้น เกิดขึ้นทุก 2 ปี นั่นแปลว่า ถ้าท่านเริ่มเข้ามาเรียน Computer Science ใหม่ ประมาณปี 3 ท่านจะตกยุคถ้าท่านไม่หาความรู้เพิ่มเติม ซึ่งนี่คือ Nature ของผู้ที่ทำงานสาย IT ครับ ไม่ใช่เรื่องแปลก ดังนั้นท่านควรจะสะสมความรู้ตามที่ผมได้ List ให้ได้ภายในเวลา 1-3 ปี และที่สำคัญที่สุด ไม่ใช่แค่รู้อย่างเดียวควรจะเข้าใจและทำเป็นด้วย ถามว่าทำไมต้องรู้เยอะขนาดนี้ บางคนรู้น้อยกว่านี้ตั้งเยอะทำไมถึงเป็น Programmer ได้ล่ะ คืออย่างงี้ครับ ผมมักจะเปรียบการพัฒนา Software ให้เพื่อนหรือน้องฟังว่ามันคล้ายกับการสร้างตึกโดยสามารถแบ่งหน้าที่หลักได้เป็นระดับเรียงจากล่างขึ้นบนเฉพาะสาย Technical ได้ดังนี้ครับ

  • Software Developer / Programmer = กรรมกร
  • Software Engineer = วิศวะกร
  • System Analyst = สถาปนิก
  • Project Manager = ผู้รับเหมาก่อสร้าง

ถ้าทุกคนมองอุตสหกรรมการพัฒนา Software เป็นภาพนี้แล้วนั้น จะเป็นคำตอบของหลายคำถามได้อย่างดีครับ ถามว่าถ้าผมเป็นผู้รับเหมาแล้วผมต้องการจะจ้างกรรมกรซักคน โดยปกติแล้วการจ้างงานจะมี Normal Rate หรือ ฐานเงินเดือนปกติครับ แต่ถ้าท่านอยากได้เงินมากกว่ากรรมกรคนอื่นล่ะ จะทำยังไง คำตอบง่ายมากครับ "ท่าต้องโดดเด่นกว่ากรรมกรคนอื่น" เพราะพวกเค้าคิดตามแบบ ROI (Return of Invesment) ครับถ้าใช้เงินลงทุนมากเค้าก็คาดหวังที่จะได้ผลตอบแทนมากเช่นกัน การที่เราจะสามารถสร้างมูลค่าทางความสามารถให้กับตัวเองให้กับตัวเองสามารถทำได้ โดยผมใช้หลักแนวทางดังต่อไปนี้ครับ

  • หนังสือเล่มหนา ผมไม่จำเป็นต้องอ่านหนังสือทุกหน้า แต่เน้นลองสร้างโจทย์แล้วลองทำดู เมื่อติดจึงเปิดหาวิธีแก้
  • ผมใช้เวลาวันละ 10-30 นาทีในวันทำงานเพื่อศึกษาเทคโนโลยีเพิ่มเติมจากงานประจำที่ทำ บางคนอาจมองว่า อ่าว!!~ ไอ่นี่อู้งานนี่หว่า แต่นี่คือวิธีสร้างองค์ความรู้ใหม่ให้กับตัวเองอีกทั้งองค์กรยังอาจจะได้ใช้ประโยชน์จากจุดนี้ไม่น้อยเลยทีเดียว
  • ผมอัพ Blog โดยใช้ความรู้เทคโนโลยีที่ได้อ่านมาจากข้อข้างบนแล้วเรียบเรียงบวกกับใส่ความคิดเห็น มุมมอง และทัศนะคติส่วนตัวเข้าไป เพื่อเป็นการทวนและ กระตุ้นให้สมองได้วิเคราะห์อยู่ตลอดเวลา
  • ผมขยันถามและตอบในกระทู้ Technical Forums ซึ่งนั่นเป็นการกระตุ้นให้ผมไม่เฉื่อยจนเกินไป การตอบกระทู้จะทำให้เรามองเห็นปัญหา ข้อดี และ ข้อเสีย ของเทคโนโลยีมากขึ้นอีกทั้งยังเป็นการกระตุ้นให้เราพยายามหา Solution ในปัญหาบางอย่างที่เราตอบไม่ได้
  • รับงานสอนหนังสือหรืองานอาชพอิสระบ้างตามโอกาส แต่ต้องรู้จักเลือกงานครับ เลือกเฉพาะงานที่เสริมทักษะ ความรู้ หรือ Connection ไม่ใช่เพื่อเงินอย่างเดียว ไม่เลือกงานยาวจนผูกมัดตัวเองจนเกินไป
  • เน้นหาประสปการณ์ที่หลากหลาย อย่าตกเป็นสาวกของเทคโนโลยี พยายามมองว่าเทคโนโลยีเป็นเพียงเครื่องมือในการประกอบอาชีพเท่านั้นดังนั้นท่าจึงควรขยันของานที่หลากหลายจากหัวหน้างานเพื่อสร้างทักษะและประสปการณ์ให้กับตัวเองได้รู้จักเครื่องมือใหม่ ที่ท่านสามารถนำมาประยุกต์ใช้กับงานหลากหลายแขนงได้อย่างมีประสิทธิภาพ

ทักษะด้าน Non-Technical

  • มารยาท การเข้าสังคม ความเกรงใจ ความอ่อนน้อม
  • บุคลิคภาพ ความมั่นใจในตัวเอง การแต่งกาย
  • ทักษะด้านการสื่อสาร ไม่ว่าจะเป็น ฟัง พูด อ่าน เขียน
  • พื้นฐานทางธุรกิจรวมไปถึงมุมมองอย่างผู้บริหาร
  • การบริหารเวลา
  • มีคุณธรรม

ก่อนอื่นต้องหาเป้าหมายของตัวเองให้เจอครับ วาง Career Path ให้ชัดเจนแล้วมุ่งเป้าไปให้ได้ ผมมักจะตั้งเป้าหมายทั้งระยะสั้นและระยะยาวให้กับตัวเอง เป้าหมายระยะยาวก็เช่น ภายในเวลาไม่เกิน 2 ปี ผมจะต้องเป็น Software Engineer ให้ได้อะไรประมาณนี้ ส่วนเป้าหมายระยะสั้นก็เช่น ภายใน 1 เดือน ผมต้องศึกษาและทำความเข้าใจเกี่ยวกับ EJB ให้ได้ หรืออะไรทำนองนี้ การตั้งเป้าหมายจะทำให้เราไม่เฉี่อยต่อการดำเนินชีวิตจนเกินไป แต่ก็ไม่ใช่ตั้งจนบีบตัวเองมากเกินไปนะครับ เดี๋ยวจะหมดไฟในการทำงานซะก่อนตั้งแบบพอดีแต่ค่อนข้างเบนไปทางบีบนิดหน่อย เว้นช่องใว้ให้เวลาส่วนตัวบ้างตามสมควร

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

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

รู้หรือไม่ว่าการทำงานหนักจนเกินไปก็ถือเป็นจุดอ่อนอย่างหนึ่งที่หลายคนมองข้าม การที่ไม่มี Work & Life Balance ที่ดีอาจจะนำไปสู่ความทุกข์ในการทำงานหรือการดำเนินชีวิตได้ ดังนั้นนอกจากจะต้องมีเป้าหมายในการทำงานที่มั่นคงแล้วยังต้องมีการบริหารการจัดการเวลาที่ดีด้วย ท่านสามารถมีคุณภาพชีวิตที่ดีควบคู่ไปกับการพัฒนาตัวเองอย่างรวดเร็วได้หากรู้จักใช้เวลาให้คุ้มค่าและรู้จักปล่อยวาง "ไม่มีอะไรจะเจ๋งไปกว่าทำงานแล้วมีความสุขใช่มั้ยครับ"

Note : เขียนไม่ค่อยรู้เรื่องเท่าไหร่ เดี๋ยวเอาไว้ว่างค่อยมาเรียบเรียงใหม่

มหากาพย์แห่ง Business Intelligent และ Pentaho ภาคอวสาน

ต่อเนื่องจากมหากาพย์ภาคแรก ภาคนี้จะมาบอกถึง Feature ตัวที่เหลือที่น่าสนใจของ Pentaho ให้ได้รู้กัน

Reporting

Pentaho Reporting ช่วยให้ผู้ใช้งานสามารถเข้าถึงข้อมูลในรายงานตาม Layout ที่กำหนด (Static Report) ได้หลายรูปแบบทั้งในรูปแบบของ PDF, Excel, RTF, Text File ซึ่งรายงานดังกล่าวสามารถจัดส่งถึงผู้ใช้งานผ่านทาง Web Portal, E-Mail หรือแม้แต่ใน Application


ความสามารถของ Reporting ประกอบด้วย

  • รองรับมาตรฐาน Java 100% (อีกแล้ว)
  • มีความยืดหยุ่นในการ Deployment รายงานที่ออกแบบในเครื่อง Desktop ไปเป็นรายงานที่อยู่บนเว็บซึ่งสามารถตอบโต้กับผู้ใช้งานได้
  • รองรับการเชื่อมต่อกับข้อมูลได้ทั้งแบบที่เป็น Relational Database, OLAP หรือแม้แต่ XML
  • กำหนดรูปแบบของรายงานได้หลายรูปแบบ เช่น PDF, Excel, RTF, Text File
  • มีเครื่องมือช่วยในการสร้างรายงาน ช่วยให้สร้างรายงานได้สะดวกและรวดเร็วมากขึ้น (ใครเคยเล่น iReport หรือ Crystal Report จะเห็นภาพ)
  • เชื่อมต่อกับ Data Source ได้โดยตรงหรือจะผ่าน META-DATA ก็ได้
  • ตั้งเวลาในการสร้างรายงานหรือจะสร้างรายงานทันทีที่ต้องการใช้งาน
  • ส่งรายงานได้หลายช่องทาง เช่น E-Mail, Printer, File Server, Web Portal, Application หรือแม้แต่ Web Service
  • แสดงข้อมูลในรายงานได้หลายหลายรูปแบบ เช่น Table, Chart, Template, Sub Report, Drill Link, Header, Footer เป็นต้น
  • รองรับ JDBC 2.0 เป็นต้นไป
  • รองรับหลากหลายฐานข้อมูล เช่น Oracle, DB2, Microsoft SQL, MySQL, PostgreSQL และอีกมากมาย
  • รองรับหลายการใช้หลาย Data Source ในหนึ่งรายงาน
  • สามารถแยกรายงานหนึ่งตัวออกเป็นหลายไฟล์ตามเงื่อนไขที่ระบุ เช่นแยกตามกลุ่มผู้ใช้งาน โดยในแต่ละไฟล์ สามารถระบุได้ว่าจะจัดส่งรายงานด้วยวิธีใด เช่น ส่ง E-Mail, พิมพ์ออกเครื่องพิมพ์ ความสามารถทั้งหมดที่กล่าวมาเรียกว่า Report Bursting
  • ระบุเงื่อนไขในการสร้างรายงาน ผู้ใช้งานสามารถระบุ Parameter ได้ตามต้องการ


Ad-hoc Query


Pentaho Ad-hoc Query เป็นส่วนที่ต่อขยายจาก Pentaho Reporting ซึ่งจะช่วยให้ผู้ใช้งานสามารถสร้างรายงานอย่างง่าย ได้ด้วยตัวเอง โดยมีเครื่องมือลักษณะเป็น Wizard อ่านข้อมูลจาก META-DATA ร้างไว้ก่อนหน้านี้ซึ่งจะใช้ข้อความหรือคำศัพท์ที่ผู้ใช้งานคุ้นเคย ทำให้ผู้ใช้งานเข้าใจในข้อมูลที่จะเลือกมาสร้างรายงาน

ความสามารถของ Reporting ประกอบด้วย -

  • รองรับมาตรฐาน Java 100%
  • สร้างรายงานอย่างง่ายได้ด้วยตัวเอง เพียงลากวาง (Drag and Drop) ข้อมูลที่ต้องการ จาก META-DATA
  • จัดเรียงข้อมูล (Sorting) และกรองข้อมูล (Filter) ได้ตามต้องการ
  • ระบุขนาดกระดาษ, ชื่อรายงาน, ข้อความที่จะพิมพ์บน Header และ Footer ได้ตามต้องการ
  • มี Template ของรายงานให้เลือกใช้
  • Ad-hoc Query ที่สร้างขึ้นสามารถปรับปรุงรูปแบบให้ดีขึ้นได้ด้วย Report Designer


Analysis


ช่วยให้ผู้ใช้งานสามารถวิเคราะห์ข้อมูลเชิงโต้ตอบ (Interactive) กับข้อมูลที่เก็บอยู่ในฐานข้อมูลโดยไม่จำเป็นต้องมีความรู้ด้าน Programming ผู้ใช้งานสามารถหาคำตอบจากคำถามทางธุรกิจที่ตนเองสงสัยได้ด้วยตนเอง

ความสามารถของ Analysis ประกอบด้วย

  • รองรับมาตรฐาน Java 100%
  • ผู้ใช้งานสามารถวิเคราะห์ข้อมูลได้ด้วยตนเองอย่างรวดเร็ว เพียงลากวางข้อมูลที่ต้องการ อีกทั้งยังสามารถ Drill Down ลงไปดูรายละเอียดข้อมูลที่ต้องการได้อีกด้วย
  • แสดงข้อมูลในลักษณะ Cross Tab Report
  • การดูข้อมูลในมุมมองต่างๆ (Dimension) ไม่ว่าจะมองมุมมองเดียว (Slice) หรือหลายมุมมอง (Dice)
  • สามารถแสดงแผนภาพ (Chart) ตามข้อมูลที่เลือกได้
  • คำนวณข้อมูลที่ซับซ้อนได้หลายหลายมุมมอง (Multi Dimensional)
  • export ข้อมูลออกมาได้หลายรูปแบบ เช่น PDF, HTML, Excel, RTF, Text File
  • รองรับ Multidimensional Expression (MDX) language เพื่อใช้ในการแสดงข้อมูลในรูปแบบที่ซับซ้อน
  • ดูข้อมูลแบบลำดับชั้นได้ (Hierarchy)
  • รองรับ JDBC 2.0 เป็นต้นไป
  • รองรับหลากหลายฐานข้อมูล เช่น Oracle, DB2, Microsoft SQL, MySQL, PostgreSQL และอีกมากมาย
  • กำหนดสิทธิ์การใช้งานได้ข้อมูล RDBMS

Dashboard


ช่วยให้ผู้ใช้งานเห็นข้อมูลประสิทธิภาพการทำงาน (Performance) และเป้าหมายการทำงานทั้งในระดับส่วนตัว, ระดับแผนก, ระดับบริษัท ในรูปแบบที่เป็นรูปภาพหรือแผนภาพ ช่วยให้ผู้ใช้งานมองเห็นข้อมูลในแต่ละระดับในภาพรวมซึ่งสามารถนำไปพัฒนาปรับปรุงประสิทธิภาพการทำงานต่อไป

ความสามารถของ Dashboard ประกอบด้วย -

  • รองรับมาตรฐาน Java 100%
  • ช่วยในการชี้วัดประสิทธิภาพการทำงาน
  • ง่ายต่อการเข้าใจข้อมูลเนื่องจากแสดงข้อมูลในรูปแบบที่เป็นรูปภาพหรือแผนภาพ
  • เชื่อมต่อกับ Pentaho Reporting และ Pentaho Analysis ซึ่งช่วยให้ผู้ใช้งานสามารถดูรายละเอียดของข้อมูลที่มีปัญหาหรือข้อสงสัยได้ (Drill Down)
  • เชื่อมต่อกับ Portal ทำให้สามารถแสดงข้อมูลได้หลายหลายและเป็นอิสระต่อกัน ซึ่งทำให้รองรับกลุ่มผู้ใช้งานที่มากขึ้น
  • กำหนดเงื่อนไข เพื่อให้ระบบแจ้งเตือนผู้ใช้งานให้ทราบถึงสถานการณ์ต่างๆที่กำลังจะเกิดขึ้นซึ่งจะช่วยให้ผู้ใช้งานสามารถรับมือหรือแก้ปัญหากับสิ่งที่กำลังจะเกิดขึ้นได้

Data Integration


คือเครื่องมือที่ใช้สร้างคลังข้อมูล (Data Warehouse) โดยทั่วไปเครื่องมือดังกล่าวเรียกว่า ETL (Extraction, Transformation and Loading)

  • Extraction คือการดึงข้อมูลจากแหล่งต่างๆ ที่เราต้องการมาเก็บไว้ใน Data Warehouse โดยจะดึงมาเฉพาะข้อมูลใหม่ที่เพิ่มขึ้นมาหรือข้อมูลที่ถูกเปลี่ยนแปลงแก้ไข โดยข้อมูลที่ดึงมาจะมาเก็บพักไว้ก่อนซึ่งเรียกว่า Staging Area•
  • Transformation คือการเปลี่ยนแปลงรูปแบบของข้อมูลที่ได้จากการ Extract ให้อยู่ในรูปแบบที่ถูกต้องตามโครงสร้างของ Data Warehouse •
  • Loading คือการเก็บข้อมูลลงใน Data Warehouse หลังจากทำการแปลงข้อมูลให้อยู่ในรูปแบบที่ถูกต้อง

ความสามารถของ Pentaho Data Integration ประกอบด้วย

  • รองรับมาตรฐาน Java 100%
  • ง่ายต่อการใช้งาน ด้วยเครื่องมือต่างๆ ที่จัดเตรียมไว้ให้ในรูปแบบกราฟิก เพียงลากวางเครื่องมือต่างๆ ตามกระบวนการที่ต้องทำ
  • รองรับ Slowly Changing Dimension และ Junk Dimension
  • ออกแบบมาเน้นในเรื่องของประสิทธิภาพ (Performance) และการขยายระบบเมื่อระบบมีปริมาณการใช้งานที่มากขึ้น (Scalability)
  • มีเครื่องมือในการเชื่อมต่อกับระบบ ERP (ERP Connectors)
  • มีเครื่องมือที่ใช้ในการตรวจสอบความถูกต้องของข้อมูล (Data Quality)
  • รองรับหลากหลายแหล่งข้อมูล (Data Source) ไม่ว่าจะเป็น Database, File Base (DBF), Text File, Excel File และอื่นๆ
  • เชื่อมต่อกับ Pentaho BI Suite ทำให้สามารถใช้ความสามารถอื่นๆร่วมกันได้เช่น เรื่องของการ Scheduling, Security, Workflow เป็นต้น
  • นำไปใช้งานในลักษณะต่างๆ ดังนี้ สร้างคลังข้อมูล (Populate Data Warehouse), Export ข้อมูลจากฐานข้อมูลไปเป็น Text File, Import ข้อมูลจาก Text File เข้าฐานข้อมูล, นำข้อมูลจากฐานข้อมูลหนึ่งไปเข้าอีกฐานข้อมูลหนึ่ง, ดูข้อมูลจากฐานข้อมูลที่มีอยู่

ที่มา : http://www.goingjesse.com/gj/index.php?option=com_content&view=article&id=11&Itemid=2

นี่คือความสามารถที่ Pentaho ได้จัดเตรียมไว้ให้แล้ว ดังนั้นการทำ Business Intelligent ก็ไม่ใช่เรื่องยากที่จะเรียนรู้อีกต่อไป หากใครสนใจก็สามารถไปศึกษาต่อได้ที่ http://www.pentaho.com/

Note : ข้อความในนี้ส่วนใหญ่หาข้องมูลจาก Commercial Site ของ Pentaho

Monday, April 19, 2010

มหากาพย์แห่ง Business Intelligent และ Pentaho ภาคแรก

สวัสดีอีกครั้ง หลังจากวันหยุดยาว ทำให้ผมมีเวลา (นอน) มากขึ้น พอดีช่วงนี้กำลังศึกษาเรื่อง BI (Business Intelligent) ก็เลยลองหา Opensource Software ที่มาใช้ทำ BI ดูแล้วผมก็ได้เจอนี่ครับ "Pentaho" ชื่ออาจจะดูแปลก (ประมาณอินเดียนแดงหรืออะไรทำนองนั้น) แต่ความสามารถนั้นแจ่มใช้ได้เลยทีเดียว
ก่อนอื่น สำหรับผู้ที่ไม่มีพื้นฐานก็ต้องมาศึกษาก่อนว่า BI คืออะไร แล้วมันมีประโยชน์ต่อธุรกิจยังไงบ้าง

Business Intelligent คืออะไร

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

  1. องค์กรจำเป็นต้องมีการแสวงหาหนทาง ในการเก็บรวบรวมข้อมูลให้ได้มากพอ เพราะว่าข้อมูลเหล่านั้นไม่ใช่ข้อมูลภายในองค์กรเท่านั้น อาจจะเป็นข้อมูลขององค์กรที่เป็นคู่แข่งหรือเป็นข้อมูลของ องค์กรอื่นๆ ที่อยู่ในธุรกิจเดียวกันก็เป็นไปได้
  2. การเลือกสรรข้อมูลที่มีคุณค่าจากกองข้อมูลที่มีขนาดเท่ากลุ่มเสื้อแดง (มหึมา) เพื่อให้แน่ใจว่าระบบข้อมูลที่พัฒนาขึ้นมานั้นเป็นข้อมูลที่สามารถตอบสนองต่อความต้องการของผู้บริหารระดับสูงขององค์กรได้ เพื่อเอาชนะอุปสรรคเหล่านี้จึงจำเป็นต้องมีระบบที่สามารถช่วยเตรียมข้อมูลที่ลึกซึ้ง และมีคุณค่าทางกิจกรรมทางธุรกิจให้แก่องค์กรได้

ปัจจุบันการวางแผนทางกลยุทธ์ของบริษัทนั้นจำเป็นต้องใช้ข้อมูลมากมาย ซึ่งการวิเคราะห์ข้อมูล ทางด้านการตลาด การขาย การเงิน การผลิตนั้นจะต้องต่อกับเหตุการณ์ซึ่งมีข้อมูลเกิดขึ้นเป็นประจำทุกวัน ดังนั้นการจัดทำรายงาน จะต้องมีการแก้ไขบ่อย และมีความยุ่งยากมาก

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

เช่น

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

Business Intelligence จะประกอบไปด้วยระบบข้อมูล และ Application ด้านการวิเคราะห์ มากมายหลายอย่าง เช่น

  • Data Warehouse
  • Data Mart
  • Data Mining
  • Operations Research & Numerical Methods
  • OLAP
  • Search, Report

จากข้างบนเราสามารถสรุปได้ว่า Business Intelligent มีประโยชน์มากมายต่อองค์กรดังนี้

  • ทำให้การบริหารงานมีประสิทธิภาพสูงขึ้น และมีข้อมูลประกอบการตัดสินใจที่ดี ทำให้เกิดการบริหารจัดการข้อมูลอย่างเป็นระบบ รวมทั้งการดูแลปรับปรุงข้อมูลให้ทันสมัยตลอดเวลาโดยเฉพาะ ซึ่งง่ายต่อการรายงาน การติดตาม และการประเมินผลต่อผู้บริหาร
  • ลดความซ้ำซ้อนในการลงทุน และสามารถเชื่อมโยงและแลกเปลี่ยนข้อมูลได้อย่างมีประสิทธิภาพบนเครือข่ายความเร็วสูง การสร้างระบบจำลองข้อมูลเพื่อการบริหาร (Decision Support System) เพื่อให้ผู้บริหารสามารถใช้แบบจำลองข้อมูลเพื่อประกอบการตัดสินใจ และการคาดการสถานการณ์ล่วงหน้าได้

ร่ายซะยาวยังไม่ได้เข้าเรื่อง Pentaho ซักนิดเลย เอาล่ะ เพื่อไม่ให้เป็นการเสียเวลาเรามาทำความรู้จัก Pentaho กันเลย

Pentaho คืออะไร

Pentaho ก็คือ Opensource Software ที่ใช้มาเพื่อจัดการ Business Intelligent นี่หละครับโดยที่ Pentaho จะมีฟังก์ชั่นให้เลือกใช้อย่างมากมายและครบถ้วนกระบวนความ ไม่ว่าจะเป็น Data Integration, Reporting, Ad-hoc Query, Analysis, Dashboard หรือแม้แต่ Data Mining ดังนั้น Pentaho จึงเป็นอีกหนึ่งทางเลือกที่คุ้มค่ามากในการเลือกเพื่อมาพัฒนาระบบ DWH(Data Warehouse) และ BI

Pentaho นี้ได้รวบรวม Application ทางด้าน BI เข้าด้วยกันเพื่อทำงานร่วมกันเป็น Solution โดยสามารถแบ่งเป็นส่วนประกอบหลักได้ 6 ส่วนคือ

  1. Platform
  2. Reporting
  3. Ad-hoc Query
  4. Analysis
  5. Dashboard
  6. Data Integration

Plateform






ถ้าดูจากรูปหลายคน (รวมทั้งผมด้วย) อาจจะยังไม่เข้าใจว่านี่คืออะไร ออกแนวมึนตึ้บ เนื่องจากขาดความเชี่ยวชาญทางด้าน BI ดังนั้นให้ลงมามองที่ข้อความก่อนแล้วถึงขึ้นไปดูก็จะช่วยได้ (เล็กน้อย - -")

  • Solution Engine ที่เป็นหัวใจหลักของ Pentaho Platform ทำหน้าที่อ่านและสั่ง Process (Action Sequences) ของ BI ให้ทำงาน เช่น Reporting, Analysis, Dashboard
  • Solution Repository ทำหน้าที่เก็บ Template, Query, Report, Business Rule, Process, Style Sheet และ Action Sequence ซึ่งเก็บอยู่ใน Database ที่เรียกว่า Solution Database
  • Runtime Engine ทำหน้าที่อ่าน Resource ไม่ว่าจะเป็น Query, Report, Business Rule, Process, Style Sheet และ Action Sequence จาก Solution Repository มาเพื่อประมวลผลแล้วทำการบันทึกข้อมูลการประมวลผลลงในส่วนของ Auditing ซึ่งตัว Runtime Engine ก็คือ BI Virtual Machine เป็น Environment สำหรับประมวลผลตัว Action Sequence
  • BI Components คือ ส่วนประกอบหลักที่ถูกเรียกใช้งานและถูกควบคุมการทำงานผ่าน Action Sequence โดย BI Component พื้นฐานที่ติดมากับ Pentaho BI Platform ได้แก่ reporting, charting, OLAP, ETL, dashboard, workflow, scripting เป็นต้น นอกจากนี้เรายังสามารถนำ Component อื่นๆ ที่เขียนขึ้นเองหรือของ Third Party เข้ามาใช้ต่อพ่วงกับ Pentaho BI Platform ได้อีก อย่างเช่น E-Mail, Print
  • API คือส่วนของ Application Programming Interface ที่ถูกออกแบบมาในลักษณะ SOA (Service Oriented Architecture) ทำให้ง่ายแก่การเรียกใช้ เพียง 5 บรรทัดของ Java ก็สามารถเรียกใช้ HTTP, JMS, SOAP, AJAX, POJOs, BPEL ผ่าน Action Sequence ได้
  • User Interface คือส่วนที่ใช้แสดงผลให้กับผู้ใช้งานโดย โดยสร้างการแสดงผลมาจาก HTML ซึ่งสามารถแปลงมาจาก XML และยังสามารถใช้งาน AJAX, Single Sign on และ Security ร่วมกับ User Interface ได้
  • Client คือส่วนที่ผู้ใช้งานสามารถเรียกประมวลผล Action Sequence, Workflow, ESB, SOA ได้เป็นต้น โดยสามารถเป็นได้ทั้งแบบ Remote หรือ Local การเรียกใช้งานก็สามารถเรียกผ่าน Web Browser หรือจะเรียกผ่าน Application ที่เขียนขึ้นมาเองก็ได้
  • Configuration ใช้กำหนดชื่อ Component ที่ต้องการเรียกใช้ พร้อมทั้งกำหนดค่า Standard Parameter ในการเรียกใช้ไว้ในส่วนของ Configuration

ความสามารถของ Platform ประกอบด้วย

  • รองรับมาตรฐาน Java 100%
  • เชื่อมต่อกับ Data Source, Portal และ Application ผ่าน Open Standard
  • เชื่อมต่อกับ Application ตั้งเวลา (Scheduling) การตรวจสอบรหัสผู้ใช้งานเพื่อเข้าระบบ (Authentication) และสิทธิ์การใช้งานของแต่ละรหัสผู้ใช้งาน (Authorization)
  • รองรับการปรับแต่ง Application โดยใช้ APIs, Web Services หรือทำการแก้ไข Template, Business Rules หรือแม้แต่ Source Code
  • ออกแบบโดยเน้น Workflow-Base จึงช่วยให้สามารถแก้ไขระบบตามความต้องการได้
  • มีการบันทึก Log การเข้าใช้งานของผู้ใช้งานแต่ละคน ทำให้สามารถติดตามการใช้งานของผู้ใช้งานแต่ละคนได้

ที่มา : http://www.goingjesse.com/gj/index.php?option=com_content&view=article&id=11&Itemid=2


เขียนไป ก๊อปไป อ่านไป เพลินมากเหลือบขึ้นไปดู โว้ว!!~ ยาวมากจนต้องเปลี่ยนชื่อบทความ ก็เลยตัดไว้แค่นี้ก่อนละกัน เด๋วจะท้อกับการอ่านซะก่อน เด๋วเอาไว้จะอัพภาคต่อของ Pentaho รวมไปถึง Feature ที่ยังไม่ได้กล่าวถึงอีก 5 อันมาให้ได้ชมได้อ่านกันนะครับ

Note : ข้อความในนี้ส่วนใหญ่หาข้องมูลจาก Commercial Site ของ Pentaho

Data Normalization นั้นดีจริงหรือ

แค่อ่านหัวข้อก็รู้แล้วนะครับว่าบทความนี้ตั้งใจจะแสดงอีกแง่มุมหนึ่งซึ่งแตกต่างระหว่าง "การทำ Data Normalization ในภาคทฤษฏีและภาคปฏิบัติที่ส่งตรงมาจากประสปการณ์การทำงาน" ซึ่งต้องออกตัวก่อนว่าบทความนี้เป็นแค่ความคิดเห็นส่วนตัวของผมซึ่งอาจจะผิดหรือถูกก็แล้วแต่วิจารณญาณและสถานการณ์การนำไปใช้ของแต่ละคน ก่อนอื่นใดมาทำความรู้จักกับการทำ Database Normalization เพื่อปูพื้นฐานกันก่อนเลยครับ

Database Normalization คืออะไร
ถ้าว่าด้วยศาสตร์ของ Relational Database Design แล้ว Database Normalization ถือเป็นบทพื้นฐานที่นักศึกษา Computer Science จะต้องทำความเข้าใจ (แต่เหมือนไม่เคยผ่านตายังไงไม่รู้แฮะ) ซึ่งถ้าจะให้คำนิยามของการทำ Data Normalization แล้วมันก็คือ

การทำให้รูปแบบโครงสร้างของฐานข้อมูล (Database) อยู่ในรูปของ
Normal Form (NF) ซึ่งจะสามารถลดความซ้ำซ้อนของข้อมูล,
ลดพื้นที่เก็บข้อมูลและขจัดปัญหาความผิดปกติของข้อมูล

ที่เกิดจาก 3 สาเหตุหลัก
  1. Insertion Anormalies
  2. Deletion Anormalies
  3. Update Anormalies

หรือก็คือความผิดปกติจากการ เพิ่มข้อมูล ลบข้อมูล และ ปรับปรุงข้อมูลได้สามารถแบ่งออกได้เป็น 5 ระดับ ซึ่งในบทความนี้จะไม่ลงลึกถึงรายละเอียดไปมากกว่านี้เพราะเดี๋ยวจะกลายเป็นบทความสอนการทำ Normalization ไป เอาเป็นว่าถ้ายังไม่มีพื้นฐานก็สามารถไปศึกษาต่อได้ใน http://en.wikipedia.org/wiki/Database_normalization หรือ หนังสือ Database Design ทั่วไปนะครับ

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

การทำ Normalization นั้นดีแน่อย่างที่อาจารย์ท่านสอนแหละครับ แต่!!~ (ลูบหลังแล้วตบหัว) ท่านรู้หรือไม่ว่าผลของการทำ Normalization จะทำให้เกิดตารางมากมายเพื่อจุดมุ่งหมายในการลดความซ้ำซ้อนของข้อมูล หรือถ้าถ้าให้พูดแบบตรงประเด็น

"การทำ Normalization
ในทัศนะของข้าพเจ้าคือการลดความซ้ำซ้อนของข้อมูลแต่เพิ่มความซับซ้อนของข้อมูลหากใช้ไม่เหมาะสมกับกรณี"

นั่นเองและสิ่งที่ตามมาที่ Software Developer หรือแม้แต่ Software Engineer ทั้งน้อยใหญ่มองข้ามในประเด็นแรกก็คือ Performance Issue ครับ

ผมคงจะไม่ปฏิเสธที่ตำราหรืออาจารย์บอกให้ทำ Normalization แต่นั่นเหมาะสมและดีที่สุดสำหรับระบบใหญ่มากหรือใช้ร่วมกับ OR-Mapping แต่สำหรับ Application ในปัจจุบันการเลือกใช้ Normalization นั้น Software Develoer ยังเลือกใช้ได้ไม่เหมาะสมเท่าที่ควร เนื่องจากการแตกกระจายตัวของตารางนั้นก่อให้เกิดความยุ่งยากมากมายในการพัฒนา Application ยกตัวอย่างเช่น ถ้าท่านจะเขียน Summary Report ขึ้นมา 1 ตัว โดยดึงข้อมูลจากตารางที่ทำ Normalization สิ่งที่หลีดเลี่ยงไม่ได้คือการ Join ตารางเพื่อให้ได้ข้อมูลที่ครบถ้วน ซึ่งแน่นอนการ Join Table นั้น "กิน CPU มากกว่า" Select Statement ธรรมดาอยู่แล้ว ซึ่งทำให้บางครั้งการ Select 1 ครั้งอาจกินเวลาร่วมชั่วโมงเลยก็มี ประเด็นนี้เป็นประเด็นที่สำคัญมาก แต่หลายคนยังมองข้ามอยู่

การสร้างระบบที่สามารถรองรับได้หลาย Concurrent Users นั้นจำเป็นต้องมี Performance ที่ดี (อาจจะต้องลงลึกไปถึงระดับ SQL Optimization) ยิ่งจำนวนผู้ใช้งานระบบเยอะ Database Server ยิ่งทำงานหนัก ดังนั้นหากไม่มี Performance Tuning ที่ดีแล้ว อาจจะตามมาด้วยความเสียหายในธุรกิจที่ประเมิณค่าไม่ได้ก็เป็นไปได้ จากประสปการณ์ตรง ผมเคยเจอแบบนี้ครับ (พร่ามมาตั้งนาน ในที่สุดก็ยอมสารภาพ T^T) ต้องทำการ Maintainance ตัว Compliance Date Report จากฐานข้อมูลที่ทำการ NF และมี Concurrent Users ทั้งบริษัทครับ ผลก็คือผมต้องไปไล่ตาม Table ที่กระจัดกระจายอยู่เต็มไปหมด เจอ Sub Query ที่ผลาญ CPU ไปจำนวนมหาศาล เคยคิดจะแก้โดยการเขียน Query Catche หรือการทำ Index เพื่อช่วยเรื่องความเร็ว ขึ้นมาแทนครับ แต่ก็ยังไม่เร็วขึ้นเท่าไหร่ และที่สำคัญ ถ้ามี User กด Print Report นั้นขึ้นมาระบบอึดขึ้นทันตาเห็นเลยครับ หลายท่านอาจจะมองว่าแล้วทำไมไม่ไปแก้ไขที่ Hardware ล่ะ นั่นเป็นวิธีที่ไม่ได้ประสิทธ์ภาพเท่าไหร่นัก

ทำไมล่ะ ก็เครื่องมันช้าก็ต้องซื้อโน่นซื้อนี่มาเพิ่มสิ?

นั่นก่อให้เกิดความสิ้นเปลืองโดยที่ยังใช้เครื่องมือที่มีได้ไม่เต็มประสิทธิภาพ ปัจจุบันราคา Database Server นั้นสูงนะครับซึ่งอาจจะทำให้การอนุมัติขอซื้อจากบางบริษัทนั้นไม่ใช่เรื่องง่าย ไหนจะเสี่ยงต่อการที่ Hardware ตัวใหม่ที่ซื้อมาจะสร้างปัญหาหรือต้องลงทุนในการจ้างคนดูแลมากขึ้นไปอีกแถมยังต้องเจอกับประเด็นที่สองที่ทุกคนมองข้ามนั่นคือ "ความยุ่งยากมากกว่า" ที่เกิดจากการเขียน SQL Statement จนทำให้เราคิดกันจนผมหงอก หลายท่านอาจะไม่มองข้อนี้เป็นปัญหา แต่ท่านอย่าลืมว่า ถ้า Software Developer ใช้เวลามากขึ้นในการพัฒนา Application นั่นหมายถึง Cost ที่เพิ่มขึ้นและ Timeline ที่อาจจะเกินเวลาซึ่งอาจจะทำให้ Project นั้นเกิดอาการที่เรียกว่า "Delay" ได้ครับ

ดังนั้นจาก Case Study (ของผม) จะเห็นได้ว่า Normalization ไม่ใช่สิ่งที่จำเป็นที่สุดในการ Design Database ครับ มันขึ้นอยู่กับว่า เรามีจุดมุ่งหมายอะไรมากกว่า ซึ่งการ Design ในปัจจุบันก็มีให้เลือกใช้ได้ตั้งหลายแบบครับ ทั้ง Normalization, Demormalization, Centralization หรือรูปแบบอื่น

เขียนซะยาวแต่นั่นก็คือประสปการณ์ที่ผมอยากจะมาแบ่งปันให้ทุกคนครับ จะได้ไม่ยึดติดกับการทำ Normalization มากเกินไปวันนี้ไปก่อนครับ

Thursday, April 8, 2010

Why I Won't Read Your Resume

พอดีช่วงนี้มีน้องๆ มาขอคำปรึกษาเรื่องการสมัครงานใหม่อยู่บ่อยครั้ง ก็เลยอยากลองหาข้อมูลการเขียน Resume ที่น่าสนใจมาให้อ่านกัน เนื่องจากปัจจุบันเด็กสมัยใหม่ไม่ค่อยจะเข้าใจของจุดประสงค์ของการเขียน Resume หรือแม้แต่การ Present ตัวเองให้เป็นที่สนใจขององค์กร จะว่าไปแล้วการเขียน Resume ให้น่าสนใจนั้นถือเป็นศิลปะอย่างหนึ่ง ซึ่งมีจุดมุ่งหมายเพื่อทำให้ผู้อ่านรู้สึกสนใจในตัวคุณจากการแค่ " มอง Resume ของคุณอย่างผ่านๆ " ทำอย่างไรล่ะ? จะเขียนยังไงให้คนมาสนใจโดยใช้ประโยคไม่กี่ประโยค? บทความนี้จึงต้องการจะนำเสนอมุมมองของผู้อ่าน Resume ในเชิงอารมย์ (Pathos) เพื่อจะใช้ประกอบการเขียน Resume ที่มีประสิทธิภาพต่อไป
ผมลอง Google หาว่าการขายตัวเองผ่านกระดาษ 1 แผ่นที่ดีที่น่าสนใจนั้นควรจะเป็นอย่างไร พอดีไปเจอเวปนึง ซึ่งเขียนได้อย่างน่าสนใจมาก ก็เลยจะเอามาแปลแบบสรุปและวิเคราะห์ให้ได้ชมกันนะจ๊ะ


หัวข้อแรกว่าด้วยเรื่องว่าเขา (Recruitment Team) เหล่านั้นอ่าน Resume กันอย่างไร
  • อย่างแรกสุดของการเขียน Resume คือคนอ่านไม่มีเวลามากในการอ่าน เขาเหล่านั้นใช้การ Scan คร่าวๆ ดังนั้นคุณจึงควรเขียนให้รัดกุม (ส่วนตัวคิดว่าไม่ควรเกิน 1 หน้ากระดาษ A4 หน้าหลัง) ซึ่งต้องทำความเข้าใจก่อนว่าการเป็นพนักงานที่ดีนั้น ท่านจะต้องมีความสามารถในการสื่อสารด้วยเช่นกัน หากไม่สามารถ Present ตัวเองได้อย่างรัดกุมภายในหน้ากระดาษที่จำกัดได้ นั่นแปลว่าท่านก็ยังไม่มีความสามารถทางการสื่อสารที่ดีพอ
  • สิ่งแรกที่เขาเหล่านั้นจะดูคือ หัวเรื่อง
  • รองลงมาคือ Objective Statement ซึ่งนั่นแปลว่าการเขียน Resume ที่ดีควรจะมี Objective ที่แสดงถึงจุดประสงค์ของการสมัครเข้าทำงานด้วย
  • ต่อมาคือสถานที่ที่อยากทำงาน ซึ่งในข้อนี้หลายคนอาจจะมองข้าม แต่อันที่จริงแล้วสถานที่ในการทำงานก็เป็นอีกหนึ่งตัวแปรสำคัญของการตัดสินใจของ Recruitment Team ด้วย แน่นอนว่าการที่มีที่พักอยู่ใกล้ที่ทำงานหรือสามารถเดินทางไปทำงานได้อย่างสะดวก ถือเป็นข้อได้เปรียบกว่าคนที่มีที่พักอยู่ไกลจากสถานที่ทำงาน
  • สุดท้ายและท้ายสุดคือประสปการณ์และเกรดเฉลี่ย
หัวข้อที่ 2 ว่าด้วยเรื่องหัวข้อไหนที่พวกเขาไม่อยากอ่าน
  • Cover Letter เป็นเรื่องที่ปฏิเสธไม่ได้ เมื่อลองคิดในทางกลับกัน ถ้าเป็นผม ผมก็คงจะไม่อ่าน Cover Letter เช่นกัน แต่อย่างไรก็ตาม โดยส่วนตัวคิดว่าการเขียนจดหมายสมัครงานที่ดีก็ควรจะมี Cover Letter ไว้ก่อนเพื่อความเป็นทางการครับ
  • รายชื่อวิชาที่เรียน
  • รางวัล, ข้อมูลส่วนตัว, งานอดิเรก จากข้อนี้ 2 ข้อหลังเป็นส่วนที่ไม่ควรใส่ใน Resume มากที่สุดเนื่องจากเป็นข้อมูลที่ไม่มีความเกี่ยวข้องกับงานที่ทำเลย
  • ข้อความที่เป็นย่อหน้ายาว การเขียน Resume ให้น่าสนใจควรจะแยกเป็น Bullet เพื่อให้ง่ายต่อการ Scan ของเขา (Recruitment Team) ครับ
  • List ของ Skill ที่ยาวจนเกินไป
จากสองหัวข้อข้างบน ถ้านำมาคิดต่อจะสามารถรู้ได้ว่า การเขียน Resume ที่ดีนั้นถือเป็นการสื่อสารให้กับผู้รับสารได้รู้ถึงความสามารถในการสื่อสาร ซึ่งถือเป็น Softskill อย่างหนึ่งได้อย่างมีประสิทธิภาพโดยไม่จำเป็นต้องไปเขียนบอกพวกเขาว่าคุณมีความสามารถในการสื่อสารได้ดีแค่ไหน พวกเขารู้ได้จากการอ่าน Resume ของคุณนั่นแหละครับ

Title

ไม่ควรเขียนหัวข้อดังต่อไปนี้
  • B.S. in CS & Math
  • Recent Graduate's Resume
  • Resume
  • BS/CS seeks Unix Job
  • Unix Person Seeks Employment
ทำไมล่ะ ทำไมถึงห้ามเขียนหัวข้อแนวนี้ เพราะถ้าเขียนหัวข้อแนวนี้ นั่นแปลว่าคุณไม่ได้แสดงให้เห็นว่าคุณแตกต่างจากคนอื่นอย่างไร อีกทั้งนั่นยังแปลว่าคุณไม่ใส่ใจในการนำเสนอให้ตัวคุณโดดเด่นหรือน่าสนใจกว่าคนอื่น " ผมจะจ้างคุณทำไมล่ะครับ ก็ในเมื่อ Resume ของคุณเหมือนกับคนที่ผมเคยอ่านก่อนหน้านี้ "

Experienced Ada Engineer to Relocate in Silicon Valley

นี่คือตัวอย่างการเขียนหัวเรื่องที่ดี ทำไมล่ะ ถ้าสังเกตุดีๆ การเขียนหัวเรื่องแบบนี้สามารถสื่อสารได้อย่างมีประสิทธิภาพได้ภายใน 8 คำ
  1. เขาบอกว่าเขามีประสปการณ์
  2. เขาบอกว่าเขาต้องการงาน Ada
  3. เขาบอกว่าเขาอยากทำงานใน Silicon Valley

Objective Statement

สำหรับส่วนนี้ ถือเป็นการเปิดโอกาสให้แสดงถึงความตั้งใจ ความแน่วแน่ ในการทำงาน คนที่เขียน Resume อย่างฉลาดมักจะใช้จุดนี้ในการเรียกคะแนนได้อย่างเป็นกอบเป็นกำ อย่างไรก็ตามไม่ควรเขียน Objective ตามประโยคข้างล่าง
  • A position combining software, hardware, and systems design, development, and support.
  • Seeking a challenging position as a software engineer developing system or application software in a UNIX/C environment.
ทำไม? คำตอบง่ายๆก็คือ ทั้งสองแบบไม่ได้บอกรายละเอียดได้อย่างชัดเจนพอ

I desire to work for a leading-edge company designing state-of-the-art user interfaces for graphics workstations. The position should lead to software product management and should offer possibility of learning software marketing.


และนี่ก็คือตัวอย่างที่ดีในการเขียน Objective Statement

Experience/GPA

ถ้ามีประสปการณ์การทำงาน 5 ปีขึ้นไป ไม่ต้องไปสนใจ GPA ครับ สิ่งที่เขาเหล่านั้นอยากจะเห็นใน Section นี้ก็คือ
  • คุณมีระเบียบและทำงานอย่างเป็นระบบ
  • คุณมีความสามารถในการสื่อสารที่ดี
  • คุณมีความสามารถ (ในงานด้านที่คุณมาสมัคร)
ถ้าคุณมีประสบการณ์ บอกไปครับว่าคุณเคยทำอะไรให้กับองค์กร ซึ่งแสดงถึงการคิดอย่างเป็นระบบ ภาวะความเป็นผู้นำ ความสามารถทางการสื่อสาร หรือความสามารถอื่นๆบ้าง หรือถ้าคุณเป็นเด็กจบใหม่ ใน Section คุณก็สามารถแสดงให้เขาเห็นถึงความสามารถของคุณได้ ส่วนนี้ถือเป็นส่วนที่สำคัญมากในการตัดสินใจว่า เขาจะรับคุณเข้าทำงานหรือไม่ ดังนั้นคุณควรแสดงให้เค้าเห็นว่าคุณเป็นตัวของตัวเอง มีความคิดสร้างสรรค์ และอย่าลอกตามแบบ Resume ที่คุณเคยเห็นครับ

แหล่งที่มา http://www.cs.umsl.edu/~sanjiv/resume.hlp.html

Freeware พาเพลินเชิญคุณตามสบาย

สวัสดีครับช่วงนี้ว่างมากก็เลยมาอัพบล๊อกซะหน่อย วันนี้ผมจะมาแนะนำและล้างสมองท่านทั้งหลายให้หันมาใช้ Freeware ครับ


Freeware คืออะไร
Freeware ก็คือ Software ที่ถูกพัฒนาขึ้นมาเพื่อให้ผู้ใช้งานเลือกใช้ได้โดยไม่เสียเงินนั่นเอง


ทำไมต้องใช้ Freeware ด้วย

  • อย่างแรกเลยครับสงสารโปรแกรมเมอร์อย่างพวกผมเถอะครับ T^T การใช้ Software ผิดลิขสิทธิ์มันเป็นอาชญากรรมนะครับ
  • Freeware สามารถ Update เป็นเวอร์ชั่นใหม่ได้โดยไม่เสียเงินซักบาท
  • เป็นการเปิดโลกทัศน์ตัวเองให้ไม่ยึดติดกับเครื่องมือครับ "จอมยุทธ์ย่อมไม่เลือกกระบี่" ฮ่าฮ่า เมื่อเราโลกทัศน์กว้างขึ้น เราสามารถที่จะเลือกใช้เครื่องมือได้อย่างเหมาะสมกับงานมากยิ่งขึ้นครับ

ถ้าจะให้พูดหมดเกี่ยวกับความดีงามหรือทำไมต้องมี Freeware ภายในวันนี้คงร่ายยาวไป 3 หน้าแน่นอน ดังนั้นผมขอตัดบทเพียงแค่นี้แล้วจะนำท่านเข้าไปสู่ Session ของการแนะนำ Freeware น่าใช้ที่เพิ่มเติมจากที่ท่านรู้จักหรือเพิ่มเติมจาก Software ดังตามท้องตลาดทั่วไปกลั่นกรองจากประสบการณ์ตรง กันเลยนะครับ


Web Browser

  • Google Chrome : เร็วสุดยอดราวกับติดเทอร์โบ
  • Opera : อันนี้เป็น Web Browser ที่ว่องไวปานลมกรดอีกตัว และอาจจะกิน CPU น้อยกว่า IE หรือแม้แต่ Firefox ด้วยซ้ำ
  • Safari : อันนี้ผมติดมาจาก MAC ครับ ทั้ง 3 ตัวผมเวียนกันใช้ แล้วแต่อารมย์

File Sharing

  • uTorrent : เอาไว้โหลดบิท
  • LimeWire Basic : อันนี้ก็เอาไว้โหลดบิท

Messaging and Chat

  • Digsby : เป็น IM ที่ผมชอบมากที่สุดตัวนึงเนื่องจากใช้ Online ได้หลายประเภท (Mail แบบ Realtime), IM, และ Social Network แถมออนได้ทีละหลาย Account อีกตะหากก็เลยติด IM ตัวนี้ไปแล้วครับ
  • Google Talk : อันนี้เคยใช้แต่ลืมไปเลยเมื่อเจอ Digsby
  • Pidgin : อันนี้เคยเอามาลองใช้ รู้สึกว่าจะมี Plug-in เจ๋งๆหลายตัวอยู่
  • Thunderbird : เคยแอบลงไว้เช็คเมลล์

File Transfer

  • CuteFTP : เอาไว้ Transfer File ขึ้นไปบน Server
  • FileZilla : เหมือนข้างบนแต่ Icon สวยกว่า
  • Orbit Downloader : Download Manager ที่ร้ายกาจอีกตัว
  • TeraCopy : ตัวนี้เอาไว้ Copy หรือ Cut File ใน Windows ให้ไวขึ้นครับ

Office Tools

  • Foxit Reader : ตัวนี้ภูมิใจนำเสนอมากครับ เอาไว้อ่าน PDF แต่กิน CPU น้อยกว่าบางค่าย (มีแอบจิก) เยอะครับ
  • OpenOffice : เลี่ยงไม่ได้ถ้าจะใช้ Office แบบ Freeware
  • PDFCreator : เอาไว้สร้าง PDF

Development Tools and Administration

  • Notepad++ : เอามาแทน Edit Plus ครับ
  • Beyond Compare : นี่ก็สุดยอด Software อีกตัว ใช้เปรียบเทียบ Code (สำหรับผม) แต่ยังมี Feature เจ๋งๆซ่อนอยู่อีกมากมาย
  • UltraVNC : อันนี้เอาไว้ส่องหน้าจอชาวบ้าน

System Tuning

  • CCleaner : อันนี้สำหรับผม ขาดไม่ได้ครับ เอาไว้ทำความสะอาดเครื่อง
  • Defraggler : เอาไว้ Defrag เครื่องดูแล้วสบายใจกว่าใช้ของ Windows
  • Process Explorer : เอาไว้ดู Process คล้าย Task Manager ของ Windows ครับ
  • Recuva : กู้ข้อมูล
  • Tweak UI : ใช้ Customize Windows ให้แรงตามใจชอบครับ
  • Unlocker : เคยมั้ยกับบาง File หรือ Folder ที่ลบไม่ได้เพราะมัน Lock ปัญหานั้นจะหมดไ

Compression and Backup

  • 7-Zip : เหมือน WinZip หรือ WinRAR แต่เบากว่าเยอะครับ

Audio and Video

  • AIMP : โปรแกรมนี้ไร้ที่ติ ทำให้ผมเลิกใช้ Winamp ไปเลยครับ
  • K-Lite Mega Codec Pack : เอาไว้เป็น Plug-in เพื่อให้ดูหนังได้หลายนามสกุล
  • Foobar2000 : อันนี้เสียงดีมาก แถม Light Weight ด้วย เปิดไปด้วย ทำ Photoshop ไปด้วยยังไหว แต่ Icon มันทุเรศเลยไม่ใช้
  • SUPER : สุดยอดโปรแกรม Covert File
  • VLC Media Player : นี่ก็สุดยอดโปรแกรม Media Player
  • GOM Player : ทีเด็ดคือ File ยังโหลดไม่เสร็จ แต่ก็เปิดดูได้ด้วย GOM
  • KMPlayer : อันนี้ดูได้หลายนามสกุลเหมือนกันครับ

Photos and Images

  • PhotoScape : ปรับแต่งรูปแบบง่ายๆ มี Feature ฮาฮามากมาย
  • Blender : เอามาทำ 3D
  • Picasa : Image Viewer ครับ อีกผลิตภัณฑ์จาก Google
  • The Gimp : เกือบจะแทน Photoshop ได้เลยนะ

CD and DVD Tools

  • DAEMON Tools Lite : เอาไว้ Mount พวก Image File
  • ImgBurn : Burn แผ่นคับ

Anti-Virus

  • Cloud Antivirus : อันนี้ต้องขอสารภาพว่าไม่ค่อยได้ลง Anti Virus เลยไม่ค่อยจะรู้เรื่องรู้ราวกับเขา เห็น Icon มันน่ารักดีก็เลยลง

Desktop Widget

  • Google Desktop : มี Widget ที่เท่และมีประโยชน์เยอะแยะเลยครับ
  • Growl : โปรแกรมขี้ฟ้อง
  • Rainlendar : เอาไว้เป็นปฏิทินแล้วก็ To do list

โปรแกรมเกือบทั้งหมดนี้ท่านสามารถ Dowload ได้จาก http://www.filehippo.com/ ฟรีจ้า ตอนนี้นิ้วจะหักแล้วไปก่อนดีกว่า

Wednesday, April 7, 2010

ว่าด้วยเรื่อง CMMI

เมื่อไม่นานมานี้เพิ่งทราบข่าวจากเพื่อนว่าบริษัทที่ทำงานเก่าเพิ่งได้ CMMI LV5 เป็นบริษัทไทยบริษัทแรก ก็เลยลองเข้ามาหาข้อมูลแล้วก็วิเคราะห์ว่า CMMI คุ้มกับการลงทุนจริงหรือ

CMMI คืออะไร

CMMI ย่อมาจาก Capability Maturity Model Integration ซึ่งเป็นต้นแบบวัดวุฒิภาวะของการทำงานอย่างเป็นระบบโดยสถาบัน Software Engineering Institute (SEI) แห่งมหาวิทยาลัย คาร์เนกี เมลลอน ในสหรัฐอเมริกา โดย CMMI มีพื้นฐานความคิดบนหลักการคุณภาพว่า หากกระบวนการทำงานดี ผลลัพธ์ต้องดี ในทำนองเดียวกัน วุฒิภาวะความสามารถของบริษัทหรือหน่วยงานนั้น ก็ขึ้นอยู่กับผลการทำงานในอดีตของบริษัทหรือหน่วยงานนั้น SEI ได้พัฒนาต้นแบบวุฒิภาวะความสามารถออกมาเป็นห้าระดับ ดังนี้


  • ระดับแรก (Performed level) เป็นระดับเบื้องต้นซึ่งอาจกล่าวได้ว่า บริษัททั่วไปต่างก็อยู่ในระดับนี้ คือ ยังทำงานแบบไม่เป็นระบบ การทำงานต้องพึ่งผู้ที่มีประสบการณ์เป็นหลัก
  • ระดับที่สอง (Managed level) การทำงานจะมีความเป็นระบบมากขึ้น มีการนำหลักการจัดการโครงการมาใช้ในการบริหารงานของแต่ละโครงการ
  • ระดับที่สาม (Defined Level) เป็นระดับที่หน่วยงานได้จัดทำมาตรฐานการทำงานของหน่วยงานขึ้น โดยการพิจารณาปรับปรุงจากการดำเนินงานในระดับที่สอง ในระดับนี้การทำงานจะมีมาตรฐาน สามารถวัดและจัดเก็บสถิติผลการดำเนินงานเอาไว้ได้
  • ระดับที่สี่ (Quantitatively Managed Level) เป็นระดับที่นำเอาสถิติการดำเนินงานที่จัดเก็บไว้มาวิเคราะห์ เพื่อหาจุดบกพร่อง และแก้ไขข้อบกพร่องได้
  • ระดับที่ห้า (Optimizing level) เป็นระดับวุฒิภาวะสูงสุด เป็นระดับที่หน่วยงานดำเนินการปรับปรุง กระบวนการทำงานของตนเองอย่างต่อเนื่อง มีการจัดกระบวนการทำงานใหม่ ให้สอดคล้องกับเทคโนโลยีใหม่ๆ ที่เกิดขึ้น และมีการป้องกันไม่ให้ข้อบกพร่องเกิดขึ้น

ข้อมูลจาก : http://cmmi.wikidot.com/faq

แล้วทำไมต้องใช้ CMMI

  • CMMI เป็นหลักการหนึ่งที่เน้นกระบวนการพัฒนาซอฟต์แวร์เมื่อเทียบกับหลักการอื่น ไม่ว่าจะเป็น ISO, COBIT, etc. จะเห็นว่า CMMI เป็นหลักการที่มีแนวทางและรายละเอียดชัดเจนที่จะนำไปสู่การปฏิบัติตามได้ง่าย
  • CMMI เป็นหลักการสากลที่ได้รับการยอมรับอย่างกว้างขวางทั่วโลก ไม่ใช่เฉพาะหน่วยงานที่พัฒนาซอฟต์แวร์เท่านั้น ยังรวมถึงหน่วยงาน R&D ด้วยดังตารางด้านล่างนี้ เนคเทคซึ่งเป็นหน่วยงาน R&D เช่นกันดังนั้นถ้าเนคเทคมีกระบวนการทำงานที่เป็นสากล ก็สามารถที่จะทำงานร่วมกับหน่วยงานระดับชาติอื่นได้อย่างมีประสิทธิภาพ และนำไปสู่ความร่วมมือที่ยั่งยืนสามารถดูรายละเอียดของหน่วยงานที่ผ่านการประเมินตามหลักการ CMMI ทั่วโลกตาม
  • กระบวนการทำงาน มีความชัดเจน และเป็นระบบมากขึ้น กระบวนการมีการปรับปรุงอย่างต่อเนื่องเพื่อประโยชน์สูงสุดขององค์กร
  • มีเครื่องมือสนับสนุนกระบวนการทำงาน ทำให้การทำงานเป็นไปอย่างมีประสิทธิภาพมากยิ่งขึ้น
  • การทำงานร่วมกันของบุคลากร เป็นไปอย่างมีประสิทธิภาพ
  • บุคลากรของหน่วยปฏิบัติการรวมถึงบุคลากรใหม่สามารถทำงานได้อย่างมีประสิทธิภาพไม่ต้องคอยถามคนใดคนหนึ่ง
  • ผลิตภัณฑ์ที่ได้มีคุณภาพมากขึ้น เนื่องจากกระบวนการที่ดีนำไปสู่ผลงานที่ดี งานเป็นไปตามแผนที่กำหนด มีวิธีการ, องค์ความรู้ที่เกี่ยวข้องชัดเจน

CMMI ทำให้องค์กรคุ้มต่อการลงทุนหรือไม่

จากข้อมูลที่ผมหามาให้ด้านบน หลายคนอาจจะคิดว่า "อ้าว!!~ ถ้ามันดีขนาดนี้แล้วทำไมถึงจะไม่คุ้มล่ะ ทำไปเลย" แต่ช้าก่อน ทุกอย่างย่อมมีข้อดีและข้อเสียของตัวมันเองครับ ถ้าใช้หลักการวิเคราะห์แบบ SWOT Analysis หลายท่านอาจจะเห็นจุดเด่นและจุดด้อยของ CMMI ได้ชัดเจนมากยิ่งขึ้น ซึ่งผมขอวิเคราะห์เฉพาะ Main Key และจะรวมแบ่งเป็น 2 หัวข้อคือข้อดีและข้อเสียเท่านั้นนะครับ ไม่รวมรายละเอียดปลีกย่อย

ข้อดี

  • สิ่งที่สำคัญที่สุดที่สามารถดึงดูด Software House ทั้งน้อยใหญ่ให้หันมา Implement CMMI นั้นก็คือ" ชื่อเสียง " ครับ ผมเคยได้ยิน (ได้อ่าน) บทความนี้มาจากแหล่งหนึ่ง

Becoming CMMI Level 5 is a business
decision. If you want to bid on large government defense projects, CMMI
requirements may be mandatory.

นั่นกำลังจะบอกเราว่า Software House ที่มีมาตรฐานรับรองย่อมเป็นต่อ ซึ่งแน่นอนทุกคนรู้ดีถึงจุดนี้

  • การทำงานร่วมกันของบุคลากร เป็นไปอย่างมีประสิทธิภาพ แน่นอนว่าข้อนี้คือข้อดีของการ Implement CMMI เนื่องจากต้องทำเอกสารมากมาย ดังนั้นจึงไม่จำเป็นต้องมี "One Man Show" เพราะสามารถพึ่งพาเอกสารได้เช่นกัน

ข้อเสีย

  • ข้อเสียเพียงข้อเดียวแต่สามารถสร้างปัญหาให้กับองค์กรได้อย่างสาหัสของ CMMI ก็คือ "ความไม่พอเพียง" ครับ การที่ต้องทำเอกสารกองเท่าภูเขา (2 ลูก) และกลับกันจะเป็นการเพิ่มงานที่ไม่ได้ใช่ประโยชน์อย่างจริงจังหรือแม้กระทั่งการที่ไม่ Customize Process ตัด ต่อ เติม แต่ง ให้เหมาะสมกับองค์กร ซึ่งสามารถทำได้ถ้าไปถึง CMMI LV5 (Optimizing level เป็นระดับวุฒิภาวะสูงสุด เป็นระดับที่หน่วยงานดำเนินการปรับปรุง กระบวนการทำงานของตนเองอย่างต่อเนื่อง มีการจัดกระบวนการทำงานใหม่ ให้สอดคล้องกับเทคโนโลยีใหม่ๆ ที่เกิดขึ้น และมีการป้องกันไม่ให้ข้อบกพร่องเกิดขึ้น) ทำให้ผลที่ได้รับไม่คุ้มค่ากับการลงทุนเท่าที่ควร อีกทั้งองค์กรนั้นต้องปรับเปลี่ยนวัฒนธรรมองค์กรและการบริหารซึ่ง "เปลี่ยนยากมาก" เป็นที่รู้กันอยู่ทั่วไป และถ้าสังเกตุจะเห็นว่าหลายองค์กรในไทย ไม่ได้อยากใช้ CMMI จริงจัง เพียงแต่หวังบางอย่างจากผลพลอยได้ (ดูได้จากตัวแดงๆหนาๆ ที่เป็นภาษาอังกฤษด้านบน) จึงทำให้การใช้ CMMI Model ในไทยยังไม่ประสบความสำเร็จเท่าที่ควร เมื่อเปรียบเทียบกับ Agile ซึ่งอ้างอิงหลัก "(เขียนโปรแกรม ;P) พอเพียง" แล้ว Agile ดูจะเหมาะสมกับคำว่า "Work Smart not Work Hard" กว่า

สรุปคือ "ดีมาก" (ดูขัดแย้งกับข้อเสียใช่มะ) ถ้าเราปรับแต่งให้เข้ากับวัฒนธรรมและกระบวนการการทำงานขององค์กรอีกทั้งยังต้องได้รับความร่วมมือจากพนักงาน บุคลากร ไปจนถึงระดับผู้บริหาร แต่ทั้งนี้ทั้งนั้นการทำ Software Process Improvement ไม่สามารถแก้ไขได้โดยใช้ CMMI อย่างเดียว เพราะการแก้ปัญหานี้ไม่ใช่ว่าจะแก้ไขเฉพาะกระบวนการแต่องค์กรยังต้องแก้ไขทุกอย่างที่เกี่ยวข้องกับกระบวนการด้วย เหมือนการจูนเข้าหากันทั้ง 2 ฝ่าย

Tuesday, April 6, 2010

Overview AJAX

AJAX คืออะไร

AJAX มาจาก Asynchronous JavaScript And XML ซึ่งถ้าจะให้แปลงเป็นคำพูดที่เข้าใจได้ง่ายก็คือ "เทคนิคการใช้ JavaScript และ XML ในการทำงานร่วมกันโดยไม่สนใจความสัมพันธ์ของช่วงเวลา หรือ ไม่ต่อเนื่อง นั่นเอง" โดยสามารถรับส่งข้อมูลจาก Server และสามารถแสดงผลโดนไม่ต้องโหลดหน้าจอใหม่ ซึ่งแน่นอน จะช่วยเพิ่มการตอบสนอง, ความรวดเร็ว, และการใช้งานโดยรวมต่อผู้ใช้ รวมไปถึงให้ความรู้สึกไฮโซกับ Web Application ด้วย


AJAX ไม่ใช่เทคโนโลยีใหม่
เพียงแต่เป็นการนำเทคโนโลยีหลายตัวมารวมกันเพื่อประสิทธิภาพที่ดีขึ้น


ดังนี้
  1. Standard-based presentation ใช้ XHTML และ CSS ใช้เพื่อการแสดงผล
  2. Dynamic display and interaction ใช้ DOM ( Document Object Model ) เพื่อใช้ในการแสดงข้อมูลที่มีการโต้ตอบกับผู้ใช้
  3. Data interchange and manipulation ใช้เป็นรูปแบบข้อมูลในการแลกเปลี่ยน สามารถใช้ได้หลายรูปแบบ เช่น XML หรือ JSON
  4. Asynchronous data retrieval โดยใช้ XMLHttpRequest เพื่อแลกเปลี่ยนข้อมูลกับ Web Server
  5. และสุดท้าย JavaScript เพื่อ Binding ทุกอย่างเข้าด้วยกัน

"แล้วไงล่ะ ทำไมเราถึงต้องเรียนรู้ AJAX
แล้วมันแก้ไขปัญหาอะไรได้"

ก็อย่างที่กล่าวไปแล้วในข้างต้น

  • AJAX สามารถทลายกำแพงขีดจำกัดของ Web Application ได้
  • AJAX สามารถทำให้ Web ธรรมดากลายมาเป็น Dynamic Web ที่ไฮโซได้ราวกับใช้ Flash
  • AJAX ทำให้ Gmail, Google Map, หรือแม้กระทั่ง Facebook ดังระเบิดยิ่งกว่าเสื้อแดง
  • AJAX เป็นหัวใจของแนวคิด Web 2.0

แล้วหลักการทำงานของมันล่ะ



รูปจาก http://www.javalobby.org/articles/ajax/ajax-fig2_small.png



รูปด้านบนจะเป็นการทำงานแบบ Classic Application โดยจะเห็นได้ว่า ปกติแล้วเมื่อผู้ใช้งานมี Request ข้อมูลจาก Server โดยใช้ HTTP ตัว Server เองนั้นจะประมวลผลและส่งผลลัพธ์กลับไปเป็น HTML วิธีนี้เรียกว่า Request and Response ซึ่งผู้ใช้งานต้องรอระหว่างที่ Server ประมวลผลอยู่ (Synchronous) เมื่อมาดูการทำงานแบบ Asynchronous โดย Server จะทำการส่งผลลัพธ์ให้ผู้ใช้ทันทีโดยไม่ต้องรอให้ประมวลผลเสร็จก่อน โดยจะดึงข้อมูลก็ต่อเมื่อผู้ใช้ต้องการเท่านั้น

แล้วมันมีจุดอ่อนมั้ยล่ะ

มีแน่นอน ทุกเทคโนโลยีย่อมมีจุดอ่อน ดังนั้นจึงมีเทคโนโลยีใหม่ขึ้นมาเพื่อแก้จุดอ่อนเหล่านั้น เช่นเดียวกับ AJAX ซึ่งกำลังรอเทคโนโลยีหรือเทคนิคใหม่มาแก้จุดอ่อนที่มี (เท่าที่นึกออก) ดังต่อไปนี้

  • ปัญหาการใช้งานเกี่ยวกับปุ่ม "Back" บน Web Browser และการทำ Favorites ซึ่งการทำแบบนี้บางครั้งจะได้ Page ที่ไม่ควรจะเป็น ดังนั้นกลุ่มผู้พัฒนาจึงได้คิดค้นเทคนิคการใช้ iFrame ที่มองไม่เห็นเพื่อสั่งให้ Web Browser เปลี่ยนแปลงรายการหน้าของปุ่มก่อนหน้านี้
  • ปัญหา JavaScript เนื่องจากว่า AJAX ใช้ JavaScript ซึ่งอาจทำงานแตกต่างกันขึ้นอยู่กับ Web Browser และถ้าต้องการให้เข้ากันได้ในหลาย Web Browser อาจต้องการการทดสอบและตรวจสอบความเข้ากันได้บน Web Browser ที่ต่างกัน ซึ่งบางครั้งอาจจำเป็นที่จะต้องเขียนโค้ดแยกเช่นบางส่วนสำหรับ Internet Exploror และสำหรับ Firefox เป็นต้น

เมื่อเทียบกับประโยชน์แล้วทุกท่านจะเห็นได้ว่า AJAX นั้นน่าใช้งานขนาดไหน ยิ่งในปัจจุบันมี AJAX Library มากมายหลายหลากให้เลือกใช้ ซึ่งในนั้นจะมี Feature ที่มีประโยชน์สำหรับ Software Developer อย่างพวกเราเยอะแยะเต็มไปหมด เช่น jQuery (อันนี้ตัวโปรด) ทำให้ AJAX น่าจะกลายมาเป็นเครื่องมือที่นักพัฒนา Web ทุกแขนงน่าจะต้องเรียนรู้ติดตัวเอาไว้ ส่วนวันนี้เมื่อยมือแล้ว ไปดีกว่า