I am a contractor in a software development project that is a bit of a nightmare and suffering from Scope Creep.
Background:
I took on a project to develop a web application for a client. I was to work with developer, an employee of the client, who I thought was an experienced developer but turned out to only have very limited knowledge of web development. The verbal agreement was that the other developer would do all the front-end (HTML,CSS,JavaScript).
My mistakes include (but are not limited to);
- agreeing to an accelerated project timeline (I said 12 weeks but they got me down to 4 weeks),
- fixed project price, thinking the other developer could do their part
- agreeing to a project without making them clearly outline all their needs (animations, webgl integrations, etc).
It's now been 6 weeks and I have implemented the features outlined in the contract (5 templates, audio feature, custom posts, custom field integration).
The Problems:
- The client keeps adding on more requests. He considers them expansions/alterations of the features I agreed to do in the contract but in fact, these changes are significant time consuming changes.
- The developer introduces bugs.
- The developer is meant to maintain the project after my exit but doesn't have the skills or experience to even deploy it.
- I have tried to train him on deployment. He currently has a problem where he cannot compile the project in production mode, but it works fine for me on 2 different computers and OS's. He can't fix it and so both he and the client think it's my project setup.
What I want to do:
At this point I want to leave them with the project as is. It's not nice but I believe I have implemented the features outlined in the contract. I invoiced the client in 2 installments, 50% after 2 weeks (which has been paid) and another 50% 3 weeks after that (not yet paid). I am willing to forgo the second installment, and hopefully that keeps legal action away even though my reputation might take a hit.
What actions do I have available to me? Should I or am I obliged to fix the junior developer's issue? If the junior can't fix it, the client can't maintain/deploy the project.
Should I say no to performing tech support for the developer? Should I agree to do some of the changes the client wants? Should I say no to all of them?