ฉันเพิ่งเริ่มงานกับการแย่งชิงกันและดูเหมือนจะมีบางอย่างขาดหายไป ฉันใหม่เพื่อการต่อสู้


23

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

ส่วนใดใน Scrum ที่นักพัฒนาสามารถมีอำนาจที่จะพูดได้ว่าเพียงพอแล้วและเรียกร้องให้พวกเขาได้รับเวลาเพื่อเริ่มการเขียนครั้งใหญ่? เราดูเหมือนจะวนรอบไม่สิ้นสุดเพียงแค่ติดตั้งโค้ดเก่ากับ 'Stories'

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

ดังนั้นใครจะเป็นผู้รับผิดชอบในการเปลี่ยนแปลงครั้งใหญ่นี้เกิดขึ้น? นักพัฒนา ปริญญาโทการต่อสู้?

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


20
Sham เปรียวยกหัวน่าเกลียดอีกครั้ง ... หลาย บริษัท กล่าวว่าพวกเขาเป็น "เปรียว" และใช้ "การต่อสู้" ในความเป็นจริงพวกเขาไม่ได้ทำ
Oded

4
คุณไม่ได้ทำ Scrum

20
ลองพิมพ์โปสเตอร์ขนาดใหญ่และวางลงบนกำแพงที่ซึ่งคนที่ไม่ใช่ช่างเทคนิคของคุณสามารถมองเห็นได้อย่างชัดเจน: ประกาศสำหรับการพัฒนาซอฟต์แวร์แบบครึ่งอาเสะ ... ในขณะที่รายการด้านซ้ายเสียงดีในทางทฤษฎีเรา บริษัท ขององค์กรและไม่มีทางที่เราจะปล่อยวางสิ่งของทางด้านขวา
gnat

12
ลิงค์บังคับไปยังบล็อกของ Joel: joelonsoftware.com/articles/fog0000000069.html
marco-fiset

8
"<- แทรกคำพูดจาโผงผางเกี่ยวกับคนที่ไม่ใช้เทคโนโลยีบอกคนที่มีเทคโนโลยีว่าจะทำอะไรที่นี่ ->"ผู้บริหาร 100% ควรบอกผู้คนในวงการเทคโนโลยีว่าที่ต้องทำนั่นคือเหตุผลที่พวกเขาเป็นผู้บริหารและผู้รับผิดชอบในการทางธุรกิจที่เป็นสิ่งที่พวกเขา ทำดีที่สุด. สิ่งที่พวกเขา 100% น่าจะไม่ได้จะทำจะบอกพวกเขาว่าจะทำมัน tech คนควรจะตัดสินใจเกี่ยวกับวิธีการทางเทคนิคให้บรรลุสิ่งที่พวกเขาได้รับการขอให้ทำ สิ่งอื่นใดที่สมบูรณ์ไร้เดียงสา !

คำตอบ:


7

ฉันไม่แน่ใจว่าทำไมสิ่งนี้จึงเป็นเรื่องยากสำหรับผู้คน กรณีธุรกิจของเขาอยู่ที่นี่:

We seem in an endless loop of just patching old code with 'Stories'.

เวลาของนักพัฒนาคือเงิน เงินจำนวนมาก ฉันออกจาก บริษัท ที่วางแผนจะปรับปรุง UI ของพวกเขาในช่วงหนึ่งปีที่ผ่านมาและหวังว่าการใช้การต่อสู้จะช่วยให้พวกเขาหยุดหมุนวงล้อ เกิดอะไรขึ้น? Same ol 'Same Ol' พวกเขายังคงเพิ่มฟีเจอร์ใหม่ ๆ และ "หนี้ทางเทคนิค" ไม่มีกรณีธุรกิจแม้ว่าครึ่งหนึ่งของรหัสที่เราเขียนนั้นไม่มีความหมายกับการวนซ้ำทุกครั้งเนื่องจากโค้ดเบสพื้นฐานเป็นระเบียบที่ล้าสมัยอย่างสมบูรณ์ ไม่มีสิ่งใดเปลี่ยนแปลงที่ปลายด้านหน้าของพวกเขาตั้งแต่ฉันจากไปและฉันถูกนำตัวไปเพื่อจุดประสงค์ในการปรับปรุงใหม่อย่างสมบูรณ์ ในสองเดือนที่ฉันอยู่ที่นั่นฉันไม่ได้สัมผัส CSS หรือ JavaScript อย่างแท้จริง ฉันแค่ล้อเล่นกับ HTML และระบบเทมเพลต Java เก่าแก่บางส่วนจากปลายปี 1990

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

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

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

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

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


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

