Considering these as two phases of a project that can be variously related. Q -- Aren't there at least three levels of "design"?: *(1) what one might call end-user goal description and subsequent UI design. *(2) then there is graphic design which is sometimes but not always an extension of UI design *(3) and, defining objects and classes and getting the various areas of code to get along well with each other is another more technical level of what is also often called design or architecture. Q -- Assuming the title refers the broader sense of InteractionDesign vs Programming: *(1) are these two roles best served when the same project team members do both or when the roles are played by different specialized participants? Projects are likely best served when the two roles are played by different individuals because the mind-sets required are drastically different and the transfer of designs to technical implementation is exactly where explicit conversation/debate needs to take place, but such an arrangement requires a sophisticated methodology or it can quickly devolve (for example if the design side simply "reports to" the developers and then "gets out of the way") to the all-in-one-head model (no evil intent just a methodological weakness). Many circumstances that put stress on projects push toward the programmers being responsible for deciding detailed end-user design questions. Not infrequently, projects are undertaken with that set-up, intentionally, from the start. So, while designing and programming might arguably best be done by separate members of a team, it is an uphill battle to find an over-all methodology for team functioning that makes that possible.