Just over a year ago I decided that I was going to take on the final frontier of application development: mobile apps. The reasoning was simple: for some time now, more than half of the devices accessing the Internet were mobile. That meant a growing market for those services. And developing mobile apps paid well apparently. But that also meant that building mobile apps must also be somewhat difficult or it wouldn’t cost so much.
So I started doing my research. Fairly quickly I narrowed my search down to three platforms: React Native (supported by Facebook), Flutter (supported by Google) and Ionic (published by the Ionic company). I reviewed what people said online about all three. Ionic was initially quite impressive. I had done a lot of website development using Twitter Bootstrap for responsive websites. Ionic had a similar structure for it so I didn’t have to learn a few concept for that. However, the deeper I got into Ionic, the less impressed I became. If I read it right, Ionic was a language that was trans-compiled into Typescript, which in turn was then trans-compiled into Javascript. That level of layering made me very uneasy. Then, to top it off, I finally found out that in order to do any real development, you needed to purchase a developers license at $500 per seat per month. Not a chance I’m investing that.
So after going through Ionic, I settled on Flutter over React Native. Overall, Flutter looked better. It’s a write-once, deploy-everywhere product. Like Ionic, it also uses a responsive grid similar to Twitter Bootstrap. In fact, in many ways it reminds me of designing for the web using Bootstrap. Flutter itself is basically a series of “widgets” written in the object-oriented Dart language. So – as of this writing – I am in the process of going through some tutorials on what Flutter can do and how it does it.
Much of this is new ground for me. In the past I’ve written some small Javascript code to support specific functions of web pages. I’ve often wondered what it would be like to create web pages entirely in Javascript. They could be entirely dynamic and possibly quite sophisticated. From here it looks like Flutter offers the equivalent user experience just in another language specifically tailored for mobile apps. After all, the mobile app screen is just like a web browser stuffed into a phone.
Some final thoughts regarding software development. First of all, over the span of my career, I’ve learned many, many programming languages in order to deliver applications. The range stretches from assembly language to PHP and a wide variety in-between. In all that time, I’ve always built applications “by hand.” That is to say, no frameworks or IDEs were used. Why? Efficiency and control. I can proudly declare that whatever product I’ve delivered has been bug-free the vast majority of the time. And if there are any bugs, I have a programming style that makes it easy to fine and correct bugs.
Flutter, on the other hand, is a new adventure. The environment comes with an IDE built on Visual Studio. VS does a lot of nice things. So I’m going to stick with that. And I can easily live with the code formatting rules it applies. After all, as much as I like coding (and I really do), it’s time to step aside and bring in others if my latest venture takes off.
Which brings me to my other thought. That’s the cross over line between life experience and coding experience. I’ve been programming business applications for nearly fifty years. That’s a lot of knowledge and background that can be used to see troubles from very far away. However, there’s no substitute for the enthusiasm of a young engineer who has really studied their stuff. That energy I now find tough to match. But I still love doing what I do so I still look forward to this adventure.