Tools Matter : Why Flutter and Firebase for our Occupancy Management Solution
Tools Matter : Why Flutter and Firebase for our Occupancy Management Solution
By Gary Angel
|September 4, 2020
I know that business users don’t care one whit what we developed our Occupancy Mobile Apps with and I get that. But as a programmer by trade and career, I find tools interesting and they do matter, if only indirectly. Users want software that looks great, is easy to operate, performs fast and reliably and is USEFUL.
Tools don’t have much to with USEFUL. Useful is a matter of purpose and design. But when it comes looks, reliability and performance, tools make a distinct difference. The better and more appropriate the toolset, the closer the developer can likely get to optimizing whatever usefulness is there in the design.
The description of programming languages as “languages” is both reasonable and misleading. It’s reasonable because these are languages – they contain a grammar, are expressive and quite literally become a means for a skilled developer to think. But the language metaphor is also misleading. There are undeniable differences between English, German, Japanese and Hindi, but no one would suggest that one is the language of novels and another better for writing essays and a third best for poetry. Human languages are multi-purpose and when it comes to specific applications, there’s very little to choose between them.
Programming languages are, in this respect, quite different. They are much more strongly designed and purpose built – making them more like tools than languages. These days, though, developers tend to work more in environments – complete toolkits where programming language, database, debuggers, editors and quality control tools are all integrated together. So it’s not so much the difference between a hammer and a saw as it is the difference between a set of wood-working tools and a set of metal-working tools.
In deciding on an App-first strategy, we had three major priorities: cross-platform native apps (including Web support), tight real-time database integration, and good cloud adaptability. Those three requirements led us to Flutter – an open-source development environment created by Google.
Flutter is a pretty new tool and aspects of it are bleeding edge. Weirdly, but not unexpectedly, the least baked components tend to be the Web ones. Doing Flutter if Web is your target would just be a mistake – you’re really better off in a host of other development environments. But the Web view does work and works decently. From a mobile-first perspective, Flutter’s web-based development is probably best described as adequate. The native App support, on the other hand, has been excellent. Android is, obviously, a slam dunk. But so far we’ve had pretty good luck with iOS as well. For the most part, native Apps built in Flutter work the way they are supposed to, the development environment is good, and the whole process works quite well.
The nicest aspects of Flutter is the tight integration with Firebase. Firebase is a very efficient, very cost-effective real-time data store. With the integration, things like real-time app updating are just trivial. Flutter has built-in listeners so that connecting to Firebase and updating a data component in real-time is seamless. It’s the easiest path to deploying a real-time User Interface that I’ve ever seen. There’s hardly any work at all.
Firebase is a No-SQL database, so if you’re coming from the relational world its document model takes some getting used (and doesn’t handle every kind of task seamlessly). But it’s powerful, fast and cheap – and you really can’t beat the ease of the realtime integration.
Finally, Firebase comes with excellent cloud-based function capability that makes for cheap, fast build-outs of capabilities like our SMS queuing system. This is becoming an increasingly important part of modern development. Building these types of integration tools can be time-consuming and error prone in many traditional development environments. Modern cloud-focused systems tend to be a lot better.
Overall, we’ve been fairly happy with the choice. We’ve had some pain points on the Web side – particularly in debugging. Getting used to Firebase data models has caused us to go down some wrong paths as well. But the real-time integration is fantastic, the Firebase performance and cost are great, and the learning curve has been more than acceptable.
The proof, of course, is in the pudding. And I think you’ll find our Occupancy Apps a pleasure to use. Take them for a spin!