1
หรือคุณไม่มีการทดสอบหน่วย :) หนึ่งในประโยชน์หลักของการทดสอบหน่วยคือช่วยให้คุณสามารถปรับโครงสร้างด้วยความมั่นใจ ปัญหาที่ใหญ่ที่สุดกับการฝึกฝนที่ดีนั้นเหมือนกับทุกอย่าง - มันต้องมีวินัยและคนส่วนใหญ่มักจะขี้เกียจ
nicodemus13

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

1
ฉันจะบอกว่ามันเหมือนกันสำหรับทุกอย่างฉันเขียนแบบทดสอบเพื่อช่วยกำหนดอินเตอร์เฟส
nicodemus13

1
จากนั้นความเจ็บปวดของ kludges ทั้งหมดจะถูกนำกลับเข้าไปใหม่เนื่องจากมีข้อยกเว้นเล็ก ๆ น้อย ๆ เหล่านั้นที่อาจไม่สามารถตรวจจับได้โดยการวิเคราะห์เบื้องต้น
JB King

33

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

http://blog.objectmentor.com/articles/2009/01/09/the-big-redesign-in-the-sky
http://www.joelonsoftware.com/articles/fog0000000069.html

หากต้องการขยายใน "การเขียนซ้ำไม่ใช่ความคิดที่ดี":

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


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

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

3
@ErikReppen ดังนั้นเมื่อห้องนั่งเล่นของคุณยุ่งคุณฉีกบ้านและสร้างใหม่
EricSchaefer

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

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

18

ฉันจะทื่อจริง ๆ ...

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

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

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

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

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

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

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

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

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


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

ฉันไม่คิดว่าคุณเข้าใจว่ารหัสนี้แย่แค่ไหน ยิ่งไปกว่านั้นนี่ไม่ใช่จรวด scienece นี่คือ CRUD 101 นี่คือการแสดงแบบฟอร์มให้ผู้ใช้กรอกตรวจสอบแล้วสร้างรายงานและ PDF บางส่วนจากข้อมูล นั่นเป็นพื้นฐาน .. แต่กว่า 10 ปีที่ผ่านมารหัสได้ถูกแยกส่วนออกเป็นส่วน ๆ มากมายมันน่ากลัว Ive เป็นส่วนหนึ่งของประมาณ 20 โครงการที่ผ่านมา 12 ปีและนี้ได้จะต้องเป็นคอลเลกชันที่เลวร้ายที่สุดของรหัสที่ผมได้เห็นว่ามีการใช้งานจริงในการผลิต ... ฉันหวังว่าฉันสามารถแสดงให้คุณทั้งหมด
pUnkOuter

สิ่งที่ฉันทำเพื่อเริ่มต้นคือการค้นหาคนที่อยู่ในทีมที่มีความปรารถนาที่จะเข้ารหัสและมีความสนใจที่จะเป็นส่วนหนึ่งของการได้รับสิทธินี้ในที่สุด มันไม่ใช่เรื่องง่ายที่จะหาคนเหล่านั้นเพราะ ... brucefwebster.com/2008/04/11/…
punkouter

16
@punkouter: ฉันไม่คิดว่าคุณเข้าใจจุดที่ทำที่นี่; codebase ที่เป็น "ไม่ดี" ไม่ใช่เรื่องธุรกิจสำหรับการเขียนซ้ำ มีความหลงใหลในการเขียนโปรแกรมและต้องการที่จะได้รับสิ่งที่ถูกต้องไม่ใช่กรณีธุรกิจสำหรับการเขียนใหม่ ข้อผิดพลาดในการผลิตที่มีราคาแพงและการหยุดทำงานและใช้เวลาเป็นเดือนในการใช้คุณสมบัติใหม่ที่สำคัญ แต่สำคัญ - THOSE จัดทำกรณีธุรกิจสำหรับการเขียนใหม่
Michael Borgwardt

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

