Where Is the Catch?
A DSL can be awesome, but, of course, there is a catch: designing a DSL is complicated.
If we had the sum up the design problem in one phrase it would be this: you have to solve the communication problem once and for all.
The first step is to understand what experts can and want to do.
Then you need to abstract out the computer science aspects from these elements, so you can give experts a tool that they can use on their own.
For example, imagine you are helping companies manage accounting for international companies. Your Tax DSL needs to have a concept of tax brackets to calculate marginal taxes so that your expert accountants can define the appropriate ones for each country and keep them updated. To allow that, your developers need to implement the code for marginal taxations and tax brackets in a traditional programming language. Once these basic elements are implemented, they are available in the DSL for use by experts.