It doesnt seem to be a consensus in the community regarding the meaning of the words programmer and developer so I feel free to give my opinion on this.
I dont see myself as a programmer. I do program sometimes (right now mostly in Grails, Java, Python and PHP, especially as part of the portal online code generation services ; and yes, you saw it right, a UMLtoPython service is coming!) but most of the time I model the domain and use model-driven development techniques to generate (most of ) the code (of course you could also directly interpret the models but thats another discussion).
Therefore, I dont program but I still develop software. I consider myself a developer, even if “of a different kind”.
The intersection between both roles (Model-driven engineers and programmers) is not empty because at least two important reasons:
- Its not always easy to decide where to draw the line between modeling and programming (which is not a bad thing IMHO), specially when using textual modeling tools . Low-level/detailed modeling (e.g. Executable UML ) and high-level programming clearly overlap (and the model oriented programming language UMPLE is a great example of this)
- With exceptions, MDD requires some manual coding to complete/adapt the generated code so model-driven engineers still need to adopt a programming role at some point. Again, this is not necessarily a bad thing. I have argued before that you should use the right amount of modeling for each project.