In this paper we analyze the socio-technical activity called software development by focusing on the social perspective. We do so to pursue two questions: What can we learn about software development by focusing on its social aspects and what insight does a social perspective give us regarding the production methods, techniques and tools uses in software development? From the social perspective, this analysis suggests three models of software teams. For each of these we outline, compare, and comment on issues with the way the task, methods and tools are conceptualized. We include a brief discussion of hybrid models such as those used at Microsoft and other packaged software vendors.