If you do so, you gain:
* the rigor of the SDLC
* reusability by other developers
* more flexible deployment
But you lose the ability for a non-programmer to make significant changes. Every change needs to go through the programmer now.
That is fine if the code is worth it, but not every bit of code is.
In my experience, most of the time the problem is in the input and interpretation of the data. Not fixable by a unit test.
If you do so, you gain:
* the rigor of the SDLC
* reusability by other developers
* more flexible deployment
But you lose the ability for a non-programmer to make significant changes. Every change needs to go through the programmer now.
That is fine if the code is worth it, but not every bit of code is.