Inside the Fluent Forever App: Builds, Bugs and Betas
If you’ve ever downloaded an app to your phone, you know that it doesn’t require much time or effort. With a few quick clicks you can add a great new app to your arsenal. But for the app developer, the process is not so quick. Or easy. In fact it’s a constant juggling act of timelines and features, codes and bugs and the amazing ability to test and tweak at the same time!
So how exactly does an app like Fluent Forever make it from idea to app store?
To get the answers I went to the source – John Rush, our trusty CTO. John joined Fluent Forever as a consultant in the fall of 2017 – with no intention of joining the company permanently – and by May of this year he had officially become the Chief Technology Officer! John sees everything in life through the eyes of a programmer (which helps when that’s your job).
From the tiniest details of how an app feels to the larger structural issues, no stone is left unturned. Or bug.
The Fluent Forever app, like other apps, is based on a source code (which is really just a long chain of text commands). The code is stored in a software development system – we use one called Github – where it forms a tree-like structure. Each branch of the tree represents a different feature in the app: language choices, picture clicks, flashcard styles etc.
To those of us using the app, a flashcard might simply be a flashcard. But to John, it is a data structure full of unique properties which must first be determined and then developed. Does the flashcard need to have questions and answers? Underlined words? Flipping capabilities? Does it have the option to be right or wrong? John has spent the last year working alongside software developer Mokriya to answer these types of questions and create the code that will bring them to life.
Each branch is coded separately and simultaneously, which is why, even though we shipped out the official beta version last month, a whole bunch of other features are still in the middle of development!
When the coding for a branch is complete it is merged back into the main trunk. While this is normally a good thing, an unstable branch can wreak havoc on the whole structure! This is just one of the many issues that John and our testers have had to deal with in trying to perfect the Fluent Forever app.
Testing, testing (and more testing!)
Vinny Reddy is our resident Fluent Forever app tester. For every viable version of the app there are dozens which must be reviewed, tested and discarded. While most development work happens through an emulator (virtual software which allows a computer screen to look and act like a phone), the testing itself happens on actual physical devices. Vinny uses a variety of iPhones and four different android devices to test each version of the app. (He also uses a special cloud-based service with other models of phones attached to it.) More devices equals more opportunity to find bugs!
Our Fluent Forever testers use a wide range of tests including Soak Testing (running the app for hours and days), Stress Testing (overloading the number of users or clicking on too many things at once), and Smoke Testing (basically looking for anything that’s on fire – major app crashes, unfinished drop down menus etc.). Vinny’s primary job as a tester is to try and break the app and find the bugs before they can sneak into future versions! When Vinny or one of our Beta users find a bug, the information is sent back to John.
The best bugs are the ones that can easily be recreated. If we can make them happen once, we can find a way to stop them from happening again! Once a bug is reproduced, it is sent back to Mokriya to fix. Unfortunately, sometimes that fix may break something which was previously working. This chain reaction – bugs causing other bugs causing other bugs – can slow up the entire process.
Trying to get a version that is free of bugs – or at least, of known bugs – takes an amazing amount of time and patience!
What happens now?
So now that we have released our beta version, why haven’t we released the official app yet? This is a question we have heard a lot lately. There are a variety of answers to this – sometimes the bugs cause a delay, sometimes the time required to develop or test a feature takes longer than expected. But the simple answer is this: We need to know what we are releasing before we can release it.
As John points out, a developer’s job is to juggle the many priorities of the product. What features are essential to have on the first version of the app and which ones can wait? Is it better to have fewer languages with more features or more languages with less? These are the questions which must be answered as we prepare for our app store release. This is also the reason for our beta testing. Our beta testers are language lovers. They are the future users of our app. They know what they need right now and what they want down the road. And we are counting on their help to answer these questions.
Our goal at Fluent Forever is to put out the best language learning app on the market and to continue to develop it, test it, update it, and support it. And that’s exactly how we plan to spend our time over the next few weeks, months and years. (So that hopefully you can spend your time learning a language!!)
Enjoy what you're reading?
Sign up for more