Design in software development is viewed, from a constructivist epistemological perspective, as an insight building process linking the worlds of application, of methods, and technology. Design unfolds as a web of distinctions and decisions constructing at the same time the problem and a fitting solution. Design is evaluated based on the coherence of the decisions taken and their viability. Closure and self-organization arise from the feedback of evaluation on design, leading to revisions and further distinctions and decisions. Software design is specific in that it starts from operational form in different areas of human practice and provides auto-operational form to be re-embedded in human practice. Dialogical design seeks deeper insights by taking account of and crossing different perspectives. The consequences of this view on software development methods are briefly discussed.