I came across this thread via the CodeProject Daily News. The original forum post reads:
I continually have to check the details of syntax and stuff when programming. Things like print format specifiers, the syntax of things I haven't used for a year or so, and use a calculator to work out bit masks and check my bitwise logic. I can never get it right in my head.
I don't remember details. I don't pride myself on that. I spend my time and energy on the big picture. Designing and understanding complex mechanisms. The architecture. The guts of the machine.
So I think of myself as a software engineer, not a programmer.
How about you lot?
This is a topic I see pop up once in a while... In some instances, even going as far as saying "software engineering isn't real engineering". (Though this isn't a case of that.)
Anyway, for posterity, I'd like to put forth my definition.
A software engineer is an individual that carefully considers and crafts the composition of the software... perhaps even the whole system, whereas a programmer, by contrast, is focused on individual feature(s), routines, functions or classes.
In my observation of real-world scenarios, (various commercial and open source projects) a programmer (by my definition) will achieve a given goal efficiently (both time and lines of code) but without regard to component composition or the relationship of the components among the whole system.
Top comments (1)
It's also worth pointing out that the term "Engineer" is protected in many countries and states. One cannot just call themselves an engineer without the proper licensing and tertiary qualifications.