ออกแบบข้อบกพร่องและจัดการกับความอัปยศอดสูจากมัน [ปิด]


84

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

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

ขอขอบคุณ.


17
บางทีการออกแบบนั้นถูกต้องสำหรับระบบที่แตกต่าง ;-) อย่าลงทุนอัตตาของคุณในรหัส / การออกแบบของคุณ ลงทุนแทนความตั้งใจของคุณในการเรียนรู้ความซื่อสัตย์ (โดยเฉพาะความซื่อสัตย์ในตนเอง) และการทำงานเป็นทีม การออกแบบอาจสมบูรณ์แบบในวันที่ 1 และความต้องการเปลี่ยนแปลงในวันที่ 2! เรียนรู้จากมันและดำเนินการต่อ
Steven A. Lowe

ทำไมต้องแนบกับการออกแบบของคุณ? เป้าหมายควรทำสิ่งที่ดีที่สุดสำหรับผลิตภัณฑ์ / บริษัท เสนอบางสิ่งบางอย่าง ถามความคิดของผู้คน ขอให้พวกเขาหาข้อบกพร่อง พบข้อบกพร่อง? ล้างและทำซ้ำ ไม่มีข้อบกพร่อง? ไปเลย ต้องการการอภิปรายหรือการอภิปรายของข้อดี / ข้อเสีย? จากนั้นทำเช่นนั้น ปกป้องการออกแบบของคุณที่จะต้องได้รับการปกป้อง ปล่อยมันไปเมื่อมันไม่ทำงาน ทำไมสิ่งนี้ถึงน่าอาย? มันคือการระดมสมอง ผู้คนควรมีความยืดหยุ่นในการแนะนำสิ่งที่ป่าเถื่อนและงี่เง่าเสมอ ....
Swati

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

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

4
นักพัฒนาที่ดีไม่ใช่นักพัฒนาที่ตัดสินใจอย่างถูกต้องเสมอ แต่เป็นนักพัฒนาที่ตัดสินใจไม่ถูกต้องยอมรับมันและกู้คืนได้อย่างรวดเร็ว
Rudy

คำตอบ:


177

ครั้งหนึ่ง vp แห่งโชคลาภ 500 มีค่าใช้จ่าย บริษัท 1 ล้านดอลลาร์ด้วยการตัดสินใจทางธุรกิจที่ไม่ดี เมื่อเขาหันไปลาออกจากตำแหน่งต่อ CEO การตอบสนองที่เขาได้รับคือ "ฉันเพิ่งลงทุนไปหนึ่งล้านดอลลาร์ในการศึกษาของคุณและตอนนี้คุณกำลังจะจากไปหรือไม่ฉันไม่ยอมรับ"

ฉันเริ่มเบื่อกับผู้จัดการและคนงานอื่นที่ตำหนิความผิดพลาดอย่างรวดเร็วกับคนที่เป็นมือใหม่หรือสมมติว่าพวกเขาไร้ความสามารถ มีทางเดียวเท่านั้นที่จะเป็นนักออกแบบที่ดีและนั่นคือ f @ $% ขึ้นไปสักสองสามข้อ ฉันไม่สนใจว่าพนักงานของฉันทำผิดพลาดหรือไม่ฉันสนใจว่าพวกเขาทำสิ่งเดียวกันหลายครั้ง คำถามคือคุณอ่อนน้อมถ่อมตนและสอนอย่างไร เมื่อมีคนนำเสนอข้อผิดพลาดของคุณกับคุณคุณปกป้องตัวเองก่อนหรือได้ยินพวกเขาออกมา? หากคุณเป็นหนึ่งในคนที่หายากที่สามารถกลืนความภาคภูมิใจของเขาและเรียนรู้จากมันคุณก็ควรค่าแก่การแขวนไว้ ทุกคนที่คุณสูญเสียความเคารพจากการทำผิดพลาดครั้งเดียวไม่ใช่คนที่สมควรได้รับความเคารพของคุณ

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

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


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

1
สิทธิ์ของคุณที่ผู้คนจะลืม ฉันเคยช่วย บริษัท ลงครึ่งวันเมื่ออัพเกรดฐานข้อมูลเรียบร้อย นั่นเป็นวันที่น่ากลัว แต่ฉันก็จบแล้วและฉันก็คิดว่าทุกคนก็เหมือนกัน
Kratz

