คำถามติดแท็ก development-process

สำหรับคำถามเกี่ยวกับกระบวนการพัฒนาซอฟต์แวร์

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

30
เหตุใดอุตสาหกรรมไอทีจึงไม่สามารถส่งมอบโครงการขนาดใหญ่ที่ปราศจากข้อผิดพลาดได้อย่างรวดเร็วเหมือนในอุตสาหกรรมอื่น ๆ
หลังจากดูซีรีส์ MegaStructuresของ National Geographic ฉันรู้สึกประหลาดใจที่โครงการขนาดใหญ่เสร็จสมบูรณ์ เมื่อทำงานเบื้องต้น (การออกแบบรายละเอียดอื่น ๆ ) จะทำบนกระดาษสำนึกตัวเองของโครงการขนาดใหญ่ที่ใช้เวลาเพียงไม่กี่ปีหรือบางครั้งไม่กี่เดือน ตัวอย่างเช่นแอร์บัส A380 "เปิดตัวอย่างเป็นทางการในวันที่ 19 ธันวาคม 2000" และ "ในช่วงต้นเดือนมีนาคม 2548"เครื่องบินได้ทำการทดสอบแล้ว เช่นเดียวกันกับเรือบรรทุกน้ำมันขนาดใหญ่ตึกระฟ้า ฯลฯ เมื่อเทียบกับความล่าช้าในอุตสาหกรรมซอฟต์แวร์ฉันไม่สามารถช่วยสงสัยได้ว่าทำไมโครงการไอทีส่วนใหญ่จึงช้าหรือแม่นยำกว่าทำไมพวกเขาจึงไม่รวดเร็วและไม่ผิดพลาดในระดับเดียวกันทำให้มีคนมากพอ? โครงการต่างๆเช่น Airbus A380 มีทั้ง: ความเสี่ยงที่คาดไม่ถึงที่สำคัญ: แม้ว่านี่จะไม่ใช่เครื่องบินลำแรกที่สร้างขึ้น แต่ก็ยังคงผลักดันขีด จำกัด ของเทคโนโลยีและสิ่งต่าง ๆ ที่ทำงานได้ดีสำหรับสายการบินขนาดเล็กอาจไม่ทำงานสำหรับเครื่องบินที่ใหญ่กว่าเนื่องจากข้อ จำกัด ทางกายภาพ ในทำนองเดียวกันเทคโนโลยีใหม่ที่ใช้ซึ่งยังไม่ได้ใช้เพราะตัวอย่างเช่นพวกเขายังไม่พร้อมใช้งานในปี 1969 เมื่อโบอิ้ง 747 เสร็จสิ้น ความเสี่ยงที่เกี่ยวข้องกับทรัพยากรมนุษย์และการจัดการโดยทั่วไป: ผู้คนเลิกกลางโครงการไม่สามารถเข้าถึงบุคคลเพราะเธออยู่ในช่วงหยุดพักร้อนข้อผิดพลาดทั่วไปของมนุษย์ ฯลฯ ด้วยความเสี่ยงเหล่านี้ผู้คนยังคงประสบความสำเร็จในโครงการเช่นสายการบินขนาดใหญ่เหล่านั้นในระยะเวลาอันสั้นและแม้จะมีความล่าช้าในการส่งมอบโครงการเหล่านั้นก็ยังคงประสบความสำเร็จอย่างมากและมีคุณภาพสูง เมื่อพูดถึงการพัฒนาซอฟต์แวร์โครงการขนาดใหญ่และซับซ้อนเหมือนสายการบิน (ทั้งในเชิงเทคนิคและในแง่ของการจัดการ) และมีความเสี่ยงที่ไม่คาดคิดจากโลกจริงน้อยลงเล็กน้อย อย่างไรก็ตามโครงการไอทีส่วนใหญ่นั้นช้าและล่าช้าและการเพิ่มนักพัฒนาให้กับโครงการไม่ใช่ทางออก (จากทีมนักพัฒนาสิบถึงสองพันคนบางครั้งจะอนุญาตให้ส่งมอบโครงการเร็วขึ้นบางครั้งก็ไม่ได้และบางครั้งจะเป็นอันตรายต่อ โครงการและเพิ่มความเสี่ยงของการไม่จบเลย) …

