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