{'fraction_non_alphanumeric': 0.013785790031813362, 'fraction_numerical': 0.0, 'mean_word_length': 5.012738853503185, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Is designing software different from designing other things

This paper explores the question of whether designing software is different from designing other things (we believe it is). We discuss several key distinctions that are largely missing from the discourse on software design yet which are vital to the success of software designs. These distinctions are increasingly important as software becomes prevalent in the design tools and products of other engineering disciplines. By considering what is similar and what is different we help reveal how the lessons of software design may help other disciplines, and vice versa. This in turn illuminates a core meta-question of how educators in academia and industry can help evolve our understanding of what we do so that we can be more effective at software design. But first, we need to understand what is different, and what is not different, about this discipline called software design.