ความซับซ้อนของทีมพัฒนาโปรแกรม และการอยู่ร่วมกันได้กับฝั่งธุรกิจ

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

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

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

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

เหล่าพัฒนานี้จึงนัดเป็นเป็นจุดเริ่มต้นของสายงานโปรแกรมเมอร์แบบมืออาชีพ ที่สามารถสร้างโปรแกรมที่ตอบโจทย์ธุรกิจได้จริง ซึ่งก็ต้องเก็บประสบการณ์เป็น Coder แบบเขียนๆ ทิ้งๆ กันอย่างน้อย 3-5 ปี จึงจะเริ่มสามารถตัดสินใจได้เองว่าเมื่อเจอโจทย์เข้ามาจะเลือกใช้เครื่องมือใดในการแก้ปัญหาได้อย่างแม่นยำ ซึ่งระดับของ Developer ขึ้นก็มีแบ่งออกไปหลายระดับตั้งแต่ Developer ธรรมดา Senior Developer ที่มีประสบการณ์เจ็บมาเยอะจนสามารถคอยแนะนำคอยเตือนทีมได้ ไปจนถึงเหล่า Tech Lead ที่ช่ำชองการพัฒนาระบบขั้นสุดและคุมทีมนักพัฒนาได้เป็นสิบ นอกจากนั้นก็ยังมีหลายสายอีกต่างหากซึ่งจะกล่าวถึงกันต่อไป

ระบบในโลกความจริงไม่ว่าจะเป็นโปรแกรมที่รันบนเว็บหรือโทรศัพท์หรือจะบนคอม ฝั่งผู้ใช้มักมองเห็นและสนใจแค่ฝั่ง Fontend กดไปกดมาได้สวยๆ งามๆ ซึ่งความเป็นจริงแล้วเป็นเพียงยอดภูเขาน้ำแข็ง เมื่อมองลงไปใต้ภูเขาจะเห็นว่าระบบที่อยู่หลังบ้าน ไม่ว่าจะเป็นโปรแกรมฝั่ง Backend ใช้เชื่อมต่อกับ Database ที่มีพร้อมกับ API ยุบยับเพื่อเชื่อมต่อให้ฝั่ง Frontend ทำงานได้ ซึ่งต้องอาศัยความรู้ความเข้าใจเรื่องการเขียนโปรแกรมและการทำงานของฐานข้อมูลในเชิงลึกเพื่อให้เขียนโปรแกรมออกมาอย่างมีประสิทธิภาพได้ ลงไปจนถึงงาน DevOps และ Infrastructure ที่ต้องไปตามอ่านเอกสารคู่มือการใช้งาน Cloud หรือระบบต่างๆ อีกเป็นสิบๆ เรื่อง ที่จะช่วยให้โปรแกรมขึ้นไปรันพร้อมให้บริการลูกค้าได้อย่างมีประสิทธิภาพ

สังเกตกว่าทุกส่วนที่กล่าวมาล้วนจำเป็นทั้งสิ้นต่อการทำให้ระบบเปิดขึ้นมาใช้งานได้ แล้วแต่ละส่วนก็จำเป็นต้องมี Developer อย่างน้อยหนึ่งคนคอยดูแลแต่ละส่วน และทุกส่วนต้องทำการสอดประสานกันเป็นอย่างดี จะมีส่วนหนึ่งส่วนใดมีปัญหาไม่ได้ ด้วยเหตุนี้จึงต้องมีคนที่คอยดูแลเรื่องการสื่อสารกันภายในทีม เราเรียกพวกเขาว่า Project Manager

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

ส่วนคนสุดท้ายบนยอดพีระมิดของการพัฒนาผลิตภัณธ์ก็คือ Product Owner (PO) ที่รับหน้าที่ในการแปลสร้างความต้องการจากทางฝั่งธุรกิจลงมาเป็น Requirement Spec ให้กับทีมพัฒนา ตำแหน่งนี้เป็นตำแหน่งที่คาบเกี่ยวโลกสองใบ คือต้องได้ทั้งฝั่งธุรกิจ และต้องได้ฝั่งเทคโนโลยีด้วย หากคนนี้ได้แต่ฝั่งเทคโนโลยี ก็จะสร้างผลิตภัณฑ์ที่ไม่ตอบความต้องการของลูกค้าออกมา แต่หากได้แต่ฝั่งธุรกิจ ก็จะกลายเป็นคนที่ฝันเฟื่องแต่ผลิตของออกมาใช้งานจริงไม่ได้เพราะทีมเทคไม่สามารถทำตามได้ นอกจากนั้นยังต้องคอยบริหารจัดการข้อมูลการใช้งานของระบบจากลูกค้าเพื่อนำไปต่อยอดการพัฒนาผลิตภัณฑ์ต่อในอนาคต

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

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

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

เด็กเปิดหัว ผู้ใหญ่เปิดใจ

Tags: ,