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