วิธีการใช้กระบวนการพัฒนากับนักศึกษา


9

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

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

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

ฉันไม่ได้มองหาคำตอบเช่น "Use Scrum", "Set a kanban board" หรือ "ลองดูเปรียว!" (แม้ว่าความคิดจะชื่นชม) โดยเฉพาะอย่างยิ่งผมหวังว่าจะได้ข้อมูลเชิงลึกกำไรเป็นวิธีการที่จะดำเนินการตามกระบวนการในการพัฒนาสำหรับการนี้สภาพแวดล้อมการทำงาน โดยปกติแล้วพนักงานจะทำงานระหว่าง 1 ถึง 2 ปีก่อนที่จะย้ายมาทำงานโดยทั่วไปไม่มีประสบการณ์และการประชุมยอดเยี่ยมประจำวันที่รวมทุกคนเข้าใกล้ไม่ได้

หนึ่งจะส่งเสริมคุณภาพประสิทธิภาพและการสื่อสารในสถานที่ทำงานได้อย่างไร

อัปเดต:หลังจากอ่านคำตอบและความคิดเห็นบางอย่างแล้วฉันคิดว่าฉันจะให้พื้นฐานเพิ่มเติม

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

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


นักพัฒนาซอฟต์แวร์รับผิดชอบต่อ QA ของตนเองหรือไม่
svidgen

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

ดังนั้นฉันคิดว่าเรากำลังพูดถึงทีมนักพัฒนานักศึกษานอกเวลา? และคุณ? ... นักพัฒนาเต็มเวลาหรืออาวุโส (> = ประสบการณ์ 10 ปี) ในทีมเลยหรือไม่?
svidgen

มี devs เต็มเวลาสองสามคนที่ทำงานจากระยะไกล แต่เราไม่เห็นพวกเขามาก (หรือเลย) ในสำนักงานใช่พนักงานทุกคนเป็นนักเรียนนอกเวลา ขณะนี้ฉันทำงานเต็มเวลา แต่จะเริ่มต้นโปรแกรม Masters เร็ว ๆ นี้ดังนั้นอาจเปลี่ยนแปลงได้) ฉันมีประสบการณ์ 5 ปีไม่ใช่ประสบการณ์การจัดการโครงการจำนวนมาก
darksinge

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

คำตอบ:


4

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

คุณไม่ต้องการคำอธิบายวิธีการดังนั้นให้ฉันอ่านส่วนนั้น: ใช้งานที่คล่องตัวเพื่อตั้งค่าคุณสมบัติต่าง ๆ ที่สามารถพัฒนาได้อย่างอิสระ

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

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

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

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

หนึ่งจะส่งเสริมคุณภาพประสิทธิภาพและการสื่อสารในสถานที่ทำงานได้อย่างไร

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

มีคำตอบที่ดี แต่นี่คือคำตอบที่ละเอียดและตรงไปตรงมาที่สุดขอบคุณ!
darksinge

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

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

8

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

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

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


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

@svidgen: ฉันไม่คิดว่าเขาจะเรียกร้องให้มีการวิจารณ์โดยนักพัฒนา clueless คนอื่น ๆ เขาไม่เคยระบุอย่างชัดเจน (ดังนั้นจึงเป็นไปได้ทั้งทาง) แต่จากประสบการณ์ของฉันความเห็นเกิดขึ้นบ่อยครั้งมากขึ้นโดยเพื่อนร่วมงานที่มีประสบการณ์หรือผู้คนในห่วงโซ่ (นำ dev) โดยเฉพาะในกรณีที่ความถนัดของนักพัฒนาบางคน ที่มา
Flater

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

2

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

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

การเพิ่มความคิดเห็นหรือเอกสารอื่น ๆ พร้อมคำอธิบายว่าทำไมสิ่งต่าง ๆ เสร็จสิ้นด้วยวิธีการบางอย่างจะช่วยให้นักพัฒนาใหม่สามารถเพิ่มความเร็วได้เร็วขึ้นด้วยการใช้โค้ดที่ดีขึ้น


2

บูรณาการอย่างต่อเนื่อง -

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

CI เป็นแนวคิดของกระบวนการทำงานตั้งแต่การเขียนโค้ดไปจนถึงการปรับใช้ งานเหล่านี้เป็นแนวคิดและเป็นอิสระจริง

