ฉันจะเปลี่ยนวัฒนธรรม บริษัท ที่เลอะเทอะได้อย่างไร [ปิด]


28

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

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

สิ่งต่อไปที่ฉันรู้ผู้บังคับบัญชาของฉันโทรหาฉันบอกฉันว่าเขากำลังพยายามทำให้ซอฟต์แวร์ทำงานบนคอมพิวเตอร์ของลูกค้า แต่มันแสดงข้อความข้อผิดพลาด X วะ ?? ซอฟต์แวร์ดังกล่าวยังไม่พร้อมสำหรับการเปิดตัวและฉันไม่ได้บอกว่ามันต้องพร้อมสำหรับการเปิดตัว แต่ด้วยเหตุผลบางอย่างหัวหน้าของฉันคิดว่ามันดีพอและเปิดตัวโดยไม่บอกนักพัฒนาดั้งเดิม

MessageBox.Show("DO NOT GIVE TO CLIENTS!");ตอนนี้ปัญหานี้โดยเฉพาะอย่างยิ่งเป็นเรื่องง่ายที่จะแก้ไขด้วย อย่างไรก็ตามปัญหาดังกล่าวบ่งบอกถึงปัญหาที่ลึกซึ้งยิ่งขึ้น: วัฒนธรรม บริษัท ของเราไม่ราบรื่น ซอฟต์แวร์เลอะเทอะตกลงและกระบวนการเลอะเทอะตกลง ไม่ต้องกังวลเกี่ยวกับอนาคตลองใช้ความพยายามอย่างเต็มที่เพื่อให้มันทำงานได้ไม่เต็มที่วางไบนารีในไฟล์. zip แล้วส่งไป ดีพอสำหรับงานราชการ

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


8
รัสเซียแก่พูดว่า "ปลามีกลิ่นเหม็นจากหัว!"!

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

ฟังดูแล้วสำหรับฉันเช่นนี้น่าจะเป็นการทดสอบ (หน่วยหรือการรวม) แทนแอปพลิเคชัน ....
devlife

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

@ DanOlson คุณพูดถูก แต่ในเวลานั้นฉันไม่รู้ว่าลูกค้าจะต้องการมัน ถ้าฉันมีฉันจะทำให้มันกลายเป็นโครงการซอฟต์แวร์เต็มรูปแบบ
Phil

คำตอบ:


20

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

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


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

+1 ด้วยเหตุผลเดียวกับ @dreza แต่ขอให้โชคดีกับการจัดการซื้อค่ะ
talonx

8

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


5
ในฐานะที่เป็น OP ฉันต้องการดูคำอธิบายว่าทำไมสิ่งนี้จึงถูกลดระดับลง
Phil

4
ไม่ต้องพูดถึงว่าสิ่งที่รวดเร็วและสกปรกยังสามารถเก็บข้อมูลที่สำคัญที่ไม่ควรออกจากอาคาร (รหัสผ่าน hardcoded สำหรับการทดสอบ)
ratchet freak

3

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


เท่าที่ฉันเห็นด้วยมันเป็นกลยุทธ์ที่น่าเศร้าหลังจากทั้งหมด ใครอยากทำงานในสภาพแวดล้อมเช่นนี้ วัฒนธรรมดังกล่าวจะฆ่าความคิดสร้างสรรค์ในระยะยาวอย่างเงียบ ๆ พยายามให้ดีที่สุดเท่าที่คุณจะทำได้ หากวัฒนธรรมนั้นไม่เหมาะสมอีกต่อไป
JensG

2

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

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

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


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

1

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

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

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

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


+1 สำหรับ "การทำให้ผู้คนรอสิ่งที่คุณเห็นเนื่องจากรหัสที่ทำงานได้น้อยที่สุดดูเหมือนจะเกินความคาดหวังในปัจจุบัน" น่าเศร้าจริง
Phil

@Phil - และส่วนใหญ่ก็ไม่ต้องการรับรายละเอียด บางครั้งคุณสามารถล่อลวงพวกเขาด้วยความสามารถในการเปลี่ยนแปลงได้อย่างง่ายดายในอนาคตความปลอดภัยหรือจัดการผู้ใช้มากขึ้น
JeffO

1

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

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

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

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


0

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

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

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

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

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