Modularization and reuse of modules, through some form of dependency management, are a central part of every larger software project. While most projects have well-defined modularity when they start off, they often end up in a chaotic setup – also referred to as “dependency hell” – after a few years of development. And all too often, there is no ambition to get out of that again until a project reaches an almost unmaintainable state. Not investing in this area earlier is usually a bad business decision. Issues in the modularity setup of a project have a negative impact on developer productivity in many ways that not only make the daily work of developers inefficient but also worsen the problems over time.
In this session, we look at how these problems arise, the influence they have on developer productivity, and why they are so often invisible or ignored. In particular, we identify “accidental complexities” and separate them from “essential complexities” in this area. We then explore which tooling helps us to avoid the accidental complexities and deal with the essential complexities in a sustainable way. Based on this, we share ideas for future developer productivity tools and features that could be added to existing build and DPE tools like Gradle or Develocity.
What we discuss in this session is based on experiences gained through helping multiple large Java projects get back to a maintainable modularity setup. Although we use Java, Gradle, and Develocity in examples, the concepts presented can be transferred to other languages and tools.
Trainer and Consultant for Build Automation @ OnePiece.Software
Watch the video
Jendrik has been doing software development for 20 years. He has an interest in tooling that makes development more efficient and productive. For several years, he was part of the core development team of Gradle Build Tool. Nowadays, he supports teams to increase their productivity and improve the maintainability of their software products using Gradle.