13

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

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

  • พวกเขาจัดระเบียบตัวเอง ไม่มีใคร (ไม่ใช่แม้แต่ Scrum Master) บอกทีมพัฒนาว่าจะเปลี่ยนผลิตภัณฑ์ที่ค้างไว้ให้เป็นการเพิ่มฟังก์ชั่นการกู้คืนที่อาจเกิดขึ้นได้อย่างไร

  • ทีมพัฒนามีการทำงานข้ามสายงานโดยมีทักษะทั้งหมดเป็นทีมที่จำเป็นในการสร้างผลิตภัณฑ์ที่เพิ่มขึ้น

  • Scrum ไม่รู้จักชื่อสำหรับสมาชิกในทีมพัฒนานอกเหนือจากผู้พัฒนาโดยไม่คำนึงถึงงานที่ทำโดยบุคคลนั้น ไม่มีข้อยกเว้นสำหรับกฎนี้

  • สมาชิกทีมพัฒนาส่วนบุคคลอาจมีทักษะเฉพาะด้านและมีจุดสนใจ แต่ความรับผิดชอบนั้นเป็นของทีมพัฒนาโดยรวม และ,

  • ทีมพัฒนาไม่ได้มีทีมย่อยสำหรับโดเมนเฉพาะเช่นการทดสอบหรือการวิเคราะห์ธุรกิจ

ทีมพัฒนาจึงมีความรับผิดชอบต่อความยุ่งเหยิงของตัวเองและควรจัดการกับมันโดยไม่ต้องถามใครเลยนอกทีม

รวมเวลากำหนดหนี้ทางเทคนิคในการประมาณแต่ละครั้งในอนาคตของคุณและตรวจสอบให้แน่ใจว่าคุณภาพของซอฟต์แวร์ที่คุณนำเสนอนั้นมีคุณภาพสูงสุด

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


8
ทีมมีหน้าที่รับผิดชอบในการจัดระเบียบของตัวเอง แต่พวกเขาไม่ได้เลือกลำดับความสำคัญของหนี้ทางเทคนิคเมื่อเทียบกับคุณลักษณะใหม่ เป็นเจ้าของผลิตภัณฑ์ที่ตัดสินใจว่า เมื่อ PO ตัดสินใจเลือกลำดับความสำคัญของ Backlog แล้วทีมสามารถตัดสินใจได้ว่าจะส่งมอบอย่างไร พวกเขาสามารถพูดว่า "เราไม่สามารถส่งมอบฟีเจอร์ X ได้หากไม่ทำการปรับสภาพ Y ครั้งแรก" แต่พวกเขาไม่สามารถพูดว่า "ไม่ขอโทษเราจะไม่เพิ่มฟีเจอร์ใหม่จนกว่าเราจะเขียนใหม่ตั้งแต่ต้น"
Bryan Oakley

6
@BryanOakley: การเขียนใหม่ตั้งแต่ต้นไม่ใช่สิ่งที่ฉันแนะนำ ฉันขอแนะนำให้ลดหนี้ทางเทคนิคอย่างต่อเนื่องในขณะที่ทีมพัฒนาทำงานในพื้นที่ที่เกี่ยวข้อง และฉันยังแนะนำให้พวกเขาประมาณตาม

1
ที่ดี แต่ถ้าเราต้องการเซิร์ฟเวอร์ใหม่ฐานข้อมูลใหม่ซอฟต์แวร์ใหม่เพื่อให้เรา devs มีเครื่องมือทั้งหมดที่เราต้องทำการเขียนใหม่หรือไม่ และการเขียนใหม่จะเริ่มต้นอย่างไรเมื่อ 'เรื่องราว' เพียงอย่างเดียวเกี่ยวกับการแก้ไขปัญหาในปัจจุบันและไม่เคยเกี่ยวกับแนวคิดของการอนุญาตให้เขียนใหม่?
punkouter

1
@punkouter: ถ้าคุณต้องเขียนใหม่แก้ไขปัญหาที่หลังการต่อสู้ จากนั้นเจ้าของผลิตภัณฑ์จะรับผิดชอบในการยกเลิกโครงการปัจจุบันและเริ่มโครงการใหม่

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

8

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

นี่เป็นปกติ

สิ่งที่คุณอธิบายคือเอนโทรปีปกติของฐานรหัส ในกรณีของคุณทีมอาจเริ่มห่างจากอุดมคติ แต่ในที่สุดทุกฐานรหัสก็กลายเป็นBig Ball of Mudลูกบิ๊กของโคลน

ในความสมบูรณ์ที่สมบูรณ์แบบ กรีนฟิลด์สถานการณ์ทั้งหมดที่คุณสามารถทำได้คือเริ่มต้นจากเอนโทรปีที่สมบูรณ์

ฉันเห็นด้วยกับคนอื่น ๆ รหัสฐานยุ่งเหยิงเป็นเพราะนักพัฒนา ฉันมั่นใจว่าจะมีการใช้ SCRUM มาก่อนหลายปี

นี่ไม่ใช่การตัดสินใจทางเทคนิคหรือนักพัฒนาในการเขียนใหม่ แต่เป็นการตัดสินใจทางธุรกิจ

