One of the most common software development tasks for me is the creation of a prototype. Prototypes can be seen as a kind of discardable software, the kind with short life cycle and a heavily restricted set of design goals.
I tend to create a prototype whenever I’ve recognized some part of the software as mission-critical and I’m unsure whether or not I’m able to implement it. Sometimes a prototype is needed as a proof-of-concept to ensure someone else. In any case, prototypes are used as tools to answer a research question.