เพื่อนร่วมงานของฉันมุ่งมั่นและผลักดันโดยไม่มีการทดสอบ


113

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

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

ฉันต้องการให้พฤติกรรมนี้ถูกลงโทษอย่างใดหรือทำให้ไม่เป็นที่พอใจมากที่สุด

ก่อนที่ฉันจะเริ่มต้น บริษัท กำลังปรับใช้โดยใช้วิธีการโบราณเช่น FTP และไม่มีการควบคุมเวอร์ชัน

ฉันบังคับให้พวกเขา / เราใช้ Git, Bitbucket, Dploy.io และ HipChat การปรับใช้นั้นไม่อัตโนมัติมีคนเข้าสู่ระบบเพื่อ dply.io และกดปุ่มปรับใช้

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


1
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
วิศวกรโลก

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

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

2
การพุชไปยังที่เก็บข้อมูล "ส่วนกลาง" ทำให้เกิดการปรับใช้การผลิตเสมอ ไม่ควรแน่นอน
jpmc26

3
ผมอ่านคำถามและบอกกับตัวเองว่าผู้ชายต้องเป็นตุรกีและมีคุณไป :) ตรวจสอบนี้ครับ: nvie.com/posts/a-successful-git-branching-model คุณต้องมีสาขาอย่างน้อยสองสาขา: master และ dev ที่นักพัฒนาผลักไปที่ dev เท่านั้นและหลังจากการทดสอบคุณจะรวมเป็น master และปรับใช้
Cemre

คำตอบ:


92

คุณต้องมีกระบวนการประกันคุณภาพ (QA) ที่เหมาะสม

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

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

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

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


แนวคิดของการสนับสนุนการทำ QA ที่เกี่ยวข้องกับการปล่อยไปยังการผลิตดูเหมือนจะสะดวก แต่จะไม่บินเพราะเหตุผลของการแยกฟังก์ชั่น การสนับสนุนที่รับผิดชอบต่อการสนับสนุนหลังสิ้นสุด "การทดสอบโปรแกรมเมอร์" ควรทำให้พวกเขาตระหนักถึงการเปลี่ยนแปลงมันเป็นเรื่องยากมากสำหรับนักพัฒนาสี่คนและไม่มีใคร :-) ถ้าคุณเปลี่ยนคุณตอบให้สมัครโดยตรงกับการตั้งค่า OP จะไม่ได้ใช้มากกับคนอื่น ...
บิล Woodger

1
@BillWoodger ทำไม สำหรับพวกเขามันเป็นระบบ 'การเปลี่ยนแปลงและการย้อนกลับที่จะเกิดขึ้น' ไม่เพียง แต่พวกเขาจะได้รับประโยชน์จากการเห็นสิ่งที่กำลังเกิดขึ้นก่อนที่มันจะ 'จริง' แต่ยังเป็นวิธีที่จะย้อนกลับไปสู่เวอร์ชันล่าสุดได้อย่างง่ายดายหากสิ่งต่าง ๆ ไม่ดี อย่าลืม staging env คือการทดสอบจุดสิ้นสุดของโปรแกรมเมอร์
gbjbaanb

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

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

1
ผู้ตรวจสอบ @gbjbaanb เกี่ยวข้องกับผู้ที่สามารถเข้าถึงทุกสิ่ง หากฝ่ายสนับสนุนสามารถเปลี่ยนโปรแกรมในการพัฒนาและนำไปใช้งานจริงโดยไม่ได้รับการแทรกแซงจากบุคคลอื่นระบบก็จะถูกเปิดเผย แน่นอนว่าด้วยคนสี่คนของ OP ไม่มีการสนับสนุน "แยกต่างหาก" และฟังก์ชั่นการแบ่งที่น่าพอใจจะเป็นเรื่องยาก
Bill Woodger

54

คุณอาจต้องการได้รับเซิร์ฟเวอร์ dev และควรเป็นสภาพแวดล้อมการจัดเตรียมด้วยเช่นกัน ไม่ควรมีใครผลักจากท้องถิ่นสู่การผลิตยกเว้นเว็บไซต์ส่วนตัวของพวกเขาเอง กระบวนการปรับใช้ของคุณควรสนับสนุนเฉพาะ dev-> staging-> prod คุณอาจต้องการใครสักคนที่รับผิดชอบในการออกจากระบบใหม่ - ขึ้นอยู่กับองค์กรซึ่งอาจเป็นผู้นำโครงการ, QA เฉพาะหรือหน้าที่ที่หมุนเวียนในแต่ละสัปดาห์ ผลักดัน) อย่างไรก็ตามปรึกษากับทีมของคุณก่อนเพื่อรับการซื้อ (ดูด้านล่าง)

ฉันต้องการให้พฤติกรรมนี้ถูกลงโทษอย่างใดหรือทำให้ไม่เป็นที่พอใจมากที่สุด

คุณสามารถมีชุดทดสอบ (คุณได้มีหนึ่งในบรรดาใช่ไหม?) Looks like $username is testing on prod, watch outรวมถึงการตรวจสอบที่กำหนดถ้าคุณอยู่ในเซิร์ฟเวอร์การผลิตและถ้ามันไม่ได้ส่งให้ทุกคนในสำนักงานอีเมลแจ้งว่า บางทีการที่เพื่อนร่วมงานของคุณน่าอับอายต่อสาธารณะอาจไม่เป็นที่พอใจ หรือคุณสามารถสร้างข้อ จำกัด ทางเทคนิคเช่นห้ามทีมของคุณไม่ให้ดูที่แยง (ซึ่งคุณสามารถยกได้ แต่คุณต้องปรับให้เหมาะสม)

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