19
ฉันได้รับรหัสปาเก็ตตี้ 200K บรรทัดแล้วตอนนี้เป็นอย่างไร
ฉันหวังว่านี่ไม่ใช่คำถามทั่วไปเกินไป ฉันสามารถใช้คำแนะนำที่ปรุงรสได้จริงๆ ฉันเพิ่งได้รับการว่าจ้างให้เป็น "SW Engineer" แต่เพียงผู้เดียวในร้านค้าเล็ก ๆ ของนักวิทยาศาสตร์ที่ใช้เวลา 10-20 ปีที่ผ่านมาในการปูก้อนกรวดด้วยกันเป็นฐานรหัสที่กว้างใหญ่ (มันถูกเขียนในภาษาที่ล้าสมัยจริง: G2 - คิดว่า Pascal ด้วยกราฟิก) ตัวโปรแกรมเองเป็นแบบจำลองทางกายภาพของโรงงานแปรรูปสารเคมีที่ซับซ้อน ทีมที่เขียนมันมีความรู้เกี่ยวกับโดเมนอย่างไม่น่าเชื่อ แต่มีการฝึกอบรมอย่างเป็นทางการเพียงเล็กน้อยในการเขียนโปรแกรมพื้นฐาน พวกเขาเพิ่งเรียนรู้บทเรียนที่ยากลำบากเกี่ยวกับผลที่ตามมาของการจัดการการกำหนดค่าที่ไม่มีอยู่จริง ความพยายามในการบำรุงรักษาของพวกเขายังถูกขัดขวางอย่างมากจากการสะสม "ตะกอน" ที่ไม่มีเอกสารในรหัสด้วย ฉันจะให้คุณ "การเมือง" ของสถานการณ์ (มีเสมอ การเมือง!) แต่ก็เพียงพอที่จะบอกว่าไม่มีความเห็นเป็นเอกฉันท์เกี่ยวกับสิ่งที่จำเป็นสำหรับเส้นทางข้างหน้า พวกเขาขอให้ฉันเริ่มนำเสนอหลักการบางประการของการพัฒนาซอฟต์แวร์ที่ทันสมัยให้กับทีม พวกเขาต้องการให้ฉันแนะนำวิธีปฏิบัติและกลยุทธ์มาตรฐานอุตสาหกรรมบางประการเกี่ยวกับข้อกำหนดการเข้ารหัสการจัดการวงจรชีวิตรูปแบบการออกแบบระดับสูงและการควบคุมแหล่งที่มา ตรงไปตรงมามันเป็นงานที่ค่อนข้างน่ากลัวและฉันไม่แน่ใจว่าจะเริ่มต้นที่ไหน ในตอนแรกฉันมีแนวโน้มที่จะสอนพวกเขาในบางแนวคิดหลักของThe Pragmatic ProgrammerหรือRefactoringของ Fowler ("Code Smells" ฯลฯ ) ฉันหวังว่าจะแนะนำวิธีการแบบ Agile จำนวนมาก แต่ท้ายที่สุดเพื่อให้มีประสิทธิภาพฉันคิดว่าฉันจะต้องฝึกฝนพื้นฐาน 5-7 หลัก กล่าวอีกนัยหนึ่งอะไรคือหลักการหรือวิธีปฏิบัติที่สำคัญที่สุดที่พวกเขาสามารถเริ่มใช้งานได้อย่างแนบเนียน นั่นคือคำถามของฉัน: สิ่งที่คุณจะรวมไว้ในรายการกลยุทธ์ที่มีประสิทธิภาพที่สุดเพื่อช่วยยืดเส้นสปาเก็ตตี้ออกไป (และป้องกันไม่ให้เกิดขึ้นในอนาคต)

