Software Development in Startup Companies

Context: Software startups are newly created companies with no operating history and are extremely fast in producing cutting-edge technologies. These companies develop software un- der highly uncertain conditions, tackling fast growing markets with severe lack of resources. Startups present an unique combination of characteristics which pose several challenges to the software development activities, creating interesting problems for software engineers. However, despite the increasing economical importance and the high failure rate, there are only a few sci- entific studies attempting to address software engineering (SE) issues, especially for early-stages startups. In a context where a wrong decision can easily lead the entire business to failure, the support of SE can contribute to foster performances of startups and making a big impact on a large number of companies. Objective: In view of a lack of primary studies, the first step to attending the software development strategies with scientific and engineering approaches is by an understanding of the startups’ behavior. For this reason this research aims to understand how software development strategies are engineered by practitioners, in the period of time that goes from idea conception to the first open beta release of the software product. Methods: This research combines a systematic review of the state-of-the-art with a cross- sectional case study conducted in 13 web startups recently founded and distributed in di↵erent geographic areas and market sectors. A grounded theory approach guided the execution of a sys- tematic mapping study, integrated with semi-structured interviews and follow-up questionnaires to explore the state-of-practice. Results: We selected, classified and evaluated 37 relevant studies. The systematic review revealed that the studies which constitute the body of knowledge are generally not rigorously designed and executed, make use of inconsistent terminology, and cover only small samples of startups. Moreover, we extrapolated concepts from the case study to form a theoretical model, explaining the underlying phenomenon of software development in early-stage startups. The model is grounded in the empirical data and its explanatory power was further validated through a systematic procedure. Finally we proposed a multi-faceted evolutionary model to describe the dynamics of the software development after the first product release. Conclusions: The research provided a wide set of evidences fostering the understanding of how software development is structured and executed, from idea conception to the first release. The results revealed the urgent priority of startups of releasing the product as quickly as possi- ble to verify the product/market fit and to adjust the business and product trajectory according to the early collected user feedbacks. Nevertheless, the initial gain obtained in speeding-up the development by low-precision and product-centric engineering activities is counterbalanced by the need of restructuring the product and the workflows before setting o↵ for further grow. In fact, when user requests and company’s size start to increase startups face an initial and temporary drop-down in productivity, creating the need of mitigation strategies to find a sweet spot between being fast enough to enter the market early while controlling the amount of accu- mulated technical debt. The conclusions can be generalized with a good degree of confidence to the majority of early-stage software startups involved in the production of innovative products, especially for web and mobile applications.