ความคาดหวังของบัณฑิตต่อความเป็นจริง [ปิด]


50

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

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

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

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

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


4
ในฐานะนักเรียนเกือบจะจากมหาวิทยาลัยนี่เป็นคำถามที่น่าสนใจมาก!
แทบ

8
สิ่งที่คุณเห็นในตอนนี้คือความจริง ข้อเท็จจริงที่น่าสนุกอื่น ๆ ที่เป็นของความจริงก็คือ: ผู้คนหลายพันล้านคนที่ไม่มีอาหารไม่รู้หนังสือภายใต้การคุกคามอย่างต่อเนื่องของสงครามตลาดการเงินที่ใกล้ล่มสลาย ฯลฯ กล่าวอีกนัยหนึ่งวิทยาลัยเป็นเขตข้อมูลจริงที่บิดเบือน เรียนรู้ความรู้หนังสือจำนวนมากภายในการป้องกันของสาขานี้
rwong

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

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

ในฐานะ Fresh Jr.Software Engineer ฉันก็ประสบสิ่งนี้ด้วยฉันคิดว่านี่เป็นเพียงในประเทศของฉันเท่านั้นตอนนี้ฉันได้รับคุณสมบัติ Unwritten ของการพัฒนาซอฟต์แวร์
parmanand

คำตอบ:


27

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

สิ่งที่ฉันไม่ได้คาดหวัง:

ความเครียดในโรงเรียนและความเครียดในการทำงานไม่เหมือนกัน - ความเครียดจากการทำงานในโครงการโรงเรียนกับเพื่อนหรือทำงานเดี่ยวแม้จะมีกำหนดเวลาวิทยานิพนธ์ที่ผ่านมาหรือการป้องกันโครงการพิเศษไม่ได้เปรียบเทียบกับความเครียดของกำหนดเวลางานที่ไม่มีเหตุผลปัญหาการสื่อสาร , (การเมืองเล็กน้อยในสำนักงาน) และเวลาที่เกิดวิกฤติ

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

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

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


5
+1 ความสำคัญของการสื่อสาร สำหรับ # 2 ไม่ใช่การขาดแนวปฏิบัติที่ดีที่สุด มันเป็น (i) แนวทางปฏิบัติที่ดีที่สุดมากเกินไปและ (ii) ขาดความสนใจในการติดตามใด ๆ
rwong

1
+1 สำหรับปลายภูเขาน้ำแข็ง! ผู้สำเร็จการศึกษาจำนวนมากคิดว่าพวกเขารู้ทุกอย่างตอนนี้ฉันรู้สึกว่าฉันรู้น้อยลงกว่าเดิม!
billy.bob

+1 บางจุดที่ดีที่นี่ บ่อยครั้งที่เหตุผลที่ไม่มีแนวทางปฏิบัติ / ระบบ / ขั้นตอนที่ดีที่สุดคือ 'ต้นทุน' ล่วงหน้า (เช่นต้องใช้รายจ่ายฝ่ายทุนในการซื้อ) - แต่ราคาที่ไม่มีพวกเขาก็คือการบำรุงรักษาที่เพิ่มขึ้นหรือแย่กว่านั้นคือความล้มเหลวของผลิตภัณฑ์ ไม่เป็นไปตามข้อกำหนด .. การสื่อสารที่ดีสามารถช่วยหลีกเลี่ยง :-)
JBRWilkinson

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

1
ถ้าเป็นไปได้ฉันจะให้ +1 เพิ่มเติมสำหรับจุดภูเขาน้ำแข็ง!
DarenW

18

งานส่วนใหญ่ที่คุณทำไม่ได้ขัดขืน

เมื่ออยู่ที่ Uni ฉันทำงานเกี่ยวกับกิจวัตรประจำวันของ AI เพื่อควบคุมหุ่นยนต์ที่เล่นฟุตบอลฉันสร้างคอมไพเลอร์และแฮกบนเมล็ดของระบบปฏิบัติการ

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

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


*และ 62% ของสถิติทั้งหมดสร้างขึ้นทันที


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

3
พวกเราหลายคนแหวกแนวใหม่ทุกวัน มันอาจไม่ใช่วิธีรักษาโรคมะเร็ง แต่เราฉลองชัยชนะเล็ก ๆ ที่มีรางวัลสูงรอบทุกรอบเค้ก / มัฟฟิน / โดนัท ฯลฯ เพื่อทำเครื่องหมายช่วงเวลา งานจำนวนมากไม่เพียง แต่การเขียนโปรแกรมไม่มีผลลัพธ์ที่คุณสามารถแสดงต่อเพื่อน / ครอบครัวของคุณได้ แต่นั่นเป็นเรื่องของการกำหนดกรอบ: คุณอาจพูดว่า "ฉันกำหนดค่าสวิตช์เครือข่ายเซิร์ฟเวอร์ DNS และไฟร์วอลล์" หรือคุณอาจเรียกวลีนี้ ในฐานะ "คุณรู้จักอินเทอร์เน็ต - Facebook, YouTube, Twitter และทุกอย่างใช่ไหมฉันช่วยทำให้มันใช้งานได้"
JBRWilkinson

