I am developing a complex wizard driven document creation application. I understand the initial domain’s requirement and thus can create an explicit database model for this using explicit column names. Also I am a slight novice with MVC. I know that I will need to make the application more generic ie the Wizard will change, different attributes will need to be stored. My current view/instinct is to implement what is known at present using the most traditional techniques that the tools MVC/EF most closely support then refactor to support the more generic functionality at a later date using technologies such as XML features in SQL Server and WF Foundation etc. Doing all this now seems a big step.
So my question is about the virtue of keeping it simple to start with then refactor in the more sophisticated features later on, rather than building it generic to start with.
Thoughts and wisdom great appreciated.
Thanks.
I FEEL like in this situation (read OP comments), if you go for a simple “demo” version of your wizard with more hardcoded stuff then you will want in the end, you’ll end up scrapping the demo instead of refactoring it. HOWEVER, I’m not saying it’s a bad way to go.
From my point of view, theres 2 ways to aproach the developpement process of such an application.
The first one is doing a quick sketch version of the application as mentionned above. Doing so will make you realize the pros and cons of going in one or another direction, will make you realize things that has to be built one way rather then the other and all that kind of stuff. This is the “code monkey” method. Just type the damn code!
The second one is going into more of a UML route and doing diagrams of exactly what you want. However, without much experience in UML designing, this may end up as a huge waste of time since you will go on and make your application, thinking you going everything figured out, then get to writting the code and realize there is stuff you didnt account for. This path should be the best route to go but a lack of experience doing this might cost you time and money.