| Topic 2 | แมวกินซอร์สโค้ดของผม |
|---|
จุดอ่อนที่ร้ายแรงที่สุดคือความกลัวที่จะดูอ่อนแอ
J.B. Bossuet , Politics from Holy Writ, 1709
หนึ่งในรากฐานสำคัญของปรัชญา Pragmatic คือแนวคิดเรื่องการรับผิดชอบต่อตัวเองและการกระทำของตัวเอง ไม่ว่าจะเป็นเรื่องความก้าวหน้าในอาชีพ การเรียนรู้และการศึกษา โปรเจกต์ที่ทำอยู่ หรือการทำงานประจำวัน Pragmatic Programmer จะดูแลเส้นทางอาชีพของตัวเองและไม่กลัวที่จะยอมรับว่าตัวเองไม่รู้หรือทำผิดพลาด แน่นอนว่านี่ไม่ใช่แง่มุมที่น่าอภิรมย์ที่สุดของการเขียนโปรแกรม แต่มันเกิดขึ้นได้เสมอ—แม้แต่ในโปรเจกต์ที่ดีที่สุดก็ตาม ต่อให้ทดสอบมาอย่างละเอียด มีเอกสารที่ดี และมี Automation ที่มั่นคงแค่ไหน ก็ยังมีเรื่องผิดพลาดเกิดขึ้นได้ การส่งมอบงานล่าช้า ปัญหาทางเทคนิคที่ไม่คาดคิดโผล่ขึ้นมา
เรื่องแบบนี้เกิดขึ้นได้เสมอ และเราพยายามรับมือกับมันอย่างมืออาชีพที่สุดเท่าที่จะทำได้ครับ นั่นหมายถึงการซื่อสัตย์และตรงไปตรงมา เราภูมิใจในความสามารถของตัวเองได้ก็จริง แต่เราก็ต้องยอมรับจุดอ่อนของตัวเอง—ทั้งความไม่รู้และความผิดพลาด
Team Trust (ความไว้วางใจในทีม)
สิ่งสำคัญที่สุดคือทีมของคุณต้องไว้วางใจและพึ่งพาคุณได้ และคุณเองก็ต้องรู้สึกสบายใจที่จะพึ่งพาสมาชิกแต่ละคนในทีมเช่นกัน ตามงานวิจัยพบว่าความไว้วางใจในทีมเป็นสิ่งจำเป็นอย่างยิ่งต่อความคิดสร้างสรรค์และการทำงานร่วมกัน [4] ในสภาพแวดล้อมที่ดีซึ่งตั้งอยู่บนความไว้วางใจ คุณจะพูดในสิ่งที่คิดได้อย่างปลอดภัย นำเสนอไอเดียของตัวเอง และพึ่งพาเพื่อนร่วมทีมที่พึ่งพาคุณกลับได้เช่นกัน แต่ถ้าไม่มีความไว้วางใจแล้วล่ะก็…
ลองจินตนาการทีมนินจาไฮเทคที่แอบแฝงตัวบุกเข้าไปในฐานลับของตัวร้าย หลังจากวางแผนและปฏิบัติภารกิจอย่างพิถีพิถันมาหลายเดือน ในที่สุดคุณก็มาถึงจุดหมาย ถึงตาคุณแล้วที่ต้องติดตั้งระบบเล็งด้วยเลเซอร์ “ขอโทษทีทุกคน ผมไม่มีเลเซอร์ครับ แมวเอาไปเล่นกับจุดแสงสีแดงแล้วผมลืมมันไว้ที่บ้าน”
การผิดสัญญาความไว้วางใจแบบนี้อาจซ่อมแซมกลับคืนมาได้ยากครับ
Take Responsibility (รับผิดชอบ)
ความรับผิดชอบคือสิ่งที่คุณตกลงยอมรับด้วยตัวเองอย่างจริงจัง คุณให้คำมั่นว่าจะทำให้บางสิ่งสำเร็จลุล่วงไปอย่างถูกต้อง แต่นั่นไม่ได้แปลว่าคุณจะควบคุมทุกแง่มุมของมันได้โดยตรงเสมอไป นอกจากจะทำงานของตัวเองให้ดีที่สุดแล้ว คุณยังต้องวิเคราะห์สถานการณ์เพื่อหาความเสี่ยงที่อยู่นอกเหนือการควบคุมของคุณด้วย คุณมีสิทธิ์ ไม่ ต้องรับผิดชอบสถานการณ์ที่เป็นไปไม่ได้ หรือสถานการณ์ที่มีความเสี่ยงสูงเกินไป หรือมีประเด็นด้านจริยธรรมที่คลุมเครือเกินไป คุณต้องตัดสินใจเองโดยอาศัยค่านิยมและวิจารณญาณของตัวเอง
เมื่อคุณ ยอมรับ ความรับผิดชอบต่อผลลัพธ์ใดผลลัพธ์หนึ่งแล้ว คุณก็ควรพร้อมที่จะถูกตรวจสอบเรื่องนั้นด้วยครับ เมื่อคุณทำผิดพลาด (เหมือนที่ทุกคนก็ทำผิดพลาดได้) หรือตัดสินใจผิดพลาด จงยอมรับมันอย่างตรงไปตรงมาและพยายามเสนอทางออก
อย่าโยนความผิดให้คนอื่นหรือสิ่งอื่น หรือสร้างข้ออ้างขึ้นมา อย่าโทษว่าปัญหาทั้งหมดเป็นความผิดของ Vendor ภาษาโปรแกรมมิ่ง ฝ่ายบริหาร หรือเพื่อนร่วมงาน แม้ว่าสิ่งเหล่านี้อาจมีส่วนเกี่ยวข้องอยู่บ้าง แต่หน้าที่ของ คุณ คือการเสนอทางแก้ปัญหา ไม่ใช่ข้ออ้างครับ
ถ้ามีความเสี่ยงว่า Vendor จะทำงานไม่สำเร็จตามที่ตกลงไว้ คุณก็ควรมีแผนสำรองไว้ล่วงหน้า ถ้าอุปกรณ์เก็บข้อมูลของคุณพังจนซอร์สโค้ดทั้งหมดหายไปด้วย และคุณไม่มี Backup ไว้เลย นั่นคือความผิดของคุณเองครับ การบอกหัวหน้าว่า “แมวกินซอร์สโค้ดของผมไปแล้ว” ใช้ไม่ได้ผลหรอกครับ
| Tip 4 | เสนอทางเลือก อย่าสร้างข้ออ้างแย่ๆ |
|---|
ก่อนที่คุณจะไปบอกใครว่าทำไมบางอย่างถึงทำไม่ได้ ล่าช้า หรือพัง ให้หยุดและลองฟังตัวเองดูก่อนครับ ลองพูดกับเป็ดยางที่วางอยู่บนจอ หรือพูดกับแมวก็ได้ ข้ออ้างของคุณฟังดูสมเหตุสมผลหรือฟังดูงี่เง่า แล้วมันจะฟังดูเป็นยังไงในหูของหัวหน้าคุณ
ลองซ้อมบทสนทนาในหัวดูก่อน อีกฝ่ายน่าจะพูดว่าอะไร เขาจะถามว่า “คุณลองวิธีนี้หรือยัง…” หรือ “คุณไม่ได้คิดถึงเรื่องนั้นเหรอ” แล้วคุณจะตอบว่าอย่างไร ก่อนที่จะไปบอกข่าวร้าย ยังมีอะไรที่คุณลองทำได้อีกไหม บางครั้งคุณก็ รู้อยู่แล้ว ว่าเขาจะพูดอะไร ก็ช่วยประหยัดเวลาให้ทั้งสองฝ่ายไปเลยครับ
แทนที่จะให้ข้ออ้าง จงเสนอทางเลือกแทนครับ อย่าพูดว่าทำไม่ได้ ให้อธิบายว่ามีอะไรบ้างที่ ทำได้ เพื่อกู้สถานการณ์ ต้องลบโค้ดทิ้งไหม ก็บอกไปตรงๆ แล้วอธิบายถึงคุณค่าของการทำ Refactoring (ดู Topic 40, Refactoring )
คุณต้องใช้เวลาทำ Prototype เพื่อหาวิธีที่ดีที่สุดในการเดินหน้าต่อไหม (ดู Topic 13, Prototypes and Post-it Notes ) คุณต้องเพิ่มการทดสอบให้ดีขึ้นไหม (ดู Topic 41, Test to Code และ Ruthless and Continuous Testing ) หรือต้องทำ Automation เพื่อป้องกันไม่ให้เกิดเหตุการณ์แบบนี้ซ้ำอีก
บางทีคุณอาจต้องการทรัพยากรเพิ่มเติมเพื่อทำงานนี้ให้เสร็จ หรือบางทีคุณอาจต้องใช้เวลากับผู้ใช้งานมากขึ้น หรือบางทีปัญหาอาจอยู่ที่ตัวคุณเอง คุณต้องเรียนรู้เทคนิคหรือเทคโนโลยีบางอย่างให้ลึกซึ้งขึ้นไหม หนังสือหรือคอร์สเรียนสักเล่มจะช่วยได้ไหม อย่ากลัวที่จะถาม หรือกลัวที่จะยอมรับว่าตัวเองต้องการความช่วยเหลือครับ
พยายามกรองข้ออ้างแย่ๆ ออกไปก่อนที่จะพูดออกมาดังๆ ถ้าจำเป็นจริงๆ ก็ลองพูดกับแมวของคุณก่อนก็ได้ครับ ก็ในเมื่อน้องทิดเดิลส์ จะต้องรับผิดแทนคุณอยู่แล้วนี่….
Related Sections Include (หัวข้อที่เกี่ยวข้อง)
- Topic 49, Pragmatic Teams
Challenges (แบบฝึกหัดชวนคิด)
-
คุณจะรู้สึกอย่างไรเมื่อมีใครสักคน—ไม่ว่าจะเป็นพนักงานธนาคาร ช่างซ่อมรถ หรือพนักงานร้านค้า—มาบอกข้ออ้างแย่ๆ กับคุณ แล้วคุณจะคิดอย่างไรกับตัวเขาและบริษัทของเขาหลังจากนั้น
-
เมื่อคุณพบว่าตัวเองกำลังจะพูดว่า “ผมไม่รู้” ให้ต่อท้ายด้วย “—แต่ผมจะไปหาคำตอบมาให้” เพราะนี่คือวิธีที่ดีในการยอมรับว่าตัวเองไม่รู้ แล้วยังคงรับผิดชอบแบบมืออาชีพต่อไปครับ