Monday, November 17, 2008

Industrialisation in software?

One of the articles that i read had a question: Can software component creation be industrialized? That set me thinking... Software engineering has picked up many engineering practices related to Quality, Design and Productivity from other engineering disciplines. But can it also incorporate industrialization/assembly line production? Can components be created separately and then automatically assembled?

According to me, to an extent some distributed component creation does happen in software. Like in one of my earlier projects different teams created different 'parts' - PeopleSoft, Portal, Nextance, Elance, WLI components. Or the separate Model, View, Controller created by separate teams in MVC architecture and 'assembled' together in CVS. Or development using any design pattern that can reduce coupling like Business Delegate

But the assembling is not automated and it is not looked at as a time saver. About assembly lines i think they don't increase the speed of producing a single unit, but only increases rate when there are a stream of units to be produced. Since only one unit needs to be produced in software, and duplication is easy, assembly line production does not apply.

There are also, some disadvantages of assembly line/industrial production approach. It can be inhuman and tends to treat workers as machines. What if somebody is bored by doing the same thing & wants to do some other part of the work. Imagine the job of a person at assembly line is to fix three screws in a car door. Day in and day out. Agile methodology in software comes to the rescue here. One can pick up tasks that one wants to do at the start of development. If later, a person feels like doing someone elses tasks he can do it, as the flexibility is built into Agile because of the short daily meetings.

So to conclude, i am glad that software is developed and not produced!

No comments:

Post a Comment