If 'design' and 'development' are entirely separate it's pretty much impossible because the two sides have different goals. You have to align them. This entire process gets a lot easier when you have one team who understand that their job is to deliver value to the customer (or user) rather than "design pretty things" or "write clever code".
Until everyone gets that message, it can't work.