แนวทางการทำงาน (ฟรีแลนซ์) ในแบบของผม
ปัญหาที่เราพบเจอกันบ่อยๆ ในการทำงาน (เว็บ)
- สภาพแวดล้อมที่แตกต่างกัน อันนี้เป็นปัญหาอันดับหนึ่งเลย ปัญหาที่เจอกันคือ ทดสอบบน Server จำลอง แต่พอเอาขึ้น Production กลับทำงานไม่ได้ แต่ที่ร้ายกว่าคือ ทดสอบบน Server จำลอง ที่จำลอง Software มาแล้วว่าเหมือนกันเด๊ะๆ แต่พอใช้งานจริงกลับพบว่ามันไม่ได้มีประสิทธิภาพตามที่หวัง
- งานรันอยู่แล้ว (บน Production) และต้องการแก้ไข ปรับปรุงหรือต่อเติม อันนี้ก็เป็นเรื่องปกติที่เราจะต้องเจอกันในสายอาชีพ เพราะคงไม่มีงานไหนจบได้ในครั้งเดียว และคงไม่มีงานชิ้นใดไม่มีข้อผิอผิดพลาด
- จะแสดงให้ลูกค้าเห็นความคืบหน้าในการทำงานได้อย่างไร สามารถติดตามความคืบหน้าในการทำงานได้อย่างไร รวมถึงจะสร้างความมั่นใจต่อลูกค้าได้อย่างไรว่าเราไม่ได้ทิ้งงาน เนื่องจากการทำงานทั่วไป เราต้องเก็บมัดจำจากลูกค้า อาจจะ 30% 50% หรือไม่ก็ลูกค้าจ่ายแล้ว 100% ก็มี
วิธีการทำงาน ในแบบของผม
สิ่งหนึ่งที่ผมให้ความสำคัญกับงานทุกชิ้นของผม (อันดับหนึ่ง) คือการใช้งานทรัพยากรให้น้อยที่สุด รวมถึงการออกแบบโดยใช้ความสามารถพื้นฐานที่ทุก Server ต้องมี และจะหลีกเลี่ยงการใช้เทคโนโลยีใหม่ๆ ที่ต้องมีการติดตั้งเพิ่มเติม หรือไม่สามารถใช้ได้ครอบคลุม นอกเสียจากไม่มีวิธีอื่นแล้วที่จะมีประสิทธิภาพเทียบเท่า ซึ่งผลลัพท์ที่ได้ของชิ้นงานคือ ได้งานที่มีประสิทธิภาพมากกว่าบนทรัพยากรที่เท่ากัน และ สามารถนำไปติดตั้งใช้งานที่ไหนก็ได้ ไม่ต้องเจาะจงว่าต้องใช้กับ Server เสปคแบบนั้นแบบนี้ เพราะลูกค้าส่วนใหญ่ของผม ก็ใช้แค่แชร์ Host ซึ่งไม่สามารถติดตั้งอะไรเพิ่มเติมได้อยู่แล้ว
จากปัญหาสามข้อตามด้านบนที่ต้องเจอในการทำงานทุกครั้ง วิธีที่ผมเลือกใช้ คือการทำงานบน Server จริงๆ ซึ่งถ้าลูกค้าจ่าย 100% ผมสามารถทำงานบนเครื่อง Production ได้ทันที
- สภาพแวดล้อมแตกต่างกันตัดไป เพราะเราทำงานบน Production ของลูกค้า เหมือนกัน 100% ทั้ง Hardware และ Software (โปรแกรมจำลอง จำลองได้แต่ Software ไม่สามารถจำลอง Hardware ได้)
- ตามนั้นเลย ทำบน Production อยู่แล้ว
- ลูกค้าติดตามความคืบหน้าได้ 24 ชม. โดยเฉพาะถ้าทำงานบนเครื่อง Production ลูกค้ามั่นใจได้ 100% ว่าได้งานได้โค้ด ไม่มีอะไรตุกติกแน่ๆ และจากการที่สามารถติดตามงานได้ก็ยังสร้างความมั่นใจให้ลูกค้าได้อีกด้วย ซึ่งหลายๆคน (ลูกค้า) คงเคยเจอปัญหาการติดตามงานโดยการโทรไปสอบถาม แล้วได้รับการตอบกลับกลับมาว่าทำถึงตรงนั้นตรงนี้ แต่ไม่เคยรู้เลยว่าทำถึงจริงหรือเปล่า หรือไม่ก็ต้องคอยสอบถาม ซึ่งการแสดงความคืบหน้าของงานให้ลูกค้าเห็นตลอดเวลาสามารถลดปัญหาตรงนี้ลงได้
ข้อปฏิบัติในการทำงานบน Production
การทำงานบน Production ของลูกค้าไม่ใช่ว่านึกจะทำก็ทำได้นะครับ เนื่องจากต้องไม่ลืมว่าเครื่อง Production มีการใช้งานอยู่ ถ้าผิดนิดเดียวอาจทำให้ลูกค้าเสียหายได้ ดังนั้นต้องสอบถามกันให้ดีก่อนว่าลูกค้ามีความพร้อมแค่ไหน
การทำงานบน Production ไม่ได้หมายถึงการทำงานบนเว็บของลูกค้าที่ใช้งานอยู่จริง (ซึ่งอาจไม่ปลอดภัย) แต่อาศัยการทำงานบนเครื่อง Production ของลูกค้าเพื่อหลีกเลี่ยงปัญหาเรื่องสภาพแวดล้อมและการติดตามงาน โดยอาศัยการจำลองโดเมนหรือ Subdomain สำหรับทดสอบแยกออกมาต่างหาก ซึ่งสามารถทำได้บน Server ส่วนใหญ่อยู่แล้ว และทำการทดสอบบนโดเมนสำหรับการทดสอบ
- สร้างโดเมนหรือ Subdomain และฐานข้อมูลสำหรับใช้ในการทดสอบ
- สำเนาโค้ดทั้งหมดของ Production ไปยังโดเมนที่ใช้ทดสอบ (ใช้เวลาเพียงไม่กี่นาที สำหรับการทำบน Control Panel ของ Server)
- สำเนาฐานข้อมูลสำหรับทดสอบ ใช้เวลาไม่กี่วินาที ถ้าทำบน phpMyAdmin
- ดาวน์โหลดเฉพาะสคริปต์ที่ต้องการแก้ไขกลับมา ซึ่งใช้เวลาน้อยกว่าการที่ต้องดาวน์โหลดกลับมาทั้งหมดเพื่อจำลองในเครื่องของตัวเอง
- Editor สมัยใหม่ สามารถ sync ไฟล์ระหว่างเครื่องของเรากับบน Server โดยอัตโนมัติได้อยู่แล้ว ซึ่งเมื่อเรามีการแก้ไขสคริปต์ในเครื่อง ก็จะมีการอัปโหลดไปยัง Server ที่ใช้ทดสอบ และตรวจสอบการเปลี่ยนแปลงได้ทันที เช่น Netbeans Aptana และ VS Code (Editor สมัยใหม่ส่วนใหญ่จะมีนะครับ แค่ไปตั้งค่าให้ถูกต้อง หรือติดตั้งปลั๊กอินเพิ่มเติม) และในบางกรณี เราสามารถทำงานบนไฟล์ Production ได้ตรงๆโดยอาศัยการทำงานผ่าน ftp ของ Editor
ข้อดีในการทำงานแบบนี้ นอกจากจะแก้ปัญหาทั้งหมดที่เจอกันอยู่บ่อยๆแล้ว ยังแก้ปัญหาการติดตั้ง Software บนเครื่องเราตลอดจนการใช้ทรัพยากรบนเครื่องของเราในการจำลอง VM หรืออื่นๆได้ด้วย (ไม่ต้องติดตั้ง Software ใดๆเพิ่มเติมในเครื่อง) และยังมีข้อดีอีกข้อคือยังมีไฟล์สำรองอยู่อีกที่ รวมถึงยังสามารถสำรองไฟล์ผ่าน git ได้อีกด้วย