{'fraction_non_alphanumeric': 0.016370106761565837, 'fraction_numerical': 0.0, 'mean_word_length': 5.113043478260869, '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}}
The complexity gap

The Complexity Gap defines a new way to think about software development. We have all heard that developers need to be more productive and to work harder. But what does this mean exactly? The Complexity Gap defines a structure in which to explore concepts of process and productivity and to show how these concepts relate to conventional software development issues of tools and training.Software development is complex. This paper expands on the principles of the Chaos model that suggest that the top-level user requirements and bottom-level hacking are connected through many intermediate levels, and that every level of software development affects quality and productivity to the same degree. In The Chaos Model and the Chaos Life Cycle, I make these points.To clarify the possibilities and limitations of software development, I compare software development to assembly-line work. In the software engineering community, we compare software development to assembly lines for a variety of reasons. Some managers want to acquire the same sense of control over software development as factory managers have over assembly lines. Other managers want to apply assembly-line techniques, such as Statistical Quality Control, to software development. I use both the definition of the Complexity Gap and the assembly-line analogy to suggest ways to improve the software development process.