1
@JBRWilkinson: +1 กรณีที่ดีที่สุดของการ "กำหนดกรอบใหม่" ที่ฉันเคยทำคืองานก่อนหน้านี้ที่ฉันทำงานกับซอฟต์แวร์ NurseCall ของโรงพยาบาล beeper คุณสามารถพูดอะไรบางอย่างที่เกี่ยวกับเรื่องนั้นเช่น "ฉันเขียนโปรแกรมที่ใช้บี๊บ" OTOH คุณสามารถพูดว่า "ฉันเขียนซอฟต์แวร์ที่ช่วยให้โรงพยาบาลทำงานได้ดีขึ้นและฉันก็อาจช่วยชีวิต !!" ยังไม่เคยคิดมาก่อนจนกระทั่งตอนนี้ แต่สถิติมันอาจเป็นจริง ตอนนี้ฉันรู้สึกดีขึ้นมากเกี่ยวกับงานนั้น นั่นคือซอฟต์แวร์นั้นได้เริ่มผลิตก่อนหน้านี้ด้วยความพยายามของฉันเป็นต้นอาจจะช่วยชีวิตคนได้ :)
Bobby Tables

1
@Guzica: การที่คุณสามารถมีส่วนร่วมในการช่วยชีวิตประจำวันน่าจะเป็นความพึงพอใจในงานที่ดีที่สุดที่ทุกคนทำได้ - ทำได้ดีมาก!
JBRWilkinson

1
ฮ่าฮ่าคำตอบที่ยอดเยี่ยมและ +1 สำหรับการมีอารมณ์ขัน!
Captain Sensible

17

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

สัมภาษณ์เต็ม: http://queue.acm.org/detail.cfm?id=1039523

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

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


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

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

>>> เราต้องการวิธีใหม่ ฉันไม่รู้ว่ามันคืออะไร - ไม่มีใครเลยดังนั้นมันจะดำเนินต่อไป!
Gary Willoughby

5

ฉันไม่ได้ปริญญา แต่ฉันก็หยิบขึ้นมาเล็กน้อยที่วิทยาลัยและห้องสมุดมหาวิทยาลัยและห้องทดลอง

  • Big Iron - เทคโนโลยีที่พวกเขาสอนส่วนใหญ่เป็นเฟรมหลักและมินิคอมพิวเตอร์ คณบดีของวิทยาลัยแห่งหนึ่งบอกฉันว่าฉันจะไม่สามารถหางานได้เพราะฉันไม่รู้ด้วยซ้ำว่าไฟล์ต้นแบบคืออะไร ฉันไม่ได้ตั้งใจที่จะทำงานกับเมนเฟรมเพราะฉันไม่สามารถซื้อได้ แต่ฉันจะไม่โง่เกินไปที่จะไม่ได้เตรียมการเล็กน้อย VAXen เจ๋งมากและฉันรอคอยที่จะได้รับเงินจากรหัส Micro VAX ของฉันในห้องเล็ก ๆ ของฉัน เป็นสิ่งที่น่าละอายอย่างยิ่งที่ตลาดมีนัยยะ (เนื่องจากปรากฎว่าฉันมีสองตำแหน่งที่ทำงานกับเมนเฟรม…ในฐานะผู้รับเหมาสำหรับ IBM)

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

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


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

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

มองย้อนกลับไปให้ฉันหนึ่งในส่วนที่ดีที่สุดคือการเรียนรู้และการเรียนการสอนอื่น ๆ


"วิทยาลัยไม่ได้สอนเทคโนโลยีล้ำสมัยให้คุณ": ใช่และไม่ใช่ ในบางสาขาการศึกษานั้นจะใช้เวลาประมาณ 20-30 ปีข้างหน้าและคุณจะได้เรียนรู้บางอย่างในวิทยาลัย
Giorgio

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

ที่เพิ่ม

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

ที่เพิ่ม

สองเซ็นต์ของฉัน: เพิ่งได้รับมัน


8
สร้างบ้านเมื่อเทียบกับการแก้ไขข้อบกพร่องอืม? "เฮ้ฉันแค่หัน doornob ไปในทางที่ผิดและบ้านก็หายไป!"
xor_eq

3

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


1
@Guzica: หนึ่งใน บริษัท ที่ฉันทำงานด้วยนั้นเป็นงานด้านวิศวกรรม ไม่ผ่านการรับรองมาตรฐาน ISO9001 แต่การปฏิบัติตามกระบวนการในบ้านนั้นค่อนข้างเข้มงวดอย่างเป็นทางการ ในขณะที่คนอื่น ๆ ก็พูดกันว่า - ไม่มีการจัดระเบียบมากไปกว่ากลุ่มนักเรียน CS ที่ทำโครงการปีสุดท้ายด้วยกัน
Bobby Tables

2

ฉันคิดว่าหลังจากจบการศึกษาว่าคนที่รับผิดชอบจะสามารถรับรู้งานที่ดีจากการทำงานที่ไม่ดี หลังจากส่งสำเนาที่หนึ่งล้านของ "โค้ดที่ยอดเยี่ยมจริงๆแล้วโค้ด coder ชั้นนำของเรารวมตัวกัน" และทำให้มันมีลักษณะดังนี้:

def lf(p, q, r):
    x = 4
    xx = 4.5
    t = {1:p, 2:p+2, 3:p*4} #I think there's a bug in here but I don't know
    .
    .
    .

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


1

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

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

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


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

1

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

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

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

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