I don't think of it this way. While engineering is certainly required I think of engineering as overhead and the more engineering you have to do is indicative of a problem somewhere else.<p>Take javascript: Javascript is probably the technology with the most engineering overhead in the world. Javascript is so bad that all practitioners of front end engineering have a huge amount of engineering overhead to deal with whether that's through automated testing or manual tests. This all comes down to : Lack of type checking, browser fragmentation. Would you write airplane controller software or airbag deployment software in javascript? No.<p>There would be significantly smaller engineering overhead if someone say wrote a backend application in Go. Needless to say the original author is a javascript/front end dude.<p>>If someone does not understand the problem, they should not be allowed to program a solution for it.<p>You ever done agile? You'd never engineer a bridge using agile. Agile is indicative of lack of understanding of a problem which is typical of 99% of software engineering. We simply do not fully understand business requirements until a product is deployed. So we deploy a project first and iterate and deploy again. Iteration is continuous and indefinite because real understanding of the business "problem" is never complete.