I work for a large e-commerce company. We routinely find ourselves, despite our best intentions in the following situation:
1. We have an incomplete schema for our API, it's mostly stable but some changes will happen.
2. We know most of the front-end interactions we want, but more will be discovered and some might be changed.
3. Despite 1 and 2, we want to begin front-end development right away (in Angular or Backbone).
We can't be the first team to have encountered this pattern of software development. Are there technical solutions you've seen/implemented/read about to solve these issues? I'm talking more along the lines of app architectures, gang of four patterns or scripts/tasks etc.
I realize this is an open ended question, but while we pursue process and social solutions (more communication, earlier stakeholder engagement etc), are we missing out on technical solutions as well?
I think that beginning of the development is pretty easy task. Maintaining and modifying existing codebase it’s hard. If project is starting and codebase is small you can rewrite whole project from scratch in few days. But when project grows it is wiser to refactor than rewriting. But if you want to refactor your project has to be maintainable.
We know most of the front-end interactions we want, but more will be discovered and some might be changed.
You can make quick prototypes before you begin serious coding. Start new branch in your repository and don’t try to write some beautiful code. Just hack and tweak features. Mock some features if you need it. I think that prototype phase / sandbox phase is often necessary to gain technical knowledge and gather business requirements, to decide which features are useful and which are not (off course you may need to consult these decisions with your stakeholders, your client, etc. But having working prototype makes this easier than operate on *.psd based designs and unclear guidelines).
And after prototype phase you can delete your sandbox branch and start some serious coding for production.