12
กลยุทธ์ในการเก็บรักษาข้อมูลลับเช่นคีย์ API อยู่นอกการควบคุมของแหล่งที่มาหรือไม่
ฉันกำลังทำงานบนเว็บไซต์ที่จะอนุญาตให้ผู้ใช้เข้าสู่ระบบโดยใช้ข้อมูลประจำตัว OAuth จาก Twitter, Google และอื่น ๆ ในการทำเช่นนี้ฉันต้องลงทะเบียนกับผู้ให้บริการที่หลากหลายเหล่านี้และรับคีย์ API ลับสุดยอดที่ฉันมี เพื่อปกป้องด้วยคำมั่นสัญญาจากส่วนต่างๆของร่างกาย หากคีย์ของฉันถูก ganked ส่วนนั้นจะถูกดึง คีย์ API ต้องเดินทางไปพร้อมกับที่มาของฉันเนื่องจากมันถูกใช้ที่รันไทม์เพื่อทำการร้องขอการตรวจสอบสิทธิ์ ในกรณีของฉันคีย์ต้องมีอยู่ภายในแอปพลิเคชันในไฟล์กำหนดค่าหรือภายในโค้ดเอง นั่นไม่ใช่ปัญหาเมื่อฉันสร้างและเผยแพร่จากเครื่องเดียว อย่างไรก็ตามเมื่อเราส่งการควบคุมแหล่งที่มาลงในการผสมสิ่งต่าง ๆ ก็ซับซ้อนขึ้น ในฐานะที่ฉันเป็นไอ้เลวราคาถูกฉันก็อยากใช้บริการควบคุมแหล่งข้อมูลฟรีเช่น TFS ในคลาวด์หรือ GitHub สิ่งนี้ทำให้ฉันมีปริศนาเล็กน้อย: ฉันจะรักษาร่างกายของฉันให้เหมือนเดิมได้อย่างไรเมื่อคีย์ API ของฉันอยู่ในรหัสของฉันและรหัสของฉันจะมีอยู่ในที่เก็บสาธารณะ ฉันสามารถนึกถึงวิธีการต่าง ๆ ในการจัดการกับสิ่งนี้ แต่ไม่มีวิธีใดที่น่าพอใจ ฉันสามารถลบข้อมูลส่วนตัวทั้งหมดจากรหัสและแก้ไขกลับมาหลังจากการใช้งาน นี่จะเป็นความเจ็บปวดที่รุนแรงในการติดตั้ง (ฉันจะไม่ให้รายละเอียดหลาย ๆ วิธี) และไม่ใช่ตัวเลือก ฉันสามารถเข้ารหัสได้ แต่เมื่อฉันต้องถอดรหัสมันทุกคนที่มีแหล่งที่มาสามารถคิดวิธีการดังกล่าว ไม่มีจุดหมาย ฉันสามารถจ่ายสำหรับการควบคุมแหล่งข้อมูลส่วนตัว ฮ่า ๆ j / k ใช้เงินไหม …

11
เกิดอะไรขึ้นกับ“ ทีมศัลยกรรม” จาก“ ตำนานคนเดือน”?
หลายปีก่อนเมื่อฉันอ่าน The Mythical Man-Month ฉันพบสิ่งต่าง ๆ มากมายที่ฉันรู้จักจากแหล่งอื่น ๆ อย่างไรก็ตามมีสิ่งใหม่ ๆ อยู่ในนั้นแม้จะเป็นหนังสือจากปี 1975 หนึ่งในนั้นคือ: ทีมผ่าตัด มิลส์เสนอว่าแต่ละส่วนของงานที่มีขนาดใหญ่จะได้รับการจัดการทีม แต่ทีมจะได้รับการจัดระเบียบเหมือนทีมผ่าตัดมากกว่าทีมงานหมู นั่นคือแทนที่จะเป็นสมาชิกแต่ละคนตัดปัญหาปัญหาคนหนึ่งตัดและคนอื่นให้การสนับสนุนทุกอย่างแก่เขาซึ่งจะเพิ่มประสิทธิภาพและประสิทธิผลของเขา นี่เป็นรูปแบบที่น่าสนใจมากสำหรับการจัดทีมพัฒนาซอฟต์แวร์ แต่ฉันไม่เคยพบมันมาอธิบายไว้ในหนังสือวิศวกรรมซอฟต์แวร์เล่มอื่น ๆ ทำไมถึงเป็นอย่างนั้น? "ทีมศัลยกรรม" เป็นเรื่องที่ผิดปกติหรือเปล่า หรือว่ามีการลองและล้มเหลว ถ้าเป็นเช่นนั้นมันล้มเหลวได้อย่างไร? ถ้าไม่ทำไมเราไม่เห็นรูปแบบนั้นถูกนำไปใช้ในโครงการซอฟต์แวร์ในปัจจุบัน

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

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