คุณไม่ได้เป็นส่วนตัวว่าทำไมเจ้าของผลิตภัณฑ์ไม่ต้องการเขียนใหม่ คุณในฐานะนักพัฒนาคิดว่าเป็นสิ่งจำเป็น แต่มีกรณีธุรกิจจริง ๆหรือไม่?

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

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

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

หากคุณสามารถแสดงหลักฐานได้จริง ๆไม่ใช่แค่ทฤษฎี แต่เป็นหลักฐานที่พิสูจน์ได้ว่าการใช้จ่ายXเงินดอลลาร์ในการเขียนใหม่ของกรีนฟิลด์จะรับประกันว่าจะทำให้ X * Nดอลลาร์สำหรับธุรกิจในYกรอบเวลา (ที่NสูงและYสั้น) คุณอาจได้รับแรงฉุด . นี่เป็นกรณีที่ไม่น่าเป็นไปได้สูงที่คุณจะสามารถนำเสนอและพิสูจน์ได้

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


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

3
Messy Code ไม่เคยเป็นผลมาจากการจัดการโดยตรงเนื่องจากฝ่ายบริหารไม่เคยรับผิดชอบในการเขียนโค้ดโดยตรง มันง่ายที่ การจัดการมีความรับผิดชอบในการมีและส่งเสริมสภาพแวดล้อมการทำงานที่น้อยกว่าอุดมคติสำหรับนักพัฒนา แต่ความรับผิดชอบในการทำงานผ่านปัญหาเช่นการขาดการควบคุมเวอร์ชันมักจะตกอยู่กับผู้ที่ทำงานจริง
Peter Lange

1
devs ที่มาจากภายนอกเป็นปัญหาการจัดการ คนภายในรู้ดีกว่า ฝ่ายบริหารชอบที่จะแกล้งทำเป็นว่าพวกเขาประหยัดเงินจำนวนมากด้วยการจ้างงาน 200 devs ซึ่งในความเป็นจริงพวกเขาอาจทำได้ดีกับพนักงานที่มีความสามารถ 20 คน เหมือนกับการใช้งาน Scrum มากมายที่ฉันเคยเห็นกลยุทธ์ที่นำมาใช้นั้นเป็นผลิตภัณฑ์ที่ขาดคุณสมบัติและไม่มีสิ่งใดที่ devs ซึ่งเป็นพนักงาน บริษัท จริง ๆ สามารถควบคุมได้
Erik Reppen

2
@Erik ไม่ได้บอกว่าผู้จัดการไม่ต้องรับผิดชอบรหัสฐานที่ไม่ดี (หรือการตัดสินใจที่ไม่ดีอื่น ๆ ที่เกิดขึ้นในแผนกของพวกเขา) และผู้จัดการนั้นไม่รับผิดชอบโดยตรงในการจัดหาสภาพแวดล้อมที่นักพัฒนาทำงานเช่นสถานการณ์ที่คุณอธิบาย แต่บุคคลเดียวที่สามารถรับผิดชอบรหัสฐานโดยตรงคือบุคคลที่เขียนรหัสนั้นเอง
Peter Lange

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

7

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

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


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

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

ฉันเห็นด้วย. แต่อย่างที่ฉันได้พูดไป (และไม่แน่ใจว่าทุกคนจะได้เห็น) ตอนนี้มีชุดของแอปพลิเคชันเว็บที่แยกจากกันประมาณ 9 โปรแกรมครึ่งหนึ่งเป็น Classic ASP และอีกครึ่งหนึ่งเป็นรูปแบบที่แตกต่างกันของ ASP.NEt ทั้งหมดใช้วิธีที่แตกต่างกันอย่างสิ้นเชิงในการจัดการการเข้าถึงข้อมูล ฯลฯ ดังนั้นวิธีเดียวที่จะทำในสิ่งที่พูดถึงคือการปลอม UI ให้ดูเหมือนรหัสใหม่เป็นส่วนหนึ่งของรหัสเก่า .. ดังนั้นอาจจะ .. แต่แล้วก็มี ฐานข้อมูล .. หนึ่งตารางมี 400 ฟิลด์!
punkouter

ฉันอยากรู้. ตารางนั้นหมายถึงอะไร นั่นคือสิ่งที่แย่ที่สุดที่ฉันเคยได้ยินตั้งแต่ฉันเห็น i ++; doSomething (i); ทำซ้ำหลายสิบครั้งในรหัสที่หกออกมาจากแท็ก JSP ที่ถูกจับ
Erik Reppen

