Lately I’ve had a few discussions about mobile applications technologies. There are many options available, native Swift and Kotlin, and multi-platform React.js, Flutter, and Kotlin Multiplatform. Personally, I am adamant about using the tools and languages that are native to the platform. There are tradeoffs with any choice but for me it comes down to caring and the effects this choice has on the culture and team.
What do I mean by caring? Sure, everyone on any team wants to create a quality app. But for me caring goes far beyond passing requirements. For me, coding is a form of art - like writing a story or poem. It has structure and form. It can be beautiful, clean, and elegant. And I’m not talking about GUI – I’m talking about the code! One of the reasons I love writing Ruby code is that it is easier to reach that goal. Caring about how the code looks and is organized may seem over the top but guess what? It matters. Ruby attracted people who had those same values and it created a wonderful community. I’ve found a similar community in iOS and Swift projects - partly because they are all heavy Apple users – but there is a connection in those groups about creating something that isn’t just beautiful on the outside but is elegant, understandable, and maintainable under the covers too.
Continuing with the art analogy, if an artist is creating a poster to frame and hang on the wall what kind of paper and drawing tools would they use? A torn out large lined sheet of notebook paper and a broken pencil?!? No! They would use a heavy feathered card stock with a fountain pen or quality brushes or markers. They care about the medium and the tools because they care to create something that doesn’t simply pass the requirements.
When we choose to use the lowest common denominator languages and tools to save on “resources” then we shouldn’t expect to build a team that cares deeply about the app. We get out what we put in. The app will be fine but not great. And it will never be an insanely great app.