It's often said that the software industry is immature compared to manufacturing. Specifically with regard to being process driven.
Question: Can we as developers learn from the processes of the manufacturing industry? Can adopting their processes increase the success rate of software development?
My take: In manufacturing the creation of a product is heavily process driven. You may have a factory where each person has a specific set of tasks they follow. A worker (or robot) may tighten a screw all day long. Then the next task in the process is performed by the next specialist. The workers (and robots) do not deter from the process or make something up "on the fly". The parts churn through the through the process, and the output is a finished product. It works well and companies achieve 99.99966% defect free products. Companies iron out inefficiencies over time. This is impressive and very well may be the sign of a mature industry.
In manufacturing a defined process can literally create the finished product. I don't think this is the case in software. We may have processes for source control, code review, check in sheets, requirements gathering, the SDLC, etc. But executing those processes does not in and of itself create a finished product. These processes may be beneficial, but are orthogonal to the actual creation.
Suppose your company is contracted to create software that will search millions of images to find the faces of a criminals. Despite the heavy process driven environment, the developer must engage in creating things "on the fly". Doing things on the fly is against the spirit of manufacturing. A good manufacturing process can be executed without thought by a robot.
For the creation of complex algorithms which have yet to be fathomed in the mind of a human, it is a necessity to create things on the fly. Software development is not the following of a process, but the creation of a processes to be exucuted by a computer. That is a fundamental difference. No matter how many orthogonal processes we put up around development, we will always resort to doing it "on the fly" when it comes to creation.
Everyone I talk to seems to agree with the manufacturing mindset. Am I alone in my thoughts?
Edit: I have accepted an answer. And my mind is made up.
[start lecture]
I declare the field of Software Engineering has grossly misunderstood the nature of processes. A process is a set of steps. If something can be expressed as a set of steps, it can be automated (or at least the high level aspects can be applied by rote). Automation cannot perform original creation, therefore all processes are orthogonal to creation.
I think our best bet is to come to terms that the processes that we adopt are orthogonal. We can never grow out of our "immaturity". It is the physics of creation that will keep us perceived as immature forever.
[/end lecture]