Delivering a Large Project in a Small Company is no small feat.
When it comes to software projects, smaller companies typically don't have a lot of resources to work with and are forced to do more with less.
This is true for all aspects of the project's life cycle, from requirements and development to testing and project management. We are currently working on a project to re-write CampWare, our accommodation management application, as a web app.
For better or for worse, we have decided that this project will be a success, and this is how we will get there.
1 - Client involvement (or a good subject matter expert)
You have likely heard this at least a dozen times, but it is so important that it bears repeating. Often, the difference between a successful project and a failed one is having good client involvement throughout the project. Developers need timely responses to questions about business processes, as well as feedback regarding user interface decisions. Without a good subject matter expert to provide guidance, developers are forced to 'guess' what is best for the product, and this almost always leads to trouble down the road. For our project, we are very lucky to have both a very involved subject matter expert as well as a BA that can transform complicated business processes into concrete requirements we can use.
2 - Assembling a good development team
One of the best things going for our project is that each one of us has our own area of expertise. James keeps us all in line with regards to best practices and code clean-ups. Tibor is our subject matter expert in all things Angular. I bring web development experience to the table, Shadi is a pro at creating Angular components, and Justin is a wizard at styling and end-to-end tests. We all teach each other, learn from each other, and play off each other's strengths. That's how any good development team should be built.
3 - Supportive Management
Having a supportive management team leads to more open communication of issues - and there will ALWAYS be issues. When they are properly communicated, management may be able to help, or at least ease the burden. For example, early in the project we struggled with meeting deadlines due to delays involved in learning a new technology. To help us, our managers brought in a technical lead, and that has made a world of difference to the project.
We still have a long road ahead of us, but the product is starting to take shape with each passing milestone. As our technical lead says,
"We are doing ok, as long as nobody quits!"