software contract work