Android Application Status
The Short Update
The Freedcamp team and I would like to thank you for your patience regarding the release of the new Android application. We have been working extremely diligently in order to provide you with a high quality application, one that supports all of your organizational needs. Unfortunately, during the process we experienced some unforeseen difficulties with overseas developers, who produced low quality code that did not live up to the kind of work we at Freedcamp strive to put out. Due to this, the release has been delayed and we expect to have it fully up and running by September 18th.
I would also like to apologize on behalf of Freedcamp, to all of our amazing users who have supported us through this journey. We are working day and night to get this application into your hands and can’t wait to hear what you think.
If you are interested in helping us test out the Alpha/Beta versions, please add a comment in this article.
The Longer Detailed Explanation
Current state of hiring engineers
We live in a very interesting time for the world of software development. There are countless jobs available every single day, the demand is astonishing. This demand has caused a lot of people to pursue a career in engineering. From the standpoint of a company who needs to hire a software developer or software development firm things have become very complicated.
- To find a permanent software engineer it requires many interviews with under qualified people who lied on their resume, and the ones who move onto a trial phase often over promise and under deliver
- A common occurrence is engineers who either lack experience or the drive to write quality code
- Most engineers have a “it’s good enough” mentality, providing code with many bugs and flaws, and when faced with feedback on their code they become upset and potentially quit
- Simple concepts like adding comments in your code, testing your code to make sure common use-cases work, providing error handling in case something does not work, and more are thing of the past it seems
- After vetting large numbers of engineers, and paying a lot of money in the process, you get lucky to find one good engineer
- Hiring a software development firm to handle something like building an iOS application saves you the headache of finding the talent yourself, however it appears most of these firms are not responsive in handling issues or making sure their engineers code is of high quality
- Even after you hire someone who seemed to be of higher caliber, you have to micromanage their code because eventually they get lazy and without realizing it you end up with poor code which is not production ready
Details of what we’ve faced so far
So here is what has happened with our iOS and Android applications so far:
- We hired a development firm who promised to deliver an iOS application for a given $ price
- They built something which appeared to work like designed
- After simple testing many bugs were revealed, and additional $ was required to resolve those
- Once we launched the application live it turned out it was built to work on a single thread… or in layman terms it could not handle a simple task list with more than 100 tasks because the UI would just stop responding
- We hired an engineer to rewrite this, he made some improvements, then promised he has almost entirely rebuilt the way tasks are fetched from the server and will work flawlessly, after paying him a large sum of $ he literally disappeared without a trace with no new code
- So we’re left with a decent application, that works great unless you manage large quantities of items
On the Android side
We did some research and decided to use React Native as a way to build the Android app and eventually also release a new iOS app. It was a great decision, however finding a React Native engineer turned out to be a very difficult task.
- We hired an engineer who had good experience to build the application
- He released a final version to us which had a lot of bugs, and some major UX flaws
- After we asked him to fix the issues he stated he is moving onto another company to work on their product
- We hired a new person who helped resolve these issues, however with each new version that fixed old issues he introduced new issues
- Even though everything worked, almost everything in the system took considerable time, for example adding a Task could take up to 15 seconds, editing a task as well, loading 400 tasks could either crash your phone or take 45 seconds
- It was time to get involved and understand what is happening, so we took some time and started learning React Native ourselves and dug into the code
- We realized that a simple page, like showing the tasks for a given project, involved 900 lines of code, 12 different methods, and 7 files
- It also fetched all 500 tasks and rendered them on the screen… instead of just loading 100 and only loading more as you scroll down the page
- In 14 hours of coding we managed to reduce the lines of code to 500 (from 900) and the number of files used to 3, we believed it may be salvageable to do this with the remainder of the system
- Unfortunately as we got deeper we found way too much technical debt which would require significant time to resolve (maybe 3 weeks), and that it was built in a way that launching iOS would require even more work (2 weeks)
- We were left with only one option, after 6 months of development by two React Native engineers, we would have to rewrite the entire application in React Native from scratch in a week to be able to release by September
Current status
- After spending the first week building the new application and learning React Native, it was like a mini hackathon because we spend 3 days out of the week working 24-26hours straight totaling almost 110 hours in 1 week
- Found out that React Native is very new technology and documentation and examples are very limited, if you are building a simple app it’s effortless, but when you get into a system like ours with Groups -> Projects -> Task Lists -> Tasks -> Comments it becomes extremely difficult to find any help ( we will be releasing a lot of the things we learned and the code examples to help future builders )
- Learned the hard way that upgrading react once you’ve built a large portion of your application takes one 12 hour day, and it’s inevitable as you need the speed improvements the newer versions provide
- After 2 weeks of development and about 200 hours we have a great Alpha version which
- works on iOS and Android
- is lightening fast no matter the number of tasks or what action you are taking
- has no technical debt so adding new features that you will require in the future will be rather straight forward and allow us to release updates often
- uses latest react and cutting edge technologies to make the speed lightning fast
- We are hoping by the end of this week to have a beta and an official release in both App Stores by the end of next week September 16th, our goal is to release on September 18th