16
การแก้ไขข้อผิดพลาดจะเกิดขึ้นมากเกินไปถ้าเคย?
ลองนึกภาพคุณกำลังสร้างเครื่องเล่นวิดีโอใน JavaScript เครื่องเล่นวิดีโอนี้ลูปวิดีโอของผู้ใช้ซ้ำ ๆ โดยใช้ฟังก์ชั่นวนซ้ำและด้วยเหตุนี้เบราว์เซอร์จะทริกเกอร์too much recursion RangeErrorในบางครั้ง อาจไม่มีใครจะใช้คุณสมบัติลูปที่มาก แอปพลิเคชันของคุณจะไม่ทิ้งข้อผิดพลาดนี้แม้ว่าผู้ใช้จะออกจากลูปแอปพลิเคชันเป็นเวลาหนึ่งสัปดาห์ แต่ก็ยังคงมีอยู่ การแก้ไขปัญหาจะทำให้คุณต้องออกแบบวิธีการวนซ้ำในแอปพลิเคชันของคุณซึ่งจะใช้เวลานานพอสมควร คุณทำอะไร? ทำไม? แก้ไขข้อบกพร่อง ออกจากบั๊ก คุณไม่ควรแก้ไขข้อบกพร่องที่คนจะสะดุดหรือไม่ การแก้ไขข้อผิดพลาดจะกลายเป็น overkill เมื่อใด? แก้ไข: หากวิธีการเวียนเกิดไม่ได้ก่อให้เกิดข้อผิดพลาดที่เกิดขึ้นจริงเป็นกังวลสำหรับคุณสมมติว่าแต่ละครั้งที่ผู้เล่น loops 1วิดีโอตัวแปรที่เพิ่มขึ้นด้วย หลังจาก 2 53ลูปตัวแปรนี้จะล้นและโปรแกรมของคุณจะไม่สามารถจัดการได้โดยส่งข้อยกเว้น

7
ที่ทำงานของฉันต้องการที่จะรวมสาขาที่ไม่มีที่สิ้นสุดเป็นนโยบาย เรามีตัวเลือกอื่น ๆ อีกบ้าง?
ที่ทำงานของฉันกำลังพยายามหาวิธีที่เราจัดการแยกสาขาและผสานและเราประสบปัญหาใหญ่ ปัญหาของเราคือกับสาขาระยะยาว - ประเภทที่คุณมีไม่กี่คนที่ทำงานด้านข้างที่แยกจากต้นแบบเราพัฒนาขึ้นสองสามเดือนและเมื่อเราถึงเหตุการณ์สำคัญ ทีนี้ IMHO วิธีที่เป็นธรรมชาติในการจัดการคือสควอชด้านข้างให้กลายเป็นคอมมิชชันเดียว masterก้าวหน้าไปข้างหน้า อย่างที่ควรจะเป็น - เราไม่ได้ทิ้งการพัฒนาขนานไปmasterกับประวัติศาสตร์เป็นเวลาหลายเดือน และถ้าใครต้องการความละเอียดที่ดีกว่าสำหรับประวัติของไซด์แบรนช์แน่นอนว่ามันยังอยู่ที่นั่น - มันไม่ได้อยู่ในmasterไซด์แบรนช์ นี่คือปัญหา: ฉันทำงานเฉพาะกับบรรทัดคำสั่ง แต่ทีมที่เหลือของฉันใช้ GUIS และฉันได้ค้นพบว่า GUIS ไม่มีตัวเลือกที่เหมาะสมในการแสดงประวัติจากสาขาอื่น ดังนั้นถ้าคุณมาถึงสควอชกระทำบอกว่า "การพัฒนานี้แบนจากสาขาXYZ" มันเป็นขนาดใหญ่XYZความเจ็บปวดที่จะไปดูว่ามีอะไรใน บน SourceTree เท่าที่ฉันสามารถหาได้มันเป็นเรื่องที่ปวดหัวมาก: ถ้าคุณอยู่masterและคุณต้องการดูประวัติmaster+devFeatureคุณต้องเช็คเอาmaster+devFeatureท์ (แตะทุก ๆ ไฟล์ที่แตกต่าง) หรืออย่างอื่น เลื่อนดูบันทึกแสดงสาขาของพื้นที่เก็บข้อมูลทั้งหมดของคุณขนานกันจนกว่าคุณจะพบสถานที่ที่เหมาะสม และโชคดีที่ได้รู้ว่าคุณอยู่ที่ไหน เพื่อนร่วมทีมของฉันถูกต้องไม่ต้องการมีประวัติการพัฒนาจึงไม่สามารถเข้าถึงได้ ดังนั้นพวกเขาจึงต้องการให้สาขาด้านการพัฒนาขนาดใหญ่และยาวผสานเข้าด้วยกันด้วยการรวมกิจการ พวกเขาไม่ต้องการประวัติใด ๆ ที่ไม่สามารถเข้าถึงได้ทันทีจากสาขาหลัก ฉันเกลียดความคิดนั้น มันหมายถึงความสับสนวุ่นวายไม่รู้จบของประวัติศาสตร์การพัฒนาแบบคู่ขนาน แต่ฉันไม่เห็นทางเลือกอื่นที่เรามี และฉันก็งุนงงมาก ดูเหมือนว่าจะปิดกั้นทุกสิ่งส่วนใหญ่ที่ฉันรู้เกี่ยวกับการจัดการสาขาที่ดีและมันจะเป็นเรื่องยุ่งยากสำหรับฉันถ้าฉันไม่สามารถหาวิธีแก้ปัญหาได้ เรามีตัวเลือกใด ๆ นอกเหนือจากการรวมสาขาย่อยเข้าด้วยกันเป็นหลักอย่างต่อเนื่องหรือไม่? หรือมีเหตุผลที่การใช้งานผสานอย่างต่อเนื่องไม่เลวร้ายอย่างที่ฉันกลัวหรือไม่?

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

