Of course, Software engineering is defined as:
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches.
This term was created in 1968 in the hope of bringing a more "civilized" way of coding. What is interesting however, is that most of the time, people and companies won't make a difference between the developer and the engineer.
A Software Developer is defined as :
A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project managing including some aspects of software product management. [...]
Other names which are often used in the same close context are software analyst and software engineer.
If we stick to the definition, we can say that a software engineer developer, operate and maintain software and that he will study what he did to make sure it's the best in the industry. As for the "systematic, disciplined, quantifiable", it's perfectly understandable that a software engineer should always do his best and follow standards.
What about the software developer? If we stick to the definition, a software developer design, code, manage, test and participate in the release of his software. Honestly, it's basically what I do everyday. I'm not given a class diagram and said "code this". I receive a requirement and I have to ensure that it will go in the application. I have to answer those following question:
- Can it be done?
- When will it be done?
- Will it impact something else that you have to do?
No body ask me "How will you implement it?". I have the responsibility to design, organize, implement and test my code. Of course I can go cowboy and go straight for the implementation.
But it's not because I'm a software developer. Software developers is just a title. It's not because some cowboy coders put all the Data Access Logic inside the view that all software developers are a useless bunch of monkey coder.
I've signed the software craftsmanship manifesto because I value the work that I do. I've signed it because quality is important, maybe not at the moment but it will eventually. I've signed it because I believe in good software.
What do you think? Is there such a gap between software developers and software engineers?