5
เกร็ดเล็กเกร็ดน้อยที่ดีและเป็นจุดที่ดี แน่นอนฉันคิดว่า: ง่ายสำหรับซีอีโอที่จะพูด ไม่ได้ลงทุนด้วยตนเอง คนที่มีสกินในเกมจะไม่ได้รับปฏิกิริยาตอบโต้ที่ผิดพลาดอย่างมหันต์ต่อความผิดพลาดมหึมา อย่างไรก็ตามหากซื่อสัตย์พวกเขาจะรับรู้ว่าพวกเขาทำผิดพลาดเล็กน้อยไปพร้อมกันและเรียนรู้จากแต่ละคน กุญแจสำคัญคือการล้มเหลวอย่างรวดเร็วซื่อสัตย์และเลือกสิ่งใหม่สำหรับความผิดพลาดต่อไปของคุณ :) ทัศนคตินั้นจะได้รับการยอมรับและให้รางวัลแก่ บริษัท ที่คุ้มค่ากับการลงทุนเวลาทำงานของคุณที่
Greg Hendershott

1
@BiAiB รองประธาน - ปกติแล้วหมายถึง "second in command"
Jonathan Henson

2
@Greg H: "แยกออกจากกันอย่างบ้าคลั่ง?" ไม่มีเหตุผลเท่านั้น มีคนพยายามทำงานที่ดีที่ทำผิดเรียนรู้จากความผิดพลาดนั้น การแทนที่บุคคลนั้นหลังจากที่พวกเขาเรียนรู้ได้ดีขึ้นกับคนอื่นที่ไม่มีประสบการณ์เป็นการตัดสินใจที่ไม่ดี พวกเขาใหม่อาจมีประวัติที่สะอาด แต่เพียงเพราะเขาไม่เคยลองอะไรที่น่าสนใจ
Zan Lynx

33

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

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

หากคุณอยู่ในทีมที่ไม่สมบูรณ์ที่ไม่ทำงานอย่างนี้คุณมีสองทางเลือก:

  1. พยายามซ่อมทีม
  2. หาทีมใหม่ (ทั้งภายในหรือที่พนักงานใหม่)

20

เท่าที่ฉันรู้ว่าฉันได้รับเสมอพื้นฐานยุทธศาสตร์ นั่นคือไม่มากในสิ่งเดียวกันเป็นพื้นฐานที่ถูกต้อง สถานการณ์มักจะเปลี่ยนระหว่างเวลาที่คุณต้องตัดสินใจ 'X' และเวลาที่มันจะกลายเป็นที่ชัดเจนว่า 'x' คือการตัดสินใจที่ผิดพลาดในการหวน

มันเหมือนกับการเตรียมภาษีรายได้ของคุณในสหรัฐอเมริกา ผู้คนจำนวนมากคิดว่าควรจะมีคำตอบ ไม่มี คุณมีความคิดเห็นของคุณ บัญชีภาษีของคุณมีความคิดเห็นของเธอ; IRS มีความคิดเห็น

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

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

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

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


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

คำตอบที่ดี! ฉันทำผิดพลาดในการออกแบบ แต่ฉันไม่คิดว่าฉันเคยถูกทำให้อัปยศหรือเสียความเคารพจากเพื่อนร่วมทีม การตัดสินใจของฉันมักจะถูกทำขึ้นด้วยเหตุผลและเมื่อมันปรากฏว่าเหตุผลของฉันอยู่บนพื้นฐานของความรู้ที่ผิดพลาดหรือไม่สมบูรณ์ฉันได้รับรู้ถึงความผิดพลาดและพยายามแก้ไขมันเสมอ
Carson63000

8

ทุกคนเกิดความผิดพลาดบางครั้ง ความผิดพลาดย่อมหนีไม่พ้น ยอมรับอย่างอิสระเมื่อคุณผิดเรียนรู้จากความผิดพลาดของคุณและแสดงความถ่อมตนโดยเฉพาะอย่างยิ่งถ้าคุณไม่มั่นใจในขั้นต้นว่าคุณผิดจริง ๆ

"ความอัปยศ" ไม่เคยเกิดขึ้น ไม่น่าจะปรับปรุงประสิทธิภาพของบุคคลได้เลย

