I'm in RFP phase working with outsourcing vendors on the 100% rewrite of a fully operational prototype asp.net app that I wrote, to make it commercially viable.
I have an idea for a project design and I'd like some feedback on whether it makes sense. In summary it is to write the JS and the server software in parallel.
Background (which may help in understanding and responding to the question): too many years of IT, kept my "skilled amateur" programming skills, lots of informal project management, lots of work with highly technical people, can drill down to the bare metal, but no "modern" software development team leadership. I have a detailed requirements document, a tasty partial UI/UX design, and the prototype software which again does everything the rewrite should do.
An earlier proposal called for two programmers, 3.5 to 4.5 months, plus a .5 Project Manager.
My plan is to hire a short architecture/design phase, and then lead a three person coding team to do the development, with lots of communication bandwidth.
My goal with the new approach (below) is to do the whole project in 2.5 to 3 months by having three coders instead of two, and keep the cost down by getting it done faster and doing the PM work myself.
The challenge I see (and experienced when I wrote the prototype) is that while the Main Page has dozens of transactions and formats that need to be processed, they boil down to a very small set of JSON formats that have to be sent to/from the server. To get started, I had to write a complete (simple) client / server data cycle, and then add to it, one transaction at a time, going back and forth between writing the client code, then the server code, for each transaction.
The NEW design idea is this:
- In general, plan to move a lot of server code (e.g. prepping and filtering client displays) onto the client
- Then, clearly define the JSON data sets that will cycle between client and server
- Build and write two applications
- A temporary "JS Development" application
- Throw-away CRUD to load JSON tables that are consumed by the client, as if from the server (maybe 10 fields per table, max)
- An minimal server function to send those JSONs to the client in response to AJAX requests
- Write all the JS for the Main Page using this application
- A "C# Server Development" application (which would become the "full" app)
- Throw-away CRUD to load JSON tables that are consumed by the server, as if from the client
- An minimal client function to initiate consumption of those JSONs by the server
- Write the Main Page C# business (controller) and data (model) layers using this application
- Put the two temporary applications together when largely complete.
During the main coding phase, one developer would write the client code, another would write the server code, and a third would work on non-Main Page functions in the "Server" application.
I'm hoping to get some feedback on whether this approach is A) crazy, risky, very difficult to pull off, never been done before, or B) ho-hum, used all the time, what's the big deal.
And, if the approach is feasible at all, what would be some risks and critical success factors to look out for.