เคล็ดลับสร้างสุดยอดธุรกิจ e-Commerce ให้สำเร็จและเติบโตอย่างยั่งยืน

6 Mar 2020

ดูเหมือนจะธรรมดา แต่ไม่ธรรมดา เพราะการสร้างธุรกิจที่สามารถแข่งขันได้และสำเร็จมันก็ไม่เคยง่าย

กระบวนการพัฒนาซอฟต์แวร์ของทีเอ็นที

พวกเราในฐานะที่เป็นผู้ให้คำปรึกษาด้านการนำเทคโนโลยีดิจิทัลมาอัพเกรดธุรกิจ (Digital Transformation) เพื่อเพิ่มประสิทธิภาพในการดำเนินงานและให้บริการของธุรกิจชั้นนำของประเทศไทยมาหลายแห่ง หรือจะเรียกว่าเป็นผู้ที่มีโอกาสได้อยู่เบื้องหลังการพัฒนา ธุรกิจ e-Commerce หรือระบบค้าขายออนไลน์ ไม่ว่าจะเป็นธุรกิจ e-Commerce ขายสินค้าอุปโภคบริโภค, การซื้อ-ขายทองคำและเงินตราต่างประเทศ รวมถึงงานขายการบริการ อาทิเช่น ระบบ Loyalty Program และหากนำมาคิดเป็นมูลค่ารวมการซื้อขายผ่านระบบ e-Commerce ที่พวกเราพัฒนาให้แก่องค์กรเหล่านี้ ก็คงเป็นตัวเลขหลักไม่น้อยกว่า 1,000 ล้านบาทขึ้นไปต่อวัน

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

ศึกษาเพื่อประเมินแนวโน้มทิศทางของธุรกิจก่อนลงมือทำ

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

Global supply chain ภาพนี้จะช่วยอธิบายถึงแหล่งทรัพยากรหลักที่กระจายอยู่ทั่วโลก

Global supply chain ภาพนี้จะช่วยอธิบายถึงแหล่งทรัพยากรหลักที่กระจายอยู่ทั่วโลก


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

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

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

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

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

กำหนดเป้าหมายโครงการให้ชัดเจนและทุกคนต้องมีเป้าหมายเดียวกัน

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

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

  • "เป้าหมาย" ของโครงการคืออะไร ตัวอย่างเช่น ต้องสร้างเว็บอีคอมเมิร์ซ เพื่อขายทองคำแท่งออนไลน์ผ่านเว็บไซต์
  • โครงการนี้ต้องการแก้ไขปัญหาของ "ใครบ้าง" เช่น เพื่อช่วยทีมขายของบริษัท และยังเป็นการอำนวยความสะดวกลูกค้า ลูกค้าจะได้ไม่ต้องมารอคุยกับฝ่ายขาย เห็นราคาแล้วพอใจก็กดปุ่มซื้อได้ทันที
  • "ปัญหา" ของกลุ่มเป้าหมายคืออะไร ปัญหาที่เกิดกับทีมขายของบริษัทนี้คือพนักงานขายจำเป็นต้องมีทักษะความรู้ด้านการเงินการลงทุน และต้องมีประสบการณ์สูงในการขาย เพราะทองคำแท่งไม่ใช่สินค้าราคาถูก ดังนั้นการจะหาพนักงานขายที่มากประสบการณ์เข้ามารับออเดอร์จากลูกค้ารายใหญ่ จึงเป็นเรื่องยากและยังต้องจ่ายค่าจ้างแพง แถมยังมีโอกาสถูกซื้อตัวจากคู่แข่งได้ง่ายด้วย ในมุมกลับกันลูกค้าอยากจะซื้อ-ขายทองคำแท่ง หากสายไม่ว่างก็ทำรายการไม่ได้ ไม่สะดวก ครั้นพอติดต่อได้ราคาก็เปลี่ยนไปในอยู่ในจุดที่ไม่ได้กำไรแล้ว ปัญหาพวกนี้นอกจากจะทำให้ให้ลูกค้าหงุดหงิดกับงานบริการ ยังส่งผลต่อความน่าเชื่อถือขององค์กรอีกด้วย
  • "แก้ปัญหาโดย" สร้างซอฟต์แวร์ระบบเว็บไซต์ e-Commerce ที่สามารถช่วยให้ลูกค้าสามารถส่งคำสั่งซื้อหรือขายทองคำแท่งได้ด้วยตนเอง โดยราคาที่ระบบจะเสนอให้แก่ลูกค้าต้องเป็นราคาที่เคลื่อนไหวตลอดเวลาตามราคาทองคำแท่งในตลาดโลกและเป็นราคาเดียวกับที่พนักงานขายเสนอให้แก่ลูกค้า
