เผยเทคนิคการพัฒนาองค์กรให้ทำงานแบบ digital อย่างเต็มรูปแบบ !!

Reading Time: 1 minute

 

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

  • ปริมาณโปรแกรมเมอร์ที่มีในบริษัทฯ ไม่เพียงพอที่จะพัฒนาซอฟต์แวร์ให้กับเจ้าหน้าที่ในแผนกต่างๆ
  • เจ้าหน้าที่ในแผนกต่างๆมีความสามารถในการอธิบายความต้องการของตนเองให้กับเจ้าหน้าที่โปรแกรมเมอร์ได้ในระดับหนึ่ง ประกอบกับประสพการณ์ในด้านธุรกิจของโปรแกรมเมอร์มีจำกัด ทำให้ requirement ที่โปรแกรมเมอร์ได้รับไม่ครบถ้วน ทำให้ซอฟต์แวร์ที่พัฒนาขึ้นไม่ตรงกับกระบวนการการทำงานตาม requirement ที่ได้รับ ทำให้ เจ้าหน้าที่ในแผนกต่างๆต้องทำ double-job และสุดท้ายก็ไม่ได้ใช้ซอฟต์แวร์ที่เจ้าหน้าที่โปรแกรมเมอร์พัฒนาขึ้น
  • โปรแกรมเมอร์ที่สมัครงานเข้ามาเปลี่ยนงานบ่อย (6เดือน ~ 1ปี) พนักงานใหม่ปฏิเสธที่จะรื้องานของโปรแกรมคนเก่าทำให้ซอฟต์แวร์ที่พัฒนาขึ้นใช้ภายในบริษัทใช้ได้เพียงระยะสั้น และต้องเริ่มต้นพัฒนาใหม่เรื่อยๆอยู่ตลอดเวลา
  • โปรเจ็คที่พัฒนาขึ้นใช้ภายในบริษัท ไม่มีบุคคลกลางที่ทราบถึงจุดหรือกระบวนการที่สามารถจะแก้ไข code ได้ในกรณีที่มีบั๊คเกิดขึ้น หรือเมื่อ requirement มีการเปลี่ยนแปลงได้ ทำให้ต้องหา solution ใหม่ๆมาใช้งานอยู่ตลอดเวลา
  • โปรเจ็คที่พัฒนาขึ้นใช้เวลานานเกินกำหนด ทำให้เกิดค่าใช้จ่ายในส่วนของเงินเดือนโปรแกรมเมอร์แบบไม่มีวันสิ้นสุด
  • การพัฒนาซอฟต์แวร์พิเศษให้เฉพาะแต่ละแผนกจำเป็นต้องใช้ทีมพัฒนาโปรแกรมที่มีความเชี่ยวชาญ การจ้างทีมงานภายในใช้เองทำให้มีค่าใช้จ่าย fixed cost ที่สูงขึ้นอย่างมากเนื่องจากต้องมีผู้เชี่ยวชาญคอยกำกับดูแล ออกแบบวางแผนงาน

และเพื่อแก้ปัญหาดังกล่าว เราขอแนะนำการพัฒนาระบบ IT และกระบวนการทำงานภายในองค์กรดังนี้ :

  • การทำงานภายในองค์กรควรมีซอฟต์แวร์ที่พัฒนาขึ้นเป็นพิเศษให้กับเจ้าหน้าที่แผนกต่างๆของบริษัทฯ โดนเน้นการเพิ่มประสิทธิภาพ พนักงานทำงานน้อยลง แต่ได้ผลลัพธ์เพิ่มขึ้นอยู่ตลอดเวลา
  • ให้มีเจ้าหน้าที่เก็บ Requirement โดยที่เจ้าหน้าที่ในแผนกต่างๆเพียงอธิบายความต้องการของตนเองคร่าวๆ ไม่ต้องครบถ้วนเชิงเทคนิกโปรแกรมเมอร์ทั้งหมดก็สามารถต่อยอดพัฒนาซอฟต์แวร์ขึ้น โดยมีผลลัพธ์ตรงกับกระบวนการในการทำงานของบริษัทได้
  • เจ้าหน้าที่ในแผนกต่างๆไม่จำเป็นต้องทำงาน double-job คีย์ข้อมูลซ้ำๆกันสองถึงสามที่
  • มีเอกสารหลักฐาน หรือบุคคลกลางที่ทราบกระบวนการโดยรวม สามารถแก้ไข code ได้ในกรณีที่มีบั๊คเกิดขึ้น หรือเมื่อ requirement มีการเปลี่ยนแปลงได้
  • มีการกำหนดงบประมาณในการพัฒนาซอฟต์แวร์แต่ละโปรเจ็คที่ชัดเจน ค่าใช้จ่ายไม่บานปลาย
  • ให้มีผู้เชี่ยวชาญนำเสนอ solution แบบ all-in-one เป็นการเพิ่มมูลค่า เป็นส่วนหนึ่งในงานบริการของบริษัท มีทีมพัฒนาโปรแกรมที่มีความเชี่ยวชาญ มีผู้เชี่ยวชาญคอยกำกับดูแล ออกแบบวางแผนงาน เพื่อตอบโจทย์การพัฒนาซอฟต์แวร์พิเศษให้เฉพาะ

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

