ทำอย่างไรดี เมื่อโปรแกรมเมอร์บอกว่า “ทำไม่ได้”

01-ธ.ค.-17

คัมภีร์เทพ IT

บทความนี้เป็นบทความที่น่าสนใจ จากคุณ Stan Hanks (Software engineer ซึ่งโพสต์ไว้ใน Quora.com) เพราะเป็นประเด็นของมุมมองที่แตกต่างกันระหว่าง คนที่เป็นโปรแกรมเมอร์คิด และ คนที่ไม่ใช่โปรแกรมเมอร์ร้องขอ และเมื่อโปรแกรมเมอร์บอกว่า “ทำไม่ได้” นั้น มันจริงมากน้อยเพียงใด ลองมาหาคำตอบจากบทความนี้กันครับ
 

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

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

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

ในฐานะของคนทั่วไปที่ไม่ใช่โปรแกรมเมอร์ คุณสามารถบอกโปรแกรมเมอร์ให้ทราบได้ว่า คุณต้องการอะไร เช่น "สามารถทำให้หน้าต่างใหญ่ขึ้นได้ไหม" หรือ "ให้ระบุ User ด้วย ชื่อ" หรือ "แจ้งให้ User โพสต์บนหน้า Facebook ของพวกเขา" หรืออะไรก็ตามที่อาจดูคลุมเครือในแง่มุมของคอมพิวเตอร์ซึ่ง"มันไม่สามารถรู้ได้เอง" มันดูเป็นเรื่องธรรมดาและง่ายสำหรับคุณ แล้วปัญหามันอยู่ตรงไหนล่ะ? ปัญหา ก็คือ โปรแกรมเมอร์ที่ได้รับมอบหมายงานชิ้นนั้นๆ มีระดับของความซับซ้อนที่พวกเขาต้องจัดการหลายชั้น บางทีพวกเขาส่วนใหญ่อาจไม่ได้ Coding ด้วยตัวเองทั้งหมด เพราะ สามารถใช้ Library (ชุดของ Code โปรแกรมที่มีคนอื่นเขียนไว้แล้ว เพื่อแก้ปัญหาที่พบโดยทั่วไป และมักใช้ได้ฟรีๆ) ได้ และโดยทั่วไป Library หนึ่งก็มักจะเกี่ยวข้องกับ Library อื่นๆ ด้วย แต่ก็มีบาง Library ที่ใช้งานเดี่ยวๆ ได้
 

และเมื่อคุณพูดว่า “ให้ User โพสต์ใน Facebook” คุณต้องตระหนักว่า โปรแกรมเมอร์จะมองที่ Request ของคุณและคิดว่า "แน่นอน นั่นมันง่ายมาก เพราะเป็นไปได้ว่า—ฉันมีข้อมูลใน Database แล้ว, ฉันคิดว่าเรามีข้อมูล Facebook ของพวกเขาใน Database อยู่แล้ว, ฉันคิดว่าเรามี Library ที่เหมาะสมสำหรับเรื่องนี้แล้ว, และมันน่าจะง่ายนะ" ซึ่งสิ่งเหล่านี้นำไปสู่การคาดการณ์ในแง่ดี ว่าน่าจะใช้เวลานานแค่ไหนในการทำ
 

สิ่งที่พบเมื่อเหล่า Programmer รับ Request แล้ว เช่น อาจจะมีบางข้อสันนิษฐานที่ผิดไป หรือ Library บางตัวที่จะใช้อาจไม่รองรับแล้ว หรืออาจต้อง Upgrade เป็น version ใหม่ ซึ่งทำให้ Programmer อาจต้องมีการเขียน Code ใหม่เพื่อให้ใช้งานกับ Library นั้นๆ ได้ (ซึ่งอาจไม่เกี่ยวข้องโดยตรงกับสิ่งที่คุณ Request เลย) หรือ มีบางอย่างที่ไม่เหมาะที่จะใช้งานแล้ว พวกเขาก็ต้องหา Library ใหม่ และต้องชั่งน้ำหนักในทุกประเด็นว่า ยังต้องใช้ได้จริงและเหมาะสมกับ Request นั้นๆ
 

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

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

เมื่อโปรแกรมเมอร์ บอกว่า "ทำไม่ได้" มันแทบจะหมายความว่า "ไม่มีทางเลย ที่จะทำสิ่งที่คนทั่วไปก็เข้าใจได้ว่า มันเป็นข้อจำกัด ในการทำงานจริงๆ และมันก็ยากที่จะอธิบายให้ฟังทั้งหมดได้

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

ที่มา: hackernoon.com

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

 

เพิ่มเพื่อน

 

 

 

บทความที่เกี่ยวข้อง