Hi Tiago, Thanks!
I agree with you and the solution will be better and better with the feedbacks we have during the process. There will be some assumptions that will be validated during spikes or somewhere in the future. Those can be done by software engineers, software architect or whoever has the time for it. The main goal is to validate the assumptions made during the architecture definition.
The issues with design by committee are
- Time to validate all the possibilities. We all have responsibilities in the company and we may not have the time to prove that something is wrong. That will leave us with opinions and with some of the solutions to validate (which may or may not be the best solutions)
- The solutions that are pondered may be influenced by the individual ambitions. E.g. I may want to learn something about Cassandra, so I may decide to use Cassandra just to have the time to use it. The majority may agree with me even if there is someone with more experience and context that doesn’t.
- It’s time consuming. Trying to have everyone on board is not easy. Some companies do achieve this, but it’s not as simple as it seems.
So, basically, I think there should be someone responsible and with time to help your engineering team to evolve the architecture. In the end, it’s everyone’s job, but we need someone with the time, the patience, the experience and the communication skills to do it. Also, please remember that architecture is not only technical. It’s more about communication and knowing your audience than technical. Presenting a solution to a software engineer is different than presenting it to the board in order to have investment.
But help should always be welcome from those willing to help. :)