Software engineering is still in the dark ages and no-one seems to be capable of fully understanding the problem anytime soon. I’ve worked for a number of companies and none of them seem to be able to accurately measure the time required for a project to be completed or fully scope the level of work required from a customer. Why? This seems like an age old question and yet no-one has a fully realised solution, UML came close an answer and stopped well short of completing what it originally set out to do. Where does an answer lie and why is it that so many companies are unable to realise the full project life cycle to customers expectations? Everyone in the industry seems to be uniquely aware of the following process…
- Requirements specification
- Design
- Construction (aka: implementation or coding)
- Integration
- Testing and debugging (aka: verification)
- Installation
- Maintenance
they can even recite the process without reference and know the name of it, are software engineers really just monkey’s that can code but can’t design, I suppose a better question is does anyone really know how to design and why is it never ‘really’ completed? I’m being rather harsh in some of these statements. However I’ve worked for some large engineering firms and none seem to understand the true meaning of design, most managers in engineering firms seem to think the only constructive work is coding and not design. Even larger companies with CMM accreditation’s don’t do the full design of new components in aid for it to be completed quickly and on time (This I know for a fact).
If the same methodology that is used in software was applied to a real engineering field people would start dying, civil engineers don’t have the luxury of skipping parts of design, imagine a skyscraper without designed foundations. It would need to be re-architected once people realised the foundations built by the labourers (no offence intended here) because of no design couldn’t hold the weight of the building. In electrical engineering if the right transformer isn’t used for trains then again people would die, why then do software engineering managers persist in not allowing their staff to fully complete designs of their software.
It would not only save time and money it would allow ’software engineers’ to create extensible designs, the fault here doesn’t just lye with the managers we (myself included) have a disgust for design in a lot of cases its seen as the ‘boring’ aspect of the work. Also the more ‘geeky’ the engineer then the less likely they will want to design a product and just start coding immediately, this is true right throughout the industry. A lot of the time we just look at the size of some of these projects and cringe at the design aspect because of the sheer size of the project and customer requirements, software engineering as we should loosely call it is still in its infancy and has a long way to go before we can really say its a field of ‘engineering’.
No comments:
Post a Comment