มันจะกลายเป็น overkill เมื่อใด


10

ก่อนอื่นฉันต้องขอโทษเพราะฉันไม่รู้วิธีสร้างชุมชนด้าย ดังนั้นมีคนช่วยฉันหน่อยได้ไหม

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

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

แต่ความสมดุลอยู่ที่ไหนและคุณจะรู้ได้อย่างไรเมื่อคุณเสียเวลาไม่ได้รับมัน!


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

1
Wiki ชุมชนเลิกใช้แล้ว มันไม่เคยทำงานได้ตามแผนที่วางไว้ ไม่ต้องกังวลกับมัน
David Thornley

เมื่อคุณพูดถึงผู้ใช้กว่าล้านคนการใช้ทักษะมากเกินไปไม่ควรอยู่ในคำศัพท์ของคุณ
Theofanis Pantelides

คำตอบ:


12

คุณกำลังทำมากเกินไปเมื่อนักพัฒนาซอฟต์แวร์โดยเฉลี่ยไม่เข้าใจสิ่งที่คุณทำโดยการอ่านโค้ดของคุณ

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

ฉันต่อสู้กับ"สถาปนิก" CVทั้งหมดที่ฉันพบ ฉันหวังว่าโดมจะมีอยู่! ;)

ฉันเชื่อว่าโลกกำลังสูญเสียกองเงินจำนวนมหาศาลที่เราสามารถใช้เพื่อปรับปรุงชีวิต (โปรแกรมเมอร์) ของเราแทน


5
"ฉันต่อสู้กับสถาปนิก CV ที่ขับเคลื่อน" ฉันเจอ ":)
Gratzy

2
ฉันไม่จำเป็นต้องเห็นด้วยกับเรื่องนี้ (ในทางปฏิบัติ) เนื่องจากมีระดับผู้พัฒนาไม่เท่ากัน ฉันต้องใช้เวลาหลายครั้งในการสร้างโปรเจ็กต์ที่คล้ายกันเพื่อใช้ไลบรารีทั่วไปและไม่สามารถอ่านได้เหมือนเมื่อก่อน
Theofanis Pantelides

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

1
ฉันชอบประโยคแรกของคุณ ความชัดเจนของรหัสเป็นสิ่งสำคัญ แต่ความคิดเห็นรหัสบ่อย ? การอภิปรายทางสถาปัตยกรรมในการประชุมรายวัน ... จริงเหรอ? และ "สถาปนิกที่ขับเคลื่อนด้วย CV" หมายถึงอะไร?
Robert Harvey

1
รีวิวรหัสบ่อยหมายความว่าพวกเขาจะต้องเป็นไปโดยอัตโนมัติ คุณเขียนคุณสมบัติหนึ่งใน coleague ของคุณตรวจสอบและต้องเข้าใจเพื่อตรวจสอบมัน หากเขาถามคุณคุณจะทำงานร่วมกันเพื่อทำให้โค้ดดีขึ้น คุณพูดถึงปัญหาทางสถาปัตยกรรมของคุณในระหว่างการแสตนด์อัพ แต่การสนทนาเกิดขึ้นหลังจากนั้น อ่านความต้องการของสถาปนิก ( martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf ) การขับเคลื่อน CV หมายถึงคุณจะเลือกเทคโนโลยีเพราะคุณต้องการมันใน CV ของคุณ

11

เมื่อกระบวนการแซงผลลัพธ์

มีหลายครั้งที่เราเห็นว่าหากนักพัฒนามุ่งเน้นไปที่กระบวนการมากกว่าผลลัพธ์ (เช่นในด้านคุณภาพการกำหนดเวลา ฯลฯ ) สิ่งเลวร้ายเริ่มต้นขึ้น

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


4

สำหรับฉันฉันชอบวิธีที่ Kent Beck ส่งต่อใน XP (ไม่แน่ใจว่าเป็นความคิด "ของเขา" หรือคนอื่น แต่นั่นคือสิ่งที่ฉันได้ยินครั้งแรก):

มันยากพอที่จะแก้ปัญหาของวันนี้โดยไม่ต้องพยายามหาว่าปัญหาของวันพรุ่งนี้คืออะไรและแก้ไขด้วยเช่นกัน

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

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

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

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

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


แล้วการเปลี่ยนโมดูลให้เป็นโมดูลในแบบที่คุณต้องการ? หรือว่ามากเกินไปเช่นกัน!?
Theofanis Pantelides

1
@Theofanis Patelides - รหัสที่มีโครงสร้างที่ดีนั้นเป็นความคิดที่ดีอยู่เสมอ แต่เช่นเดียวกับสิ่งส่วนใหญ่ที่คุณสามารถนำไปใช้ได้ ฉันคิดว่าสิ่งต่าง ๆ เหล่านี้มันเป็นสัญชาตญาณเมื่อเวลาผ่านไป - คุณรู้ว่าสิ่งที่คุณทำก่อนหน้านี้ได้ผลและสิ่งที่เสียเวลา
Jon Hopkins

1

คำถามของคุณค่อนข้างเปิดกว้างดังนั้นฉันจะตีความว่า "ทำมากเกินไปในส่วนหนึ่งของโครงการ":

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

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

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

แต่ถึงกระนั้นมันก็เป็นเรื่องของการมีระเบียบวินัยและจัดลำดับความสำคัญ


ฉันเห็นด้วย แต่ฉันก็พบว่าตัวเองใช้เวลาหลายชั่วโมงในการใช้งานฟังก์ชั่นแล้วส่งต่อไปยังผู้ใช้ที่ไม่ใช่ด้านเทคนิคและล้มลงเพราะสิ่งเล็ก ๆ !
Theofanis Pantelides

1

เมื่อฉันตอบว่าไม่ "ฉันจะโกรธฉันไม่ได้ทำสิ่งนี้ในภายหลังและมันกัดฉัน ..

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


1
สำหรับฉันไม่มีอะไรน่ารำคาญไปกว่าการเบี่ยงเบนจากแผน A
Theofanis Pantelides

1

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

สถานการณ์กรณีที่เลวร้ายที่สุดของหลักสูตรคือเมื่อผู้ใช้ / ลูกค้า / ลูกค้าคือคุณ! :)

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