  Context: Start-up companies have become an important supplier of innovation
and software-intensive products. The flexibility and reactiveness of start-ups
enables fast development and launch of innovative products. However, a majority
of software start-up companies fail before achieving any success. Among other
factors, poor software engineering could be a significant contributor to the
challenges experienced by start-ups. However, the state-of-practice of software
engineering in start-ups, as well as the utilization of state-of-the-art is
largely an unexplored area. Objective: In this study we investigate how
software engineering is applied in start-up context with a focus to identify
key knowledge areas and opportunities for further research. Method: We perform
a multi-vocal exploratory study of 88 start-up experience reports. We develop a
custom taxonomy to categorize the reported software engineering practices and
their interrelation with business aspects, and apply qualitative data analysis
to explore influences and dependencies between the knowledge areas. Results: We
identify the most frequently reported software engineering (requirements
engineering, software design and quality) and business aspect (vision and
strategy development) knowledge areas, and illustrate their relationships. We
also present a summary of how relevant software engineering knowledge areas are
implemented in start-ups and identify potentially useful practices for adoption
in start-ups. Conclusions: The results enable a more focused research on
engineering practices in start-ups. We conclude that most engineering
challenges in start-ups stem from inadequacies in requirements engineering.
Many promising practices to address specific engineering challenges exists,
however more research on adaptation of established practices, and validation of
new start-up specific practices is needed.