CI เป็นระบบอัตโนมัติโดยเฉพาะ สิ่งนี้มีความหมายอย่างลึกซึ้งต่อคุณภาพและประสิทธิภาพการทำงานเริ่มต้นที่จุดที่พิมพ์รหัสบนหน้าจอ

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

  • เป็นกลยุทธ์

    • Holy Grail of CI เป็นระบบรวบรวมและจัดการอัตโนมัติ พวกเขาไม่สามารถ FUBAR มันหากพวกเขาไม่สามารถสัมผัสได้
    • สื่อการฝึกอบรมและการฝึกอบรม
      • กระบวนการเอกสาร
      • สร้างคู่มือของโปรแกรมเมอร์เพื่อให้มันพัฒนาขึ้นเอง
      • จำเป็น
      • โครงร่างการสำรวจกำหนดเป้าหมายทักษะที่เฉพาะเจาะจงและรหัสฐานเอง
    • ปลูกฝังค่าโปรแกรมเมอร์มืออาชีพเช่น:
      • TDD สร้างคุณภาพอย่างแน่นอน
      • การตรวจสอบรหัสรวมถึงสิ่งประดิษฐ์ทั้งหมด: ความคิดเห็นรหัสความคิดเห็นออกการทดสอบหน่วย ฯลฯ
      • "ฉันอายที่พบว่ามีแมลงกี่ตัว"
      • วัตถุประสงค์ไม่ได้ขัดขวางโดยความรู้สึกของความเป็นเจ้าของรหัสส่วนบุคคลและความกลัวว่าจะ "ทำให้ขุ่นเคือง" เจ้าของ
  • เป็นยุทธวิธี

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

ถนนสู่คุณภาพ

  • การทดสอบหน่วย

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

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

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

  • บันทึกสภาพแวดล้อมของคุณ

    • การกำหนดค่าเครื่องมือพื้นฐาน: การควบคุมเวอร์ชัน, IDE, เครื่องมือ CI, ระบบปฏิบัติการ ฯลฯ
    • ซอร์สโค้ดเอกสารการกำหนดค่าควรซิงค์ในการควบคุมเวอร์ชัน

คำพูดเกี่ยวกับกระบวนการ

Agile (และประเภทย่อยเช่น Scrum): ลืมมันไปเถอะ "คุณคล่องแคล่วคุณไม่กระฉับกระเฉง" เห็นเหล่านี้โดยเดฟโทมัสซึ่งเป็นหนึ่งในผู้ลงนามเดิมของเปรียว

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


คำศัพท์เกี่ยวกับเครื่องมือ

แค่ฉัน. ไม่ใช่จาก "เครื่องมือซอฟต์แวร์ที่ดีที่สุดในตอนนี้ ... " หม้อน้ำผึ้งแบบคลิกเหยื่อ

เจนกินส์

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

การควบคุมเวอร์ชัน

ฉันชอบ Mercurial มากกว่า Git โพสต์บล็อกนี้เป็นเหตุผลที่ฉันเลือก Mercurial: Git คือ MacGyver, Mercurial คือ James Bond

การโค่นล้มเป็นสิ่งที่ดี Mercurial & Git มีสถาปัตยกรรมที่แตกต่างซึ่งเหนือกว่าการโค่นล้ม

สภาพแวดล้อมการพัฒนาแบบบูรณาการ

นี่คือการพิจารณาไขมันใหญ่ถ้าทุกคนใช้เครื่องมือการเข้ารหัสต่าง ๆ : ไม่มีสิ่งนั้นเป็นข้อความล้วน


คำเกี่ยวกับห้องสมุดมืออาชีพ

อินเทอร์เน็ตมีความกว้างตื้นเขินและไม่เป็นระเบียบ

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

0

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


1
ต้นแบบ Vert คืออะไร คุณอาจพิจารณาขยายคำตอบของคุณมันค่อนข้างสั้นตามที่เป็นอยู่
esoterik

ฉันขอโทษฉันมีเวลาน้อยในเช้านี้ ประการแรกคือ [vertical prototype] (tutorialspoint.com/sdlc/sdlc_software_prototyping.htm) เป็นรูปแบบของการทำต้นแบบซึ่งหมายความว่าคุณสร้างซอฟต์แวร์ของคุณโดยไม่ต้องใช้ฟังก์ชั่นใด ๆ ข้อดีคือประการแรกลูกค้าที่คาดว่าจะเห็นว่าผลิตภัณฑ์อาจมีลักษณะอย่างไรประการที่สองมันให้นักพัฒนารู้สึกดีเกี่ยวกับสิ่งที่ฟังก์ชั่น "ต้องเป็น" / ข้อมูลที่จำเป็นต้องให้
gkhaos

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

0

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

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

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

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

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