So sánh kỹ thuật phần mềm với kỹ thuật dân dụng, tôi rất ngạc nhiên khi quan sát một cách suy nghĩ khác: bất kỳ kỹ sư dân sự nào cũng biết rằng nếu bạn muốn xây dựng một túp lều nhỏ trong vườn, bạn có thể lấy nguyên liệu và xây dựng nó trong khi bạn muốn xây dựng một ngôi nhà 10 tầng (hoặc, ví dụ, một cái gì đó như thế này ) bạn cần thực hiện một số phép toán để chắc chắn rằng nó sẽ không sụp đổ.
Ngược lại, nói chuyện với một số lập trình viên hoặc đọc blog hoặc diễn đàn tôi thường thấy một ý kiến phổ biến rộng rãi có thể được hình thành ít nhiều như sau: lý thuyết và phương pháp chính thức dành cho các nhà toán học / nhà khoa học trong khi lập trình thiên về việc hoàn thành công việc .
Điều thường được ngụ ý ở đây là lập trình là một thứ gì đó rất thực tế và mặc dù các phương pháp chính thức, toán học, lý thuyết thuật toán, ngôn ngữ lập trình sạch / mạch lạc, v.v., có thể là những chủ đề thú vị, chúng thường không cần thiết nếu tất cả mọi người muốn là có được mọi thứ thực hiện .
Theo kinh nghiệm của tôi, tôi sẽ nói rằng trong khi bạn không cần nhiều lý thuyết để kết hợp một kịch bản 100 dòng (túp lều), để phát triển một ứng dụng phức tạp (tòa nhà 10 tầng), bạn cần một thiết kế có cấu trúc, tốt phương pháp xác định, ngôn ngữ lập trình tốt, sách văn bản tốt nơi bạn có thể tra cứu thuật toán, v.v.
Vì vậy, lý thuyết IMO (đúng số lượng) là một trong những công cụ để hoàn thành công việc .
Câu hỏi của tôi là tại sao một số lập trình viên nghĩ rằng có một sự tương phản giữa lý thuyết (phương pháp chính thức) và thực hành (hoàn thành công việc)?
Là kỹ thuật phần mềm (phần mềm xây dựng) được nhiều người nhận thức là dễ dàng so với, nói, kỹ thuật dân dụng (xây dựng nhà ở)?
Hay hai môn học này thực sự khác biệt (ngoài phần mềm quan trọng, nhiệm vụ phần mềm dễ chấp nhận hơn nhiều so với thất bại trong việc xây dựng)?
Tôi cố gắng tóm tắt, những gì tôi đã hiểu từ các câu trả lời cho đến nay.
- Trái ngược với công nghệ phần mềm, trong kỹ thuật dân dụng, rõ ràng hơn bao nhiêu lượng lý thuyết (mô hình hóa, thiết kế) là cần thiết cho một nhiệm vụ nhất định.
- Điều này một phần là do thực tế là kỹ thuật dân dụng cũng lâu đời như loài người trong khi công nghệ phần mềm chỉ mới xuất hiện được vài thập kỷ.
- Một lý do khác là phần mềm là một loại vật phẩm dễ bay hơi hơn, với các yêu cầu linh hoạt hơn (nó có thể được cho phép sụp đổ), các chiến lược tiếp thị khác nhau (thiết kế tốt có thể được hy sinh để đưa nó ra thị trường một cách nhanh chóng), v.v.
Kết quả là, rất khó để xác định mức độ phù hợp của thiết kế / lý thuyết phù hợp trong công nghệ phần mềm (quá ít -> mã lộn xộn, quá nhiều -> Tôi không bao giờ có thể hoàn thành) vì không có quy tắc chung và chỉ (rất nhiều) kinh nghiệm có thể giúp đỡ.
Vì vậy, nếu tôi giải thích chính xác câu trả lời của bạn, sự không chắc chắn này về bao nhiêu lý thuyết thực sự cần thiết góp phần vào cảm xúc yêu / ghét hỗn hợp mà một số lập trình viên hướng tới lý thuyết.