How do you differentiate between design decisions versus implementation decisions ?
To give a specific example: We are developing some web services which will integrate our application with another One of the question I asked was- do we want the integration between the two applications to by asynch or sync ?
Someone suggested that its an implemntation question and not a design.
My plea is- if I change something and you do not need to know what or why I changed- it's implementation decision.
However, if I change something- which changes how you use my services- its a design decision.
If I change my implementation to asynch from synch- I guess it is going to affect how the services are consumed- hence- its a design decision and not implementation
e.g Whether I choose XML for storage or Database- as long as it doesn't affect the other application- it remains an implementation choice rather than design
Do you agree? disagree? thoughts ?
I think you already know the answer, and to be honest it is a bit of an unnecessary semantic distinction for most practical purposes. Having said that, it's design if it impacts the end user / consumer, it's implementation if it doesn't. In your example it will have a profound effect on the design of any client consuming your services, so it is certainly design.
And there is no sequence. You cannot realistically complete design before implementation starts and slavishly following a design which has a high and unnecessary implementation cost is very dangerous. You may choose to redesign half way through implementation given what you have learnt about costs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With