Many people may believe software development is a very mechanical process, however it is anything but. Many decisions go into structuring, architecting and designing the components of software, and there are very little constraints to how you do it. As a result, often choices must be made on past experience, intuition and a general sense of whether it feels right.

The comparisoncomparisonoften made between engineering disciplines of the physical world and that of computing world. However the one irreconcilable​difference is identified in the definitions alone: software ‘engineering’ is not constrained by physical limitations.