5

ฉันอยู่ที่ไหนและทำงานอย่างไรนี่คือสิ่งที่เราจะทำ: เขียนเรื่องใหม่และมอบมันให้กับเจ้าของผลิตภัณฑ์แล้วใครจะเป็นผู้ตัดสินใจว่าจะจัดลำดับความสำคัญอย่างไร ตัวอย่างเช่น: "ในฐานะนักพัฒนาผลิตภัณฑ์ X ฉันต้องการเขียนโค้ดใหม่ในพื้นที่นี้เพื่อให้การพัฒนาในอนาคตมีประสิทธิภาพมากขึ้น" จากนั้นเกณฑ์การยอมรับจะต้องเป็นไปตาม: การเขียน / refactoring x เพื่อให้ดีขึ้นในวิธีนี้

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

สิ่งอื่น ๆ ที่เราได้ทำเพื่อพยายามและจัดการกับรหัสที่ไม่ดีและ / หรือรหัสดั้งเดิมคือการรวมงานสำหรับการทำงานซ้ำเมื่อมอบหมายเรื่องราวของผู้ใช้


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

6
@punkouter: หากเหตุผลที่ต้องการเขียนใหม่นั้นเป็นเรื่องทางเทคนิคล้วนๆ (นั่นคือไม่ใช่ต้นทุนทางธุรกิจ) คุณก็ไม่มีเหตุผลเพียงพอที่จะเขียนซ้ำ
Michael Borgwardt

@MichaelBorgwardt: คุณกำลังบอกว่าเหตุผลทางเทคนิคใด ๆ ที่ไม่เพียงพอสำหรับการเขียนใหม่บางสิ่งบางอย่าง? นั่นเป็นวิธีที่ขาดพื้นฐานหากฉันเข้าใจคุณอย่างถูกต้อง สิ่งหนึ่งที่ทำให้ผมหงุดหงิดอย่างต่อเนื่องก็คือวิธีการทำงานแบบปรกติ / ทาสซึ่ง 'ธุรกิจ' เป็นตัวกำหนดทุกอย่างที่ 'ไอที' หรือแผนกอื่น ๆ ทำ นั่นเป็นเรื่องจริงในระดับหนึ่งเท่านั้น ไอทีมีข้อกำหนดของตัวเองที่อยู่ภายในและไม่ได้ตัดสินใจโดยธุรกิจ - นี่คือสิ่งหนึ่งที่มักจะขาดหายไปและนำไปสู่ซอฟต์แวร์ที่ไม่มีวิศวกรรมไม่เหมาะกับวัตถุประสงค์
nicodemus13

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

1
@ user12355: เหตุผลทางเทคนิคเพียงพอสำหรับเรื่องราวของผู้ใช้ พวกเขาไม่เพียงพอที่จะได้รับการเลื่อนตำแหน่งไปด้านบนของรายการและวางลงในการวิ่ง
อดัมวี

4

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

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

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

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


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

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

3

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

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


ดังที่ฉันได้กล่าวไปแล้ว ... ไม่มีทางที่จะส่งต่อไปด้วยคอลเลกชันไซต์ Classic ASP 6 แห่ง + ไซต์. net 1.1 4 แห่งที่รวมกันเป็นหนึ่งไซต์ รหัสทั้งหมดโดยคนที่แตกต่างกันในรูปแบบที่แตกต่างกัน
punkouter

ฉันกำลังลำยองแน่ใจว่าฐานรหัสจะก้าวไปข้างหน้าสำหรับปีที่ผ่านมาถอดความดร. เอียน Malcom จาก Jurrasic พาร์ค "ฉันฉันเพียงแค่บอกว่าการจัดการที่เอ่อ ... พบทาง"

อาจเป็นไปได้ว่าจะเกิดขึ้นในอีกไม่กี่ปีข้างหน้า แต่รสชาติที่แตกต่างกันของเว็บไซต์. net ที่เชื่อมโยงกันอย่างแน่นหนานั้นไม่น่าที่จะย้ายไกลในปีนั้น ๆ
Erik Reppen

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

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

2

คุณถาม:

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

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

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


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

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

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

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

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

1

ฉันรู้สึกถึงความเจ็บปวดของคุณ แต่ไม่แน่ใจว่าเกี่ยวข้องกับการต่อสู้ การตัดสินใจว่าจะเขียนโค้ดซ้ำไม่ได้ขึ้นอยู่กับกระบวนการพัฒนา


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

1

รออะไร?

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

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