First time Flutter

So we couldn’t travel around Japan as much as we would have liked, but I managed to channel that energy to finishing my second mobile application. This time the app is a learning and dictionary resource for users who are interested in learning business Chinese and was built with the Flutter framework. It is called QUIKA and it took about 9 months for this baby to go from concept to full launch, a journey which started around the end of September 2020. I’m writing this to journal the steps (and struggles) that were undertaken for this app-making journey, with a little technical background at the beginning.

Flutter is a framework meant to help developers build mobile applications on Android and iOS in one single code block. Traditionally, you would have needed to code in either Kotlin or Java for Android AND have a separate code in Swift for iOS. Thus, even though I didn’t have any experience in Flutter, I was willing to learn the language in order to make the app on both platforms. Also, I had no choice. Our project team only had 3 people, 2 of whom were working full time jobs and had more than their fair share of personal commitments to deal with. They also had never built an app before. That left me to squeeze out what little expertise I had with programming and try to set this thing up.

Initial design for splash screen, category selection and flashcards

Learn by doing. This is probably the best phrase to sum up the entire journey. From the initial set up to the eventual launch, 95% of tasks were something that I’d never done before. Github, StackOverflow and Youtube will have a permanent dock on my Google Chrome browser. Additionally, because I was the main programmer, I had to solve most of the programming problems on my own. I couldn’t say “eh, I don’t know how to do this, can you do it?”. There was no one else. This meant that if I could not find an off-the-shelf solution, I had to homebrew my code and I can tell you, a lot of it is homebrewed.

Enjoy the process. You won’t see the end product or results when you are in the thick of it, but you will know when you are making progress (or not). There were times when I had to get off the terminal and go do some exercise because the solutions were just not coming. I would say that that is actually the best thing to do. You aren’t doing a timed exam nor being assessed daily. And when I did get something solved, or my code didn’t throw errors when running, you feel like a baker who had successfully baked a technically challenging but incredibly delicious cake (Many things can go wrong with cake. I know because my wife bakes).

We took twice the time we planned for. Since our app helps users to learn Chinese, we initially wanted to push it out for testing during Lunar New Year. That plan was slowly pushed to March, then April. Then once we got some feedback, we deliberated long and hard over what we had to do to get the best app we could possibly make. Even now, we are convinced that it can be better. It can always be better. But perfection is the enemy of progress, so rather than overthinking the tweaks and smoothen every aspect of the UI, we decided to launch it and test the waters. The app was launched on the Android Playstore on 9 June 2021, and on the Apple App Store the following day, 3 months later than when we set out to launch.

Old Quiz UI and list customizations that eventually did not make it into the final design

You are not a software engineer, until you are. I don’t have any formal certification in computer programming or software engineering. I doubt that I’m using best practices in a lot of the code that I write (I’m probably not). Nevertheless, I finished a working app; one that is tested on the iPhone and Android phones; one that runs smoothly with no crashes and has 1 or 2 minor bugs. I’m also working on developing my own computer game and other programming endeavors, coded in a different language and entirely different setups. I think you have to do it once to know if you can do it and if you like it. For me it is both.

Most problems are solvable. It’s not to say they were simple. In fact some were really tough. Like when we had to trawl the internet to find 1000 example sentences in Chinese. For that I learnt how to use Beautiful Soup and Selenium. Other problems were very annoying. I knew for these problems, they were due to poor documentation or just systemic/historical issues with some of the frameworks. The process of launching on iOS was particularly cumbersome. Not only is Apple more expensive to publish on, I ran into so many issues which led to much swearing (like when they rejected my app icon because it had an alpha channel…). Despite these issues, we managed to come out the other side with more experience and knowledge than when we first started.

Document your process. Besides commenting your code (which is sacrosanct), you MUST MUST MUST record all your troubleshooting history, especially those that don’t involve code. They can be things like how to resolve merge conflicts in Git, or how to solve issues with Swift reading Dart code (these were the closest I came to physically fighting the laptop). One might ask which processes are worth recording amidst the vast number of problems you solve. The simple answer would be that 1. the solution took a ridiculous amount of time and effort only for the actual process to take minutes; and 2. its something specific that you don’t come across often so you will forget. Perhaps you may even be able to help someone in the future.

As a final note, there is one last item on the list, which is to get feedback on real world users. This app isn’t for me after all. I would like to know if people find this useful, or if there are features that they would like which will be of use to them. My goal is to scale the value and usefulness of software to a bigger and bigger group of society. The first was a personal grocery list app, now it’s a business Chinese resource app, next it would be a game. Beyond that, I’m not sure.

If you want to try the app, search “Quika” on either the Android or Apple app stores. The app icon is the one on the top of this post. You can also find us on https://www.linkedin.com/company/quika-app.

Launched v1.0