8
โปรแกรมเมอร์จำนวนมากย้ายรหัสของพวกเขาไปที่ GitHub?
ในช่วง 6 เดือนที่ผ่านมาฉันได้เห็นรหัสหลายโฮสต์ที่ sourceforge.net เช่นเดียวกับไซต์โฮสต์อื่น ๆ "ย้ายไปที่ GitHub" การค้นหาโดย Google ที่มีวลี "ย้ายไปที่ Github" จะส่งคืนผลลัพธ์หลายรายการที่มีข้อความถูกย้ายไปยัง GitHub นี่เป็นสิ่งที่ทำให้ฉันสับสนและฉันสงสัยว่าทำไมผู้คนถึงเคลื่อนไหวอย่างแน่นอน หมายความว่า GitHub นั้นดีกว่าหรือมีข้อได้เปรียบพิเศษที่ฉันไม่เห็นหรือไม่

10
เพื่อนร่วมงานของฉันมุ่งมั่นและผลักดันโดยไม่มีการทดสอบ
เมื่อเพื่อนร่วมงานของฉันคิดว่าไม่จำเป็นต้องทำการทดสอบบนพีซีของเขาเขาจะทำการเปลี่ยนแปลงคอมมิทและจากนั้นก็ดัน จากนั้นเขาทดสอบเซิร์ฟเวอร์ที่ใช้งานจริงและตระหนักว่าเขาทำผิดพลาด มันเกิดขึ้นสัปดาห์ละครั้ง ตอนนี้ฉันเห็นว่าเขาทำ 3 คอมมิตและผลักดันการปรับใช้กับเซิร์ฟเวอร์การผลิตภายใน 5 นาที ฉันบอกเขาสองสามครั้งว่านี่ไม่ใช่วิธีการทำงานที่ดี ฉันไม่ต้องการที่จะหยาบคายกับเขาอีกครั้งและเขาอยู่ในสถานะเดียวกันกับฉันใน บริษัท และเขาได้ทำงานมากกว่าฉันที่นี่ ฉันต้องการให้พฤติกรรมนี้ถูกลงโทษอย่างใดหรือทำให้ไม่เป็นที่พอใจมากที่สุด ก่อนที่ฉันจะเริ่มต้น บริษัท กำลังปรับใช้โดยใช้วิธีการโบราณเช่น FTP และไม่มีการควบคุมเวอร์ชัน ฉันบังคับให้พวกเขา / เราใช้ Git, Bitbucket, Dploy.io และ HipChat การปรับใช้นั้นไม่อัตโนมัติมีคนเข้าสู่ระบบเพื่อ dply.io และกดปุ่มปรับใช้ ตอนนี้ฉันจะบังคับให้พวกเขาไม่ทดสอบบนเซิร์ฟเวอร์ที่ใช้งานจริงได้อย่างไร อย่างบอทแชทสามารถรู้สึกได้ว่ามีการแก้ไขซ้ำในบรรทัดเดียวกันและส่งการแจ้งเตือนไปยังโปรแกรมเมอร์

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

13
คุณใช้“ แผนการตั้งชื่อเวอร์ชัน” อะไร [ปิด]
ข้อตกลงการตั้งชื่อเวอร์ชันต่างกันเหมาะสมกับโครงการที่แตกต่างกันหรือไม่ คุณใช้อะไรและทำไม โดยส่วนตัวแล้วฉันชอบหมายเลขบิลด์เป็นเลขฐานสิบหก (เช่น 11BCF) ซึ่งควรเพิ่มขึ้นเป็นประจำ จากนั้นสำหรับลูกค้าจะมีหมายเลขเวอร์ชัน 3 หลักอย่างง่ายคือ 1.1.3 1.2.3 (11BCF) <- Build number, should correspond with a revision in source control ^ ^ ^ | | | | | +--- Minor bugs, spelling mistakes, etc. | +----- Minor features, major bug fixes, etc. +------- Major version, UX changes, …

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

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