architect-handbook

Software Architect Handbook

View on GitHub

Software Engineering Vs Programming

Software Engineering focuses on software that will live indefinitely.

Software Engineering & Programming represent two different problem domains with distinct constraints, values, and best practices. The value in pointing out this difference comes from recognizing that some tools are great in one domain but not in the other.

You probably don’t need to rely on integration tests and Continuous Deployment practices for a project that will last only a few days. Similarly, all long-term concerns about semantic versioning and dependency management in software engineering projects don’t really apply for short-term programming projects: use whatever is available to solve the task at hand.

Much of that difference stems from the management of code over time, the impact of time on scale, and decision making in the face of those ideas. Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to makethat code useful for as long as it needs to be used and allowing collaboration across a team.