The project which I'm working on was over, but I would like to reflect on managing a huge experimental decision made by one developer during development. This is what happened:
A developer strongly felt that something is not right with the current design of the project. Due to insufficient knowledge, he was unable to express out what is wrong. As we have deadlines, we cannot wait, nor work with him on his research as he cannot convince us what's wrong.
To be constructive, he told us to move on while he conducted his research and experimented huge redesigning works on his branch of the SVN. A couple of weeks later, he presented to us a working, hugely redesigned (and refactored) project which he's confident of and explained to us everything. We were convinced.
However, as we were changing and adding features based on the old design, it was as good as we were working on 2 separate projects and SVN merging became impossible due to the large difference. We had 2 options then.
To work on our copy, which we would have to redesign all our features to the new standard as well as identifying all refactored stuffs.
To work on his copy, which we would have to first identify changed features and implement back correctly in his design, followed by the new features.
We chose the first option, as the second option would still have to deal with lots of redesigning due to the changed features using obsolete classes and the likes.
Lots of time was spent, and everything felt like double (or perhaps triple) effort. Though it was worth it (we did meet the deadline through more effort), question is, given the circumstances, is there any methodology we overlooked that could have more properly handled such scenario? Or was what we were doing the correct decision and that this is actually a normal / common thing in development?
Note that he wasn't that confident of what he was doing either, so he had to finish everything that he was doing to see it working and confirmed his research before presenting it to us. Admittedly we were all amateur developers, including him, but he kinda instinctively knew what's wrong, but lack the terminologies and experience / knowledge of case studies to convey properly to us prior to his research. There was a chance his instincts could be totally wrong too.