  Context: Software start-ups are emerging as suppliers of innovation and
software-intensive products. However, traditional software engineering
practices are not evaluated in the context, nor adopted to goals and challenges
of start-ups. As a result, there is insufficient support for software
engineering in the start-up context. Objective: We aim to collect data related
to engineering goals, challenges, and practices in start-up companies to
ascertain trends and patterns characterizing engineering work in start-ups.
Such data allows researchers to understand better how goals and challenges are
related to practices. This understanding can then inform future studies aimed
at designing solutions addressing those goals and challenges. Besides, these
trends and patterns can be useful for practitioners to make more informed
decisions in their engineering practice. Method: We use a case survey method to
gather first-hand, in-depth experiences from a large sample of software
start-ups. We use open coding and cross-case analysis to describe and identify
patterns, and corroborate the findings with statistical analysis. Results: We
analyze 84 start-up cases and identify 16 goals, 9 challenges, and 16
engineering practices that are common among start-ups. We have mapped these
goals, challenges, and practices to start-up life-cycle stages (inception,
stabilization, growth, and maturity). Thus, creating the progression model
guiding software engineering efforts in start-ups. Conclusions: We conclude
that start-ups to a large extent face the same challenges and use the same
practices as established companies. However, the primary software engineering
challenge in start-ups is to evolve multiple process areas at once, with a
little margin for serious errors.