เว็บไซต์ e-Commerce "ขายทองคำแท่ง"
+
ขายสินค้าออนไลน์ด้วยสินค้าราคาแพง และเป็นสินค้าที่พฤติกรรมผู้บริโภคยังไม่นิยมในการซื้อออนไลน์
+
เสนอราคาแบบเรียลไทม์แปรผันกับราคาทองคำและค่าเงินในตลาดต่างประเทศ
+
เชื่อมกับ payment gateway ของธนาคารพาณิชย์ในประเทศไทยเพื่อรองรับการโอนเงินเข้า-ออกครั้งละหลักหมื่นถึงหลักหลายล้านบาท
+
ต้องมีมาตรการการรักษาปลอดภัยของระบบที่ดีพอๆกับมาตรฐานของธนาคาร

ค้นคว้าและวิเคราะห์ข้อมูลเชิงลึกเพื่อสร้างแผนที่ประสบการณ์ให้ทุกคนเห็นภาพใหญ่

  • การเก็บข้อมูลจากทรัพยากรทั้งหมดของธุรกิจ
  • ศึกษาและค้นคว้าข้อมูลไม่เฉพาะจากอินเตอร์เน็ต แต่ต้องคุยกับพาร์ทเนอร์ของธุรกิจทั้งในประเทศและต่างประเทศ (หากมี) ด้วย
  • วิเคราะห์ข้อมูล นำสิ่งที่ได้มาวิเคราะห์ความเป็นไปได้ในการออกแบบและพัฒนาระบบงาน
  • สร้างเป็นแบบจำลอง ถ้าใช้ศัพท์ของนักพัฒนาซอฟต์แวร์เราจะเรียกกันว่า wireframe

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

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

นักพัฒนาควรโฟกัสที่...

ใครคือกลุ่มเป้าหมายที่ต้องการเข้าไปช่วยแก้ไข วัตถุประสงค์ของกลุ่มเป้าหมายคืออะไร หา pain point ให้เจอ เลือกมาซัก 1-2 ปัญหาที่คิดว่าสำคัญและเร่งด่วน จากนั้นจึงค่อยหาแนวทางในการแก้ไขปัญหา สื่อสารเพื่อแลกเปลี่ยนทัศนคติกับกลุ่มเป้าหมายอย่างใกล้ชิด ระลึกไว้เสมอว่านักพัฒนาจะช่วยกลุ่มเป้าหมายให้มีความสุขมากขึ้นกับแนวทางที่ออกแบบนี้ได้อย่างไร

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

แผนที่ประสบการณ์ผู้ใช้ (User Journey Map)

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


การสร้างโมเดลต้นแบบจะช่วยให้ผู้ที่เกี่ยวข้องเห็นภาพก่อนลงมือพัฒนาระบบจริง

การจะสร้างบ้านแต่ละหลังยังต้องมีแบบแปลนหรือพิมพ์เขียว
การพัฒนาซอฟต์แวร์ระบบก็ควรต้องมีพิมพ์เขียวหรือ wireframe ด้วยเช่นกัน

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

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

ตัวอย่างการออกแบบ wireframe ในโครงการพัฒนาซอฟต์แวร์ระบบ

ตัวอย่างการออกแบบ wireframe ในโครงการพัฒนาซอฟต์แวร์ระบบ


และเพื่อให้แน่ใจว่าสิ่งที่ทุกคนคาดหวังจะเกิดขึ้นจริง นักพัฒนาจึงต้องดำเนินการทดสอบ Wireframe และการทดสอบ wireframe จำต้องมี scenario ประกอบด้วยเสมอ

scenario คืออะไร scenario คือการสมมติเหตุการณ์หรือการจำลองสถานการณ์จริงให้ user ทดลองใช้งานในระบบ เช่น กำหนดให้ user ค้นหาสินค้าและดำเนินการสั่งซื้อสินค้าชิ้นดังกล่าว โดยที่นักพัฒนาจะต้องเฝ้าสังเกตการณ์อย่างใกล้ชิดเพื่อดูปฏิกิริยาตอบสนองของ user ขณะใช้งาน wireframe และควรทำการทดสอบกับ user จำนวนมากกว่า 1 หรือ 2 คน เพราะ user แต่ละคนมีพื้นฐานความรู้และประสบการณ์ที่ไม่เหมือนกัน needs และ problems ย่อมแตกต่างกันเสมอ ยิ่งได้ทดสอบ wireframe ครอบคลุมผู้ใช้กลุ่มเป้าหมายมากเท่าใด ยิ่งมีโอกาสทำให้โครงการประสบความสำเร็จมากขึ้นเท่านั้น

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

การพัฒนาระบบตามแบบพิมพ์เขียว (Wireframe) ช่วยให้ทุกคนทำงานง่าย