ที่ บริษัท ของฉันที่นี่เราได้พัฒนาวัฒนธรรมการเคารพสำหรับคนเหล่านั้นที่ยังยินดีที่จะติดคอของพวกเขาในการตัดสินใจที่ยากลำบาก แต่สามารถยอมรับว่าผิดและปรับพฤติกรรมของพวกเขาเมื่อต้องการ


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

6

คุณมีความถูกต้องพื้นฐานในการออกแบบซอฟต์แวร์ที่คุณเสนอมาหรือไม่?

ใช่ฉันเป็นมนุษย์ธรรมดา! แน่นอนไม่

เมื่อคุณออกแบบบางอย่างที่ผิดขั้นพื้นฐานคุณมักจะเสียความเคารพต่อสมาชิกในทีมของคุณ

No! หากสิ่งนั้นเกิดขึ้นแสดงว่ามีบางอย่างผิดปกติกับวิญญาณของทีม

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

ความผิดพลาดครั้งแรกอาจรู้สึกไม่ดี แต่หลังจากที่คุณทำไปแล้วหลายร้อยคนมันก็เหมือนเป็นส่วนหนึ่งของงาน


4

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

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

ดังนั้นโดยทั่วไปสิ่งที่คุณทำคือ:

  1. ยอมรับว่าคุณทำผิดพลาด
  2. วางแผนที่จะแก้ไข
  3. ตรวจสอบให้แน่ใจว่าแผนของคุณใช้งานได้จริง
  4. ตรวจสอบอีกครั้ง
  5. ซ่อมมัน!

หากคุณไม่แน่ใจว่าจะแก้ไขอย่างไรอย่ากลัวที่จะรับสมาชิกในทีมคนอื่นเข้ามา

สิ่งสุดท้ายที่ผ่อนคลาย! ทุกคนทำผิดพลาด น้อยคนนักที่จะทำให้มันสมบูรณ์แบบในครั้งแรก


3

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

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


3

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

หากอดีตแล้วไม่มีเหตุผลที่จะรู้สึกไม่ดีและไม่มีเหตุผลที่เพื่อนของคุณจะสงสัยคุณในอนาคต

หากคุณกำลังรอจนกว่าจะถึงการจัดส่งขั้นสุดท้ายเพื่อหารือเกี่ยวกับการออกแบบของคุณกับคนอื่นแล้วฉันจะไม่ตำหนิพวกเขาสำหรับการสงสัยงานอื่น ๆ ของคุณ

ทุกคนต้องหารือเกี่ยวกับการออกแบบกับบุคคลอื่น คุณอาจต้องพูดคุยกับหลายคนหลายครั้งขึ้นอยู่กับความซับซ้อนหรือความสำคัญ ทุกคนสามารถทำผิดเข้าใจผิดข้อกำหนดหรือพลาดกรณีพิเศษ

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

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


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

ในฐานะทรัพยากรอาวุโสฉันควรรู้จักสิ่งเหล่านั้น ฉันแน่ใจว่าทีมของฉันก็คิดเช่นเดียวกัน
user20358

@ user20358 ฉันจะบอกว่ายังมีเวลาที่จะกู้ชื่อเสียงของคุณกับทีม ปัญหาที่สำคัญไม่สามารถแก้ไขได้ทันที คุณถูกดึงเข้ามาเพื่อเป็นสัญลักษณ์เวทย์มนตร์ช็อตเดียวหรือคุณเข้ามาเพื่อเพิ่มประสบการณ์ให้กับทีมอย่างต่อเนื่องหรือไม่? หวังว่าหลัง สมมติว่าคุณต้องรวมตัวเองกับทีมเพื่อให้พวกเขาสามารถสอนสิ่งที่พวกเขาได้เรียนรู้ไปพร้อมกันและคุณสามารถใช้ประสบการณ์ของคุณเพื่อนำทางพวกเขาไปในทิศทางที่ดีขึ้น รับทราบความสำเร็จของพวกเขาและแนะนำพวกเขาเพื่อพวกเขาจะได้เห็นและค้นพบวิธีปรับปรุงผลิตภัณฑ์
jimreed

3

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

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

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


3

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

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

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


2

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

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


1

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


1

