| Topic 52 | ทำให้ Users ของคุณประทับใจ |
|---|
เมื่อคุณทำให้ผู้คนหลงเสน่ห์ เป้าหมายของคุณไม่ใช่การหาเงินจากพวกเขา หรือทำให้พวกเขาทำตามที่คุณต้องการ แต่เป็นการเติมเต็มความประทับใจให้กับพวกเขา
Guy Kawasaki
เป้าหมายของเราในฐานะ Developers คือการทำให้ Users ประทับใจ นั่นคือเหตุผลที่เรามาอยู่ตรงนี้ ไม่ใช่เพื่อขุดข้อมูล หรือนับยอดชม หรือทำให้กระเป๋าตังค์เขาว่างเปล่า ตัดเป้าหมายที่ชั่วร้ายออกไป แม้กระทั่งการส่งมอบ software ที่ทำงานได้ตรงเวลาเพียงอย่างเดียวก็ยังไม่พอ แค่นั้นยังไม่ทำให้เขาประทับใจหรอก
Users ของคุณไม่ได้ตื่นเต้นกับ code สักเท่าไรหรอก แต่พวกเขามี business problem ที่ต้องแก้ไขภายใต้เป้าหมายและงบประมาณของเขา เขาเชื่อว่าการทำงานร่วมกับทีมของคุณจะช่วยให้เขาทำสิ่งนั้นได้
ความคาดหวังของเขาไม่เกี่ยวข้องกับ software หรอก และมันไม่ได้ซ่อนอยู่ใน specification ที่เขาให้มาด้วยซ้ำ (เพราะ specification นั้นจะยังไม่สมบูรณ์จนกว่าทีมของคุณจะได้ทำ iteration ร่วมกับเขาหลายๆ รอบ)
งั้นคุณจะรู้ความคาดหวังของเขาได้ยังไงล่ะ? ก็แค่ถามคำถามง่ายๆ:
คุณจะรู้ได้ยังไงว่าพวกเราทุกคนประสบความสำเร็จ หนึ่งเดือน (หรือหนึ่งปี หรืออะไรก็แล้วแต่) หลังจากโปรเจกต์นี้จบลง?
คุณอาจจะแปลกใจกับคำตอบที่ได้รับ โปรเจกต์ที่ทำเพื่อปรับปรุงระบบ product recommendations อาจถูกประเมินในเชิงของ customer retention ส่วนโปรเจกต์ที่รวมฐานข้อมูลสองแห่งเข้าด้วยกัน อาจถูกประเมินในเชิง data quality หรืออาจจะเป็นการประหยัดงบก็ได้ แต่ความคาดหวังใน business value ต่างหากที่สำคัญจริงๆ ไม่ใช่แค่ตัว software project อย่างเดียว เพราะ software เป็นเพียงเครื่องมือที่ช่วยให้บรรลุเป้าหมายเหล่านั้น
และตอนนี้เมื่อคุณเริ่มเห็นความคาดหวังแฝงในเชิงมูลค่าของโปรเจกต์แล้ว คุณก็เริ่มคิดหาวิธีที่จะส่งมอบสิ่งเหล่านั้นได้:
-
ตรวจสอบให้แน่ใจว่าทุกคนในทีมเข้าใจความคาดหวังเหล่านี้อย่างชัดเจน
-
เมื่อต้องตัดสินใจ ให้พิจารณาว่าทิศทางไหนจะทำให้บรรลุความคาดหวังเหล่านั้นได้มากที่สุด
-
วิเคราะห์ user requirements ให้ถี่ถ้วนตามความคาดหวัง ในหลายๆ โปรเจกต์ เราค้นพบว่า "requirement" ที่ระบุไว้นั้นจริงๆ แล้วเป็นเพียงการเดาจากเทคโนโลยีที่มี หรือเป็นเพียงแผนการ implementation ที่ไม่ได้เป็นมืออาชีพนักที่เอามาใช้เป็นเอกสาร requirements อย่ากลัวที่จะเสนอแนะเพื่อเปลี่ยน requirement ถ้าคุณพิสูจน์ได้ว่ามันจะช่วยให้โปรเจกต์บรรลุเป้าหมายได้ดีกว่า
-
คิดถึงความคาดหวังเหล่านี้อย่างต่อเนื่องในขณะที่โปรเจกต์ดำเนินไป
เราพบว่าเมื่อความรู้เกี่ยวกับ domain ของเราเพิ่มขึ้น เราจะสามารถให้คำแนะนำเกี่ยวกับสิ่งอื่นๆ ที่สามารถทำเพื่อจัดการกับประเด็นทางธุรกิจแฝงได้ดีขึ้น เราเชื่อมั่นอย่างยิ่งว่า developers ที่ได้สัมผัสกับหลายๆ ด้านขององค์กร มักจะมองเห็นวิธีเชื่อมโยงส่วนต่างๆ ของธุรกิจเข้าด้วยกันในมุมมองที่แผนกต่างๆ อาจมองไม่เห็น
| Tip 96 | ทำให้ Users ประทับใจ ไม่ใช่แค่ส่งมอบ Code |
|---|
ถ้าคุณต้องการให้ลูกค้าประทับใจ ให้สร้างความสัมพันธ์ที่คุณสามารถช่วยเหลือเขาในการแก้ปัญหาได้อย่างกระตือรือร้น แม้ว่าชื่อตำแหน่งของคุณอาจจะเป็น "Software Developer" หรือ "Software Engineer" แต่ความจริงแล้วมันควรจะเป็น "Problem Solver" นั่นคือสิ่งที่เราทำ และนั่นคือหัวใจของ Pragmatic Programmer
เราแก้ปัญหา
หัวข้อที่เกี่ยวข้องรวมถึง
- Topic 12, _Tracer Bullets_
- Topic 13, _Prototypes and Post-it Notes_
- Topic 45, _The Requirements Pit_