“Software projects are never straight-line events -- they require ongoing collaboration between client and developer.”