Effects of individual characteristics, organizational factors and task characteristics on computer programmer productivity and job satisfaction