"Software engineering – what an oxymoron!" and "Let's bury the term software engineering!" are rants that I recently found on blogs. Even today, many people consider that developing software-intensive systems must be more a creative activity – akin to an art or a craft – than an engineering activity in the traditional sense of applying science and discipline for developing useful products or creating value. They argue that putting the "engineering" into software engineering would kill the creative, fluid, dynamic nature of software development, stifle it, sink it under bureaucracy and restraints.

I disagree. Software engineering suffers from several misconceptions. First, it is often confused with programming, or code development – probably due to abuse of the term and job title "software engineer." Well, while programming and all things close to the program do play a part in software engineering, we could almost argue that software engineering encompasses everything but programming. You're a programmer, a software developer, good! Now you can start learning software engineering and all the concepts, skills, and techniques that are necessary to make great software products, not just nice piles of code, including the techniques and tools to avoid developing code. Second, software engineering suffers from the constant use of analogies to and attempts to pigeonhole it into civil or mechanical engineering. No, it does not require using processes, lifecycles, tools and techniques ...

Get Software Engineering: Principles and Practice now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.