Câu hỏi: Chúng ta có thể là nhà phát triển học hỏi từ các quy trình của ngành sản xuất không? Có thể áp dụng các quy trình của họ làm tăng tỷ lệ phát triển phần mềm thành công?
Trả lời: Có, tất nhiên. Có nhiều bài học mà các nhà phát triển phần mềm có thể học được từ sản xuất mặc dù thực tế rằng phát triển phần mềm là một quá trình sáng tạo. Phát triển phần mềm tự nó là một quá trình, và nó bao gồm nhiều quy trình khác. Bạn càng có thể xác định và kiểm soát các quy trình đó tốt hơn, bạn càng có thể kiểm soát tốt hơn quá trình phát triển phần mềm nói chung. Điều đó không có nghĩa là bạn nên kê đơn mỗi lần nhấn phím mà nhà phát triển thực hiện; điều đó chỉ có nghĩa là với tư cách là một nhà phát triển, bạn tự nhiên thực hiện các nhiệm vụ theo một thứ tự nhất định và những nhiệm vụ đó thường có thể được quản lý. Dưới đây là một số ví dụ:
theo dõi lỗi: Khi một lỗi được quan sát hoặc báo cáo, điều gì xảy ra với nó? Bạn có viết nó ra một mẩu giấy và dán nó lên một cành 'điều tra' không? Sau này, bạn có loại bỏ những mẩu vụn đó cùng một lúc, điều tra chúng và cuối cùng di chuyển chúng đến mức tăng 'giải quyết' không? Nếu bạn làm điều đó mà không thất bại mỗi khi bạn nhận được báo cáo lỗi, bạn đã có một quy trình được xác định rõ ràng, có thể đo lường được và có lẽ bạn sẽ tốt hơn nhiều so với một người có hệ thống theo dõi lỗi khiếm khuyết, công nghệ cao rất phù hợp rằng một số thành viên trong nhóm theo dõi các lỗi khác, hoặc hoàn toàn không.
kiểm soát phiên bản: Có nhiều khả năng bạn sử dụng kiểm soát phiên bản tại nơi bạn làm việc và kiểm soát phiên bản rõ ràng hữu ích hơn rất nhiều khi mọi người sử dụng cùng một cách.
thiết kế sản phẩm: Bạn có quyết định thực hiện các tính năng nào bằng cách ném phi tiêu vào một bức tường phủ đầy ghi chú sau đó không? Nếu vậy, bạn đã có một quá trình. Tôi không nghĩ ai sẽ tranh luận rằng đó là một quá trình tuyệt vời, nhưng ít nhất đó là điểm khởi đầu. Nếu bạn thay đổi quy trình, làm sao bạn có thể biết chắc chắn rằng thay đổi của bạn thực sự là một sự cải thiện trừ khi bạn đo lường trước và sau? Bạn không thể.
đánh giá mã: Đánh giá mã có hữu ích không nếu quy trình đánh giá và tiêu chí mã hóa thay đổi cho mỗi đánh giá? Dĩ nhiên là không.
vòng đời phát triển phần mềm: Toàn bộ phân tích -> thiết kế -> thực hiện -> kiểm tra -> chu trình bảo trì là một quy trình cần được xác định rõ ràng.
Trong mỗi trường hợp này, có một quy trình tại chỗ cho phép bạn đo lường đầu vào và đầu ra và xác định xem những thay đổi bạn thực hiện có hiệu quả như mong muốn hay không. Không có quy trình tại chỗ có nghĩa là bạn chỉ đoán khi bạn cố gắng cải thiện cách bạn làm việc. Đây thực sự là những gì sản xuất là tất cả, và nó chỉ có ý nghĩa khi mượn các công cụ tinh chế kế tiếp của sản xuất khi chúng phù hợp.
Có toàn bộ lĩnh vực dành cho việc xác định và cải tiến các quy trình được sử dụng để tạo và bảo trì phần mềm; nó được gọi là kỹ thuật phần mềm . Không có gì ngạc nhiên khi bạn có câu hỏi về quy trình phát triển trong khi đọc về CMMI - CMMI là sản phẩm của Viện Kỹ thuật phần mềm .
Phát triển phần mềm đã áp dụng nhiều khái niệm sản xuất:
Thật khó để không thấy ảnh hưởng của các bộ phận hoán đổi cho nhau của Eli Whitney đối với cả phát triển dựa trên thành phần và OOP .
Các kỹ thuật quản lý dự án được sử dụng trong phát triển phần mềm không khác lắm so với các kỹ thuật được phát triển cho sản xuất. Chỉ là hai ví dụ, thế giới phần mềm chỉ mới áp dụng khái niệm Kanban được phát triển cách đây hàng thập kỷ tại Toyota và biểu đồ Gantt đã được sử dụng trong sản xuất từ lâu trước khi máy tính điện tử đầu tiên được chế tạo.
Các phương pháp quản lý chất lượng như Six Sigma được phát triển cho sản xuất đã được điều chỉnh để phát triển phần mềm.
Mặc dù môi trường quá trình nặng nề, nhà phát triển phải tham gia vào việc tạo ra những thứ "đang hoạt động".
Bạn có nói với tôi rằng ai đó sẽ tự quyết định thêm một bản vá vào gói nhận dạng khuôn mặt và họ sẽ thêm nó vào bản dựng sản xuất mà không tạo ra sự cố trong hệ thống theo dõi, đã xem xét thiết kế, kiểm tra mã vào kiểm soát phiên bản, hoặc để mọi người kiểm tra xem nó trước? Quá trình của chúng tôi đòi hỏi những điều đó vì một số lý do rất tốt. Nếu "trên đường bay", bạn có nghĩa là "ngoài quy trình", điều đó không thể chấp nhận được.
Làm mọi thứ trên bay là trái với tinh thần sản xuất.
Một lần nữa, nếu "đang hoạt động" có nghĩa là "ngoài quy trình", bạn đã đúng. Nhưng nếu bạn nghĩ rằng sản xuất không đòi hỏi phải suy nghĩ nhanh và phát triển các giải pháp sáng tạo cho các vấn đề, thì bạn đã nhầm. Tất cả các loại vấn đề xảy ra trong quá trình sản xuất - những chiếc bánh cupcake không có đủ kem, bề mặt sơn đột nhiên ngừng vượt qua bài kiểm tra đầu của QA, 20% thành phần bị thiếu một vòng giữ quan trọng, hệ thống trộn bột đã bị hỏng phần quan trọng...