หนึ่งใน กระบวนการการพัฒนาซอฟต์แวร์ที่สำคัญคือ การเขียนซอร์ซโค้ดโปรแกรม (coding) การเริ่มต้นที่ถูกต้องตั้งแต่การหาแนวคิด การพิสูจน์สมมติฐาน การออกแบบโครงสร้างระบบและสถาปัตยกรรมข้อมูล ตลอดจนการสร้างพิมพ์เขียว (wireframe) เพื่อใช้ในการทดสอบขั้นตอนการปฏิบัติงานและฟังก์ชันการทำงานของระบบนอกจากจะทำให้ user และนักพัฒนามั่นใจว่าเดินมาถูกทางแล้ว ดังนั้นแบบพิมพ์เขียว (wireframe) ที่ผ่านการทดสอบและปรับปรุงแล้วนั้นจึงมีความสำคัญและจำเป็นต่อทีมโปรแกรมเมอร์เป็นอย่างมาก

การเขียนซอร์ซโค้ดโปรแกรม (coding)

การเลือกใช้เทคโนโลยีและภาษาโปรแกรมอย่างเหมาะสม จะช่วยลดระยะเวลาการเขียนโค้ดและเพิ่มประสิทธิภาพของซอฟต์แวร์ด้วย


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

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

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

ต้องทดสอบซอฟต์แวร์ระบบให้แน่ใจก่อนถึงมือผู้ใช้จริง

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

ในบทความนี้ผมขอไม่ลงลึกในเรื่องกระบวนการทดสอบซอฟต์แวร์ แต่ก็จะเล่าพอสังเขป Software Testing Process ตามแบบฉบับ "ทีเอ็นที" มีขั้นตอนต่างๆ ดังนี้


  • การทดสอบความถูกต้องของลิงค์ : Shakedown Test
  • การทดสอบฟังก์ชันการทำงาน: Unit Testing
  • การทดสอบการเชื่อมต่อกับ Service อื่นๆ : SIT (System Integration Test)
  • การทดสอบเพื่อวัดผลตอบรับจากผู้ใช้งาน : UAT (User Acceptance Test)
  • การทดสอบประสิทธิภาพการทำงานของระบบ : NFT (Non Functional Test)

โดยปกติการทำ Software Testing เราจะกินเวลาประมาณ 20% - 30% ของโครงการ เหตุที่จะต้องทดสอบและปรับจูนซอฟต์แวร์นานขนาดนี้เพราะการทดสอบแต่ละขั้นตอนมีรายละเอียดค่อนข้างมาก โดยเฉพาะเรื่องการทดสอบประสิทธิภาพการทำงานของระบบ – NFT นั้นเป็นเรื่องที่นักพัฒนาส่วนใหญ่มักมองข้าม เจ้าของโครงการที่ขาดประสบการณ์เองก็ไม่ได้นึกถึงด้วย คนส่วนใหญ่มักมองแค่ว่าใช้งานได้ตามขอบเขตที่กำหนดกันไว้ก็น่าจะเพียงพอต่อการใช้งานจริงแล้ว โครงการพัฒนาซอฟต์แวร์ส่วนใหญ่จึงมักทำเฉพาะเรื่องการทดสอบเพื่อวัดผลตอบรับจากผู้ใช้งาน – UAT เท่านั้น เพราะมองว่าผู้ว่าจ้างยอมรับได้ก็แปลว่าโครงการจบ ซึ่งเป็นการผลักภาระการทดสอบระบบไปให้เป็นหน้าที่ของเจ้าของโครงการนั่นเอง ดังนั้นยิ่งซอฟต์แวร์มีซับซ้อนมากเท่าใด ทีมนักพัฒนาและเจ้าของโครงการยิ่งควรต้องทดสอบร่วมกันจนให้แน่ใจว่าจะไม่พบข้อผิดพลาดในภายหลังจากที่ระบบเปิดใช้งานแล้ว เพราะการทำงานที่ผิดพลาดในสายตาของบุคคลภายนอกองค์กรถือเป็นความเสี่ยงที่ส่งผลเสียต่อภาพลักษณ์และความน่าเชื่อถือของธุรกิจโดยตรง

สร้างมาตรฐานการพัฒนาระบบงาน

กระบวนการทดสอบซอฟต์แวร์ฉบับ “ทีเอ็นที”
หากผู้อ่านท่านใดสนใจเจาะลึกเรื่องนี้แนะนำให้ไปอ่านต่อได้ตามลิงก์นี้:
https://www.tnt.co.th/en/news/160-would-you-help-software-development-project-to-succeed


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

การดูแลรักษาระบบ เฝ้าระวัง และมองหาช่องทางพัฒนาระบบต่อไป

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


« Back to Result