During my 6+ years of developing Software professionally, the difference between Software Engineering and coding/computer programming has been a recurring topic of discussion. Over time, people have preferred not to differentiate to avoid being called classists or gatekeepers. But no matter how desperately we choose not to hurt people's feelings, facts remain facts.
So what's the difference?
The difference between a software engineer and a programmer is the exact difference between a civil engineer and a mason.
A mason might know how to mix concrete, lay one brick on the other, or even build houses, but he lacks the proper knowledge and tools to create large structures that stand the test of time. While a mason can pick up the engineering required to build complex systems after many years of working with Civil Engineers and through diligent studying, these years of experience transform him into a Civil Engineer, he doesn't remain a mason. Conversely, a less observant/passionate mason would remain a mason.
So, what does this have to do with computer programming?
A programmer is a person who knows how to build computer programs, period! He is neither equipped nor required to understand the principles of software engineering.
I call these people hackers. They understand loops, branching, and a few patterns like object-oriented programming. A programmer will only become a software engineer if he dedicates himself to learning engineering by submitting himself to an apprenticeship under a Software Engineer, learning through books or formal education.
On the other hand, a software engineer is a programmer who also knows how to design large-scale Software that can stand the test of time by applying various engineering principles.
In conclusion, all Software Engineers are programmers, but not all programmers are Software Engineers.
Top comments (0)