In reality software designer and developer roles are always combined. Even in larger environments where architects have separate role, the designer and developer role is joined.
The designer role (when being also implicitly developer) works with existing abstractions based on the following simple diagram:
However when new people join the project as developers, they often indeed are developers for the short while before they grasp the design style of the project. It helps to understand that there are two different roles as it helps to understand the time it takes for new people to adapt into the team’s or project’s way of doing.
Software designer role is in action when the implementation-side design is done. For example web-service layer service operation definitions belong to the software designer. Of course if specifications given elsewhere state these explicitly, the designer simply follows the specifications.
When working with ADM the software designer is the one who fills in the design level information in schema-constrained XML. Designer therefore is in control how the software aligns as the automation-generators realize their part of the process based on the design level information.
Software developer role is in action when the actual implementation is done. Developers write the code that actually performs the tasks. Developers are supposed to follow the agreed software design rules to keep their code aligned with the rest of the code base.
When working with ADM the developer is the one who writes the free form code to complete the functionality. Automation-generators can only take the design down to the last level of implementation, but the developer is needed to code the final implementation that the generated code is referring to.