What's the Difference Between Coding, Programming, and Software Engineering?

Photo by Blake Weyland on Unsplash

So what’s the difference between coding, programming, and software engineering? The three concepts are overlapping to some extent, but you can think of them as a set of Matryoshka dolls where coding is part of programming, and programming is part of software engineering. To make a better distinction, here’s my informal answer in terms of the primary skills involved in each.

Coding: The ability to compose sequences of instructions that computers can follow to perform tasks in a given programming language. The main skill here is writing (and understanding) syntactically correct code based on the rules of the programming language.

Programming: The ability to solve a well defined problem by writing programs that work efficiently. The main skill here is problem solving from a well defined specification.

Software Engineering: The ability to convert a real-world problem into a well defined specification. Software Engineering skills involve organizing people and resources to help customers understand and articulate their real-world problems, so that such problems can be solved with maintainable software on time and within budget. If this sounds tough, it is, but it’s also fun!