Becoming more flexible with less effort
One of the holy grails of being a great developer, at least to me, is finding a way to deliver quickly while also being prepared for future changes, without requiring a significant upfront time investment.
It's about striking the elusive balance between writing flexible code that doesn't complicate the codebase. There is an interesting tension here because if we want to deliver more flexible components, we often have to either make it support a lot of cases or make it more generic.
But, if nobody needs this flexibility, then it’s a waste of time and effort to do this work upfront. So what I like to do is find ways to be more flexible with little to no investment. It requires some rethinking of how we deliver things.
Besides finding all this knowledge in extreme detail in the Mobile System Design book, I wanted to share a few articles that recently came out, in which you can already learn how, on a more bite-sized level.
In ‘What if your feature was a Command Line Tool?’ you can read about becoming more agile by removing the UI from your development. It’s a simple concept, yet something that most developers don’t do. As mobile developers, it’s easy to fall into a UI-first trap. But there is power in making your apps work without UI.
By being more mindful, you can deliver features that are easier to move around in your app. Read more about that in ‘The power of self-sufficient features’.
Last, read: ‘Deliver reusable components without making them reusable’. In it, you can learn how to create reusable components without explicitly designing to make them reusable. Isn’t it nice to spend zero effort to get reusability for free? It’s probably my favorite article of the three.
If you’re interested to learn more about this in detail, consider grabbing a copy of the Mobile System Design book.
You can also find me on Twitter/X and Mastodon at @tjeerdintveen.