We are in the process of planning for a rewrite of one of our fundamental applications. It is web based, and we are locked into PHP. However it is not a web 2.0 site. It's closer to an enterprise application.
It's by no means simple. There are at least 2 main interfaces (I think there are 4, but that's another topic). It needs to be both highly configurable and highly customizable. I would expect between 50 and 200 installs per year, so ease of maintenance is a major concern.
So the problem comes in the architecture. I want to do a formal high level architecture first. Before anything else. After that, we would then either pick a suitable framework (one that fits the architecture) or pick one close and use it as a library set. I feel this methodology will guarantee a workable system in the long run (since at least the full architecture is considered)
However, the rest of the team wants to pick a framework (they want to use YII) first and skip the high level architecture completely. Their argument is that the framework did the high level architecture first and let's you "just start coding".
Basically, I think this is like putting the cart before the horse, or building your house with no foundation on top of a mud pit. I know this view is popular in the post-ROR days of rapid application development since more can get done faster. But I really fear that for a mission-critical core application, this is short-sighted at best (and negligent at worst).
I really fear we are going down the wrong path.
Management considers me as a senior developer. So technically I can overrule most of the others. But I am not above them, so in practice doing so would be bad. Mot to mention that there is a major language barrier (they speak Polish, I speak English).
And I think I should mention that I really don't like most RAD PHP frameworks. Not because they are bad by any means, but because they tend to (IMHO) enforce the mentality that architecture is not important since they do it for you. Not to mention that they typically want you to work their way (Rails is famous for that) rather than a way that makes sense for the project at hand. So I typically only use a framework as a set of libraries. Using the classes when they make sense, and building my own when the project requirements dictate so).
So my questions are as follows:
- Am I right in my concern? Or are they right and am I just over-reacting?
- If I am right, is there any advice on how to handle the situation?
- How can I get the team on my side without causing a mutiny?