แน่นอนสิ่งที่คุณต้องการไม่ใช่เพื่อให้พฤติกรรมนี้ถูกลงโทษ แต่เพื่อให้หยุด ?

ฉันบังคับให้พวกเขา / เราใช้ [... ]

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

ดังนั้นเริ่มต้นด้วยการสนทนา

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

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


10
+1 สำหรับการสนทนา จะต้องมีความเข้าใจร่วมกันว่านี่เป็นปัญหาและสาเหตุของปัญหา เท่านั้นจึงจะสามารถประสบความสำเร็จกับการแก้ปัญหาทางเทคนิคใด ๆ
แพทริค

9
+1 สำหรับการรับสภาพแวดล้อมเซิร์ฟเวอร์ dev / การจัดเตรียม จนกว่าจะมีสถานที่จริงนอกเครื่องของตัวเองเพื่อผลักดันสิ่งที่พฤติกรรมนี้ไม่ได้เป็นความผิดของเพื่อนร่วมงานทั้งหมด มีเพียงคนจำนวนมากที่สามารถทำได้ด้วยเครื่องจักรของตัวเองและหากไม่มีสิ่งอื่นสภาพแวดล้อมพิเศษมักจะช่วยด้วยการเปลี่ยนแปลงในกระบวนการคิด / ทัศนคติในการทดสอบ
Joel Coehoorn

20

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

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

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


17

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

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

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

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

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


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

@ jpmc26: ความเสี่ยงของสงครามเปลวไฟ Git / SVN: เราได้รับระบบ SVN สำหรับรหัส "ดั้งเดิม" ของเราส่วนใหญ่ แต่ได้ใช้ Git สำหรับงานใหม่ของเรา ฉันเกือบจะรับประกันได้ว่าเราไม่มีการตั้งค่า SVN ที่ถูกต้องและ / หรือไม่ได้ใช้งานอย่างถูกต้อง แต่การจัดการสาขาของ Git รู้สึกว่าทำงานได้ง่ายขึ้นมาก ฉันมั่นใจ 100% SVN มีความสามารถมากกว่าในการจัดการการปรับใช้ที่เหมาะสม แต่ฉันสามารถเห็น (จากประสบการณ์ที่ไม่สมบูรณ์ของฉัน) วิธีที่ SVN อาจ "ห้ามปรามคุณน้อยลง" ในการทำสิ่งที่ถูกต้อง ไม่ว่าในกรณีใดก็ตามนี่จะเป็นเพียงปัจจัยสนับสนุนและการให้ความรู้แก่ผู้ใช้ก็สำคัญกว่า
TripeHound

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

2
เพียงเพราะคุณมุ่งมั่นที่จะเป็นผู้เชี่ยวชาญไม่ได้หมายความว่าคุณควรปรับใช้กับการผลิต แม้ว่า repo ต้นทาง / svn repo ของคุณโฮสต์อยู่บนเซิร์ฟเวอร์ prod สิ่งนี้ไม่ได้บอกเป็นนัย
vonPetrushev

12

นี่ไม่ใช่เรื่องแปลกโดยเฉพาะในทีมเล็ก ๆ อย่าทำเรื่องใหญ่ แต่ทำกฎอย่างไม่เป็นทางการ:

ทำลายการสร้างนำโดนัท

อย่างใดอย่างหนึ่ง 1) คุณจะได้รับโดนัทสองครั้งต่อสัปดาห์หรือ 2) พวกเขาจะยึดมั่นในมาตรฐาน

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

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


2
ใช้ได้กับสำนักงานเท่านั้น อะไรคือแนวคิดที่เทียบเท่าเมื่อคุณมีทีมงานกระจายของนักพัฒนาระยะไกลที่ทำงานจากที่บ้าน?
aroth

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

8

ตอนนี้ฉันจะบังคับพวกเขาอย่างไร ...

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

ฉันต้องการให้พฤติกรรมนี้ถูกลงโทษอย่างใดหรือทำให้ไม่เป็นที่พอใจมากที่สุด

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

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

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


6

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

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

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


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

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

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

3

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

นี่คือการฝึกการจัดการการเปลี่ยนแปลง

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

ประการที่สองคุณทำงานเป็นทีมเล็ก ๆ และน่าจะเป็นความพยายามที่จะทำให้ทั้งทีมมีส่วนร่วมในการปรับปรุงกระบวนการ

ตั้งค่ากระบวนการย้อนหลังเป็นประจำ (ตัวอย่างเช่นทุกสัปดาห์) มีทีมงานทั้งหมด:

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

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


การหวนกลับเป็นวิธีที่ดีในการจัดการและหวังว่าจะเปลี่ยนพฤติกรรมดังกล่าวด้วยวิธีที่สร้างสรรค์!
greenSocksRock

1

ฉันคิดว่าคุณพบปัญหาสองสามข้อ:

  1. ดูเหมือนว่ารหัสใด ๆ ที่ได้รับการตรวจสอบสามารถถูกผลักไปยังการผลิตโดยผู้ที่มีสิทธิ์ในการตรวจสอบรหัส

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

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

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

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

  1. ดูเหมือนว่าคุณอาจไม่ได้กำหนดมาตรฐาน / หลักการพัฒนาที่กำหนดไว้อย่างชัดเจน

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

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


0

คุณควรรวมกระบวนการตรวจสอบการรวมอย่างต่อเนื่องเข้ากับ บริษัท ใน บริษัท Bitbucket ทำให้ง่าย

และ +1 ไปยังเซิร์ฟเวอร์ dev ที่ผู้ใช้รายอื่นแนะนำ

อย่าหยาบคายกับเขามันจะทำร้ายความสัมพันธ์ในการทำงานของคุณเท่านั้น

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