สิ่งนี้จะเกิดขึ้นบ่อยครั้ง อุตสาหกรรมของเรามีการเปลี่ยนแปลงอย่างรวดเร็วโอกาสที่จะไม่ผิดมีผลเป็นศูนย์

อย่างไรก็ตามคุณได้ผลักดันการออกแบบที่ไม่ดีลงไปในคอของพวกเขามากกว่าการคัดค้านของพวกเขา? นั่นอาจเป็นสาเหตุที่พวกเขาทำปฏิกิริยามากเกินไป

หากความผิดพลาดนั้นใหญ่หลวงแน่นอนต้องใช้เวลาสักพักเพื่อจะได้รับความเคารพ หากเพื่อนร่วมงานคนหนึ่งของคุณพาคุณไปในทิศทางที่ไม่ดีและสร้างปัญหาให้กับทั้งทีมคุณไม่ต้องการให้เขาพิสูจน์ตัวเองในระยะเวลาอันใกล้นี้หรือไม่?

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

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


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

ฉันยอมรับว่าฉันผิด แต่สิ่งนี้ช่วยได้มากเพราะทั้งผู้จัดการของฉันและลูกค้าที่ฉันควรรู้จักดีกว่าโดยพิจารณาจากประสบการณ์ของฉัน
user20358

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

0

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

วางไว้ข้างหลังคุณวางหัวของคุณและทำอย่างดีที่สุด หากคุณเป็นโปรแกรมเมอร์ที่ดีคุณจะส่องแสงผ่านความผิดพลาดของคุณ


0

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


0

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

อย่าพยายามพิสูจน์ตัวเองหรือรับการป้องกัน ยอมรับความผิดพลาดและเดินหน้าต่อไป


0

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

ให้ฉันยกตัวอย่างที่ไม่มีส่วนเกี่ยวข้องกับการเขียนโปรแกรม: ในงานก่อนหน้านี้ฉันลืมล้างจานที่พูดครั้งหรือสองครั้ง ตั้งแต่นั้นมาคนงานทั้งหมดคิดว่าฉันเป็นคนประเภทที่ไม่เคยล้างจาน และตอนนี้ทันทีที่มีสิ่งสกปรกในอ่างล้างจานฉันก็เป็นใคร

มันเหมือนกันทุกที่: นี่เป็นพฤติกรรมทางสังคมไม่ว่าจะเป็นปัญหาอะไรก็ตาม

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


0

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

ตัวอย่างที่ดีที่สุดของฉันคือการค้นพบผลข้างเคียงของการมีคลาสอยู่staticในเว็บแอปพลิเคชันที่ฉันทำงานเพียงครั้งเดียว ฉันไม่รู้ว่ามันจะเลวร้ายเพียงใดที่อินสแตนซ์นั้นยังคงอยู่และแชร์กับผู้ใช้ทั้งหมดของแอปพลิเคชัน แต่ฉันเรียนรู้จากมันและกู้คืนได้ทันเวลา บางครั้งอาจเป็นไปได้ว่ามีบางสิ่งที่ค้นพบและต้องมีการแก้ไขที่สำคัญ ฉันเคยอยู่ในค่ายนั้นด้วยที่ฉันต้องลอดผ่าน VBScript เพื่อลดการต่อสตริงที่ทำให้เกิดปัญหาหน่วยความจำที่ฉันทำงานครั้งเดียว ฉันยังจำการเขียนโค้ดที่มีความเสี่ยงต่อการฉีด SQL ย้อนกลับไปในปี 1998 เมื่อฉันกำลังเขียนหาชิ้นส่วนของลูกค้าของรหัสที่ต้องสร้าง SQL แบบไดนามิกเนื่องจากฉันมี ~ 20 ฟิลด์ตัวเลือกในส่วนของโปรแกรม


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


ฉันไม่ใช่ jon skeet :)
user20358

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

ฉันไม่รังเกียจการเรียนรู้ มันเป็นเพียงแค่ชื่อเสียงที่คุณเสียไปเมื่อคุณทำผิดพลาดแม้ว่าพวกเขาจะแตกต่างกันทุกครั้ง สำหรับทุกคนที่อยู่โดยรอบดูเหมือนว่าคุณทำผิดพลาดมากมาย ไม่ใช่ใหม่ทุกครั้งที่คุณเรียนรู้จากและดีขึ้น
user20358
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.