A week with a client looking into some of their software has had me thinking about complexity. Some older code uses Spring Boot, which was a simplified approach to the complexity of Spring Framework, which itself was a response to the complexity of J2EE. And yet it’s still a giant hulking piece of software to use, and while there may be 100 great features it provides, if we only need 2 of those I think it’s worth remembering that they don’t come free.
Someone once told me that all code is baggage and I wish we remembered this more often. Spring Boot lets you do tasks that may have been complicated otherwise very easily, but it comes with a lot of code AKA baggage, and it will weigh you down. One obvious but painful side effect of using a complex framework is large and inscrutable stacktraces. Developers spend a lot of time looking at stacktraces, and making this task harder is not to be taken lightly!
In a more abstract sense I think as developers we should at all times try to limit complexity. But not just complexity of the code we write - libraries, frameworks, etc all increase complexity of the application as a whole. Writing a hundred more lines (or even a thousand) could easily be worth it if you can avoid tying your application to some larger monster framework.
- In my case I’ve been working on an application that uses Spring Integration, which seems to be a message bus on top of Spring. Methods have inbound and outbound channels, and this dictates the program flow instead of methods just calling other methods. I’m trying to guess at why it was used and my only guess is: it seems cool. But it adds nothing else but complexity!
- Third lesson of kitesurfing and it’s hard to stay patient. I just want to fly the kite around in a good wind, to feel the power of it! Next one will be a private lesson so at least I don’t have to trade off so much.
- I enjoyed https://www.youtube.com/watch?v=rE3j_RHkqJc&fbclid=IwAR3vMzXWVVNQJRYW4YejiSw3OQJYEPDYymiTWxa0tyZCPLUezqkDeaki6W8. Reminds me of Snow Crash. One of the ideas I’ve been coming to terms with over the last year is that allowing people to communicate faster and easier than before can not only have negative effects but is perhaps a net negative overall? I hope Mark Zuckerberg stays up at night thinking about this.