การเก็บ Requirement

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

การวางแผนการทำงานทั้งระบบในเชิงนโยบาย

เช่นเดียวกับการพูดคุยกับเจ้าหน้าที่ตามแผนกต่างๆ การเก็บ Requirement เชิงนโยบายจากผู้บริหารเองก็เป็นส่วนที่สำคัญส่วนหนึ่งในการพัฒนาซอฟต์แวร์ ไม่ว่าจะเป็นแอพพลิเคชั่นเล็กๆที่ผลิตขึ้นใช้ภายในแผนกเพียง 1-2 ท่าน (เก็บ requirement จากหัวหน้าแผนก) หรือ ซอฟต์แวร์ ERP ที่ใช้ทั้งองค์กร (เก็บ requitement กับผู้บริหาระดับสูง) การกำหนดกฏเกณฑ์และเงื่อนไขต่างๆตั้งแต่การประชุมในครั้งแรกๆ ทำให้ทีมพัฒนาซอฟต์แวร์มีทิศทางในการเดิน และพัฒนาซอฟต์แวร์ให้เป็นไปตามทิศทางเดียวกับจุดหมายที่บริษัทต้องการจะไปให้ถึง ไม่ตามใจ user เลย 100%

การออกแบบหน้าจอตัวอย่าง

คงปฏิเสธไม่ได้ ว่า User Interface ที่สวยงาม และใช้งานง่ายเป็นส่วนสำคัญในการดึงดูดให้ user หรือพนักงานตามแผนกต่างๆมีความสนใจและต้องการใช้ซอฟต์แวร์ที่บริษัทลงทุนพัฒนาให้ ดังนั้น Graphic Designer จึงเป็นอีกหนึ่งบุคคลสำคัญในการพัฒนาซอฟต์แวร์นอกเหนือจาก​ System Analyst และ Programmer
การออกแบบหน้าจอตัวอย่าง นอกจากจะทำให้พนักงานตามแผนกต่างๆมีความรู้สึก ตื่นตัว ตื่นเต้นกับสิ่งใหม่ๆที่กำลังจะเกิดขึ้นแล้วนั้น ยังเป็นการเพิ่มความมีส่วนร่วมระหว่างเจ้าหน้าที่ตามแผนกต่างๆกับบริษัทในกระบวนการออกแบบโปรแกรมตั้งแต่เริ่มต้นอีกด้วย ไม่ว่าจะเป็นเรื่องง่ายๆอย่างสีของ background หรือ ขนาด font ไปจนถึงเรื่องที่ซับซ้อนขึ้น เช่น จำนวน input ที่อยู่บนหน้าจอ, ประเภทของ field ที่มีให้เลือก หรือ ข้อมูลที่สามารถโหลดมาได้จากอีกระบบ เป็นการเพิ่มประสิทธิภาพการทำงานโดยรวมโดยการลดการทำ double-job คีย์ข้อมูลซ้ำๆกันสองถึงสามที่
การนำตัวอย่างหน้าจอที่ทีม System Analyst และ Graphic Designer ออกแบบมาไปสอบถามกับ user ว่าถูกต้องหรือไม่ ก่อนการเริ่มพัฒนาซอฟต์แวร์จริงๆนั้นเป็นตัวช่วยหนึ่งในการควบคุมงบประมาณการพัฒนาซอฟต์แวร์ ไม่ทำให้ค่าใช้จ่ายบานปลายและทำให้ซอฟต์แวร์ที่พัฒนาขึ้นตรงกับกระบวนการการทำงาน มีเอกสารหลักฐาน มีบุคคลกลางที่ทราบกระบวนการโดยรวม เมื่อซอฟต์แวร์ถูกพัฒนาขึ้นแล้ว สามารถนำไปใช้งานได้จริงในระยะยาว ไม่ต้องเริ่มต้นพัฒนาใหม่เรื่อยๆอยู่ตลอดเวลา

วางโครงสร้างระบบและ ความปลอดภัย

เมื่อพูดถึงการทำงานภายในแผนก การวางแผนเรื่องความปลอดภัย การยอมปล่อยข้อมูลบาง field ให้ไม่ต้อง encrypt หรือเข้ารหัส เพื่อผลประโยชน์ในการทำ search & indexing ก็สำคัญไม่แพ้กัน การวางผังของ database ให้สอดคล้องกับวิธีการทำงานของ Programmer เป็นการย่นระยะเวลาการพัฒนาซอฟต์แวร์ ช่วยลดการพึ่งพา Programmer เพียงคนใดคนหนึ่ง ทำให้การทำงานคล่องตัวมากขึ้น สามารถสลับสับเปลี่ยนหมุนเวียน เพิ่มหรือลดขนาดทีมงานได้ตามที่ต้องการ
เช่นเดียวกับซอฟต์แวร์ การให้ System Engineer ผู้มีประสพการณ์ในการทำงาน เป็นผู้วางโครงสร้างระบบและออกแบบ hardware infrastructure ไม่ว่าจะเป็นการวางแผนการใช้ Cloud Hosting หรือการวางเครื่องใว้ภายในบริษัทแบบ On Premis ล้วนมีผลกระทบต่อระบบโดยรวม การมีทรัพยากรณ์เพียงพอเหมาะสมตามปริมาณผู้ใช้งาน ไม่มากเกินไป ไม่น้อยเกินไป ช่วยทำให้ตัวเลขค่าใช้จ่ายอยู่ในโซนที่เหมาะสมเช่นกัน
การพัฒนาซอฟต์แวร์
คงปฏิเสธไม่ได้ว่าการพัฒนาซอฟต์แวร์เป็นความเชี่ยวชาญของ Programmer อย่างไรก็ตาม การเหมารวมว่า Programmer ทุกคนจะต้องทำงานทุกอย่างที่เกี่ยวกับเรื่องคอมพิวเตอร์ได้เป็นเรื่องที่ไม่ถูกต้อง Programmer แต่ละคนมีความเชี่ยวชาญที่แตกต่างกัน บางคนถนัดเรื่องของ user interface ในส่วนของหน้าจอ บอกคนถนัดเรื่องของ database ฐานข้อมูล บางคนถนัดเรื่องของ logic การคำนวนตัวเลข บางคนถนัดเรื่องช่องทางออนไลน์ การเลือกใช้ programmer ให้ถูกต้องประเภทของงาน การควบคุมคุณภาพ code ให้เป็นไปตามมาตรฐานสากล ทำให้มั่นใจได้ว่าซอฟต์แวร์ที่พัฒนาขึ้นทำงานได้ถูกต้อง การมี Software Tester ช่วยตรวจสอบโปรแกรมเบื้องต้น เป็นการช่วยเก็บงานให้กับ Programmer ลดโอกาศที่ซอฟต์แวร์จะเกิด error ขึ้นในสภาวะแวดล้อม production ที่ใช้งานจริง และทำให้ Programmer คนใหม่สามารถเข้าไปแก้ไข bug ที่มีปัญหาของคนเก่าได้อย่างง่ายดาย รองรับการแก้ไขปรับเปลี่ยน workflow การทำงานที่อาจเกิดขึ้นในอนาคต

ทดสอบระบบกับ user